diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index c9f133b..baa790b 100755 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,976 +1,1083 @@ lockVersion: 2.0.0 id: 3eeea668-4ef4-464e-a888-bdfa023bedf5 management: - docChecksum: addaf2dfdac23cef2e234b64492b9c90 - docVersion: 0.0.3 - speakeasyVersion: 1.615.2 - generationVersion: 2.698.4 - releaseVersion: 0.30.0 - configChecksum: b2bfbb4d0b11fb9a5233c243839e5dbf + docChecksum: 2a6e4c8f6e1fedff5a37da76411f22df + docVersion: 1.1.1 + speakeasyVersion: 1.636.3 + generationVersion: 2.723.11 + releaseVersion: 0.31.0 + configChecksum: 01dd69026456ef3f580bafe6cb723018 repoURL: https://github.com/LukeHagar/plexpy.git repoSubDirectory: . installationURL: https://github.com/LukeHagar/plexpy.git published: true features: python: + acceptHeaders: 3.0.0 additionalDependencies: 1.0.0 + additionalProperties: 1.0.1 constsAndDefaults: 1.0.5 - core: 5.20.4 + core: 5.22.1 + deepObjectParams: 0.1.0 defaultEnabledRetries: 0.2.0 - deprecations: 3.0.2 downloadStreams: 1.0.1 enumUnions: 0.1.0 - enums: 3.1.2 envVarSecurityUsage: 0.3.2 - errors: 3.3.3 - flattening: 3.1.1 + examples: 3.0.2 globalSecurity: 3.0.4 globalSecurityCallbacks: 1.0.0 globalSecurityFlattening: 1.0.0 globalServerURLs: 3.1.1 - methodServerURLs: 3.1.1 + globals: 3.0.0 nameOverrides: 3.0.1 - nullables: 1.0.1 - openEnums: 1.0.1 responseFormat: 1.0.1 retries: 3.0.2 sdkHooks: 1.1.0 - unions: 3.0.4 + unions: 3.1.0 uploadStreams: 1.0.0 generatedFiles: - .gitattributes - .vscode/settings.json - USAGE.md + - docs/models/components/accepts.md + - docs/models/components/advancedsubtitles.md + - docs/models/components/airingstype.md + - docs/models/components/boolint.md + - docs/models/components/channel.md + - docs/models/components/channelmapping.md + - docs/models/components/composite.md + - docs/models/components/compositemedia.md + - docs/models/components/crop.md + - docs/models/components/decision.md + - docs/models/components/default.md + - docs/models/components/defaultdirection.md + - docs/models/components/device.md + - docs/models/components/directory.md + - docs/models/components/dvr.md + - docs/models/components/dvrrequesthandlerslashgetresponses200.md + - docs/models/components/dvrrequesthandlerslashgetresponses200mediacontainer.md + - docs/models/components/dvrrequesthandlerslashgetresponses200mediacontainermediacontainer.md + - docs/models/components/filter_.md + - docs/models/components/filterpivot.md + - docs/models/components/format_.md + - docs/models/components/getresponses200.md + - docs/models/components/getresponses200hub.md + - docs/models/components/getresponses200mediacontainer.md + - docs/models/components/historyallgetresponses200.md + - docs/models/components/historyallgetresponses200mediacontainer.md + - docs/models/components/historyallgetresponses200metadata.md + - docs/models/components/homevisibility.md + - docs/models/components/hub.md + - docs/models/components/image.md + - docs/models/components/imagetype.md + - docs/models/components/items.md + - docs/models/components/librarysection.md + - docs/models/components/librarysectionlocation.md + - docs/models/components/lineup.md + - docs/models/components/lineuptype.md + - docs/models/components/location.md + - docs/models/components/media.md + - docs/models/components/mediacontainer.md + - docs/models/components/mediacontainerwithartwork.md + - docs/models/components/mediacontainerwithartworkmediacontainer.md + - docs/models/components/mediacontainerwithartworkmetadata.md + - docs/models/components/mediacontainerwithartworktype.md + - docs/models/components/mediacontainerwithdecision.md + - docs/models/components/mediacontainerwithdecisiondecision.md + - docs/models/components/mediacontainerwithdecisionlocation.md + - docs/models/components/mediacontainerwithdecisionmedia.md + - docs/models/components/mediacontainerwithdecisionmediacontainer.md + - docs/models/components/mediacontainerwithdecisionmetadata.md + - docs/models/components/mediacontainerwithdecisionpart.md + - docs/models/components/mediacontainerwithdecisionstream.md + - docs/models/components/mediacontainerwithdevice.md + - docs/models/components/mediacontainerwithdevicedevice.md + - docs/models/components/mediacontainerwithdevicemediacontainer.md + - docs/models/components/mediacontainerwithdirectory.md + - docs/models/components/mediacontainerwithdirectorymediacontainer.md + - docs/models/components/mediacontainerwithhubs.md + - docs/models/components/mediacontainerwithhubsmediacontainer.md + - docs/models/components/mediacontainerwithlineup.md + - docs/models/components/mediacontainerwithlineupmediacontainer.md + - docs/models/components/mediacontainerwithmetadata.md + - docs/models/components/mediacontainerwithmetadatamediacontainer.md + - docs/models/components/mediacontainerwithnestedmetadata.md + - docs/models/components/mediacontainerwithnestedmetadatamediacontainer.md + - docs/models/components/mediacontainerwithplaylistmetadata.md + - docs/models/components/mediacontainerwithplaylistmetadatamediacontainer.md + - docs/models/components/mediacontainerwithplaylistmetadatametadata.md + - docs/models/components/mediacontainerwithsettings.md + - docs/models/components/mediacontainerwithsettingsmediacontainer.md + - docs/models/components/mediacontainerwithsubscription.md + - docs/models/components/mediacontainerwithsubscriptionmediacontainer.md + - docs/models/components/mediagraboperation.md + - docs/models/components/mediaquery.md + - docs/models/components/mediasubscription.md + - docs/models/components/metadata.md + - docs/models/components/metadataitem.md + - docs/models/components/part.md + - docs/models/components/pivot.md + - docs/models/components/player.md + - docs/models/components/playlisttype.md + - docs/models/components/postresponses200.md + - docs/models/components/postresponses200mediacontainer.md + - docs/models/components/postresponses200type.md + - docs/models/components/protocol.md + - docs/models/components/recommendationsvisibility.md + - docs/models/components/requesthandlerslashgetresponses200.md + - docs/models/components/requesthandlerslashgetresponses200directory.md + - docs/models/components/requesthandlerslashgetresponses200mediacontainer.md - docs/models/components/security.md - - docs/models/errors/addplaylistcontentsbadrequest.md - - docs/models/errors/addplaylistcontentserrors.md - - docs/models/errors/addplaylistcontentsplaylistserrors.md - - docs/models/errors/addplaylistcontentsunauthorized.md - - docs/models/errors/applyupdatesbadrequest.md - - docs/models/errors/applyupdateserrors.md - - docs/models/errors/applyupdatesunauthorized.md - - docs/models/errors/applyupdatesupdatererrors.md - - docs/models/errors/cancelserveractivitiesactivitieserrors.md - - docs/models/errors/cancelserveractivitiesbadrequest.md - - docs/models/errors/cancelserveractivitieserrors.md - - docs/models/errors/cancelserveractivitiesunauthorized.md - - docs/models/errors/checkforupdatesbadrequest.md - - docs/models/errors/checkforupdateserrors.md - - docs/models/errors/checkforupdatesunauthorized.md - - docs/models/errors/checkforupdatesupdatererrors.md - - docs/models/errors/clearplaylistcontentsbadrequest.md - - docs/models/errors/clearplaylistcontentserrors.md - - docs/models/errors/clearplaylistcontentsplaylistserrors.md - - docs/models/errors/clearplaylistcontentsunauthorized.md - - docs/models/errors/createplaylistbadrequest.md - - docs/models/errors/createplaylisterrors.md - - docs/models/errors/createplaylistplaylistserrors.md - - docs/models/errors/createplaylistunauthorized.md - - docs/models/errors/deletelibrarybadrequest.md - - docs/models/errors/deletelibraryerrors.md - - docs/models/errors/deletelibrarylibraryerrors.md - - docs/models/errors/deletelibraryunauthorized.md - - docs/models/errors/deleteplaylistbadrequest.md - - docs/models/errors/deleteplaylisterrors.md - - docs/models/errors/deleteplaylistplaylistserrors.md - - docs/models/errors/deleteplaylistunauthorized.md - - docs/models/errors/enablepapertrailbadrequest.md - - docs/models/errors/enablepapertrailerrors.md - - docs/models/errors/enablepapertraillogerrors.md - - docs/models/errors/enablepapertrailunauthorized.md - - docs/models/errors/errors.md - - docs/models/errors/getactorslibrarybadrequest.md - - docs/models/errors/getactorslibraryerrors.md - - docs/models/errors/getactorslibrarylibraryerrors.md - - docs/models/errors/getactorslibraryunauthorized.md - - docs/models/errors/getalllibrariesbadrequest.md - - docs/models/errors/getalllibrarieserrors.md - - docs/models/errors/getalllibrarieslibraryerrors.md - - docs/models/errors/getalllibrariesunauthorized.md - - docs/models/errors/getavailableclientsbadrequest.md - - docs/models/errors/getavailableclientserrors.md - - docs/models/errors/getavailableclientsservererrors.md - - docs/models/errors/getavailableclientsunauthorized.md - - docs/models/errors/getbandwidthstatisticsbadrequest.md - - docs/models/errors/getbandwidthstatisticserrors.md - - docs/models/errors/getbandwidthstatisticsstatisticserrors.md - - docs/models/errors/getbandwidthstatisticsunauthorized.md - - docs/models/errors/getbannerimagebadrequest.md - - docs/models/errors/getbannerimageerrors.md - - docs/models/errors/getbannerimagemediaerrors.md - - docs/models/errors/getbannerimageunauthorized.md - - docs/models/errors/getbutlertasksbadrequest.md - - docs/models/errors/getbutlertasksbutlererrors.md - - docs/models/errors/getbutlertaskserrors.md - - docs/models/errors/getbutlertasksunauthorized.md - - docs/models/errors/getcompanionsdatabadrequest.md - - docs/models/errors/getcompanionsdataerrors.md - - docs/models/errors/getcompanionsdataplexerrors.md - - docs/models/errors/getcompanionsdataunauthorized.md - - docs/models/errors/getcountrieslibrarybadrequest.md - - docs/models/errors/getcountrieslibraryerrors.md - - docs/models/errors/getcountrieslibrarylibraryerrors.md - - docs/models/errors/getcountrieslibraryunauthorized.md - - docs/models/errors/getdevicesbadrequest.md - - docs/models/errors/getdeviceserrors.md - - docs/models/errors/getdevicesservererrors.md - - docs/models/errors/getdevicesunauthorized.md - - docs/models/errors/getfilehashbadrequest.md - - docs/models/errors/getfilehasherrors.md - - docs/models/errors/getfilehashlibraryerrors.md - - docs/models/errors/getfilehashunauthorized.md - - docs/models/errors/getgenreslibrarybadrequest.md - - docs/models/errors/getgenreslibraryerrors.md - - docs/models/errors/getgenreslibrarylibraryerrors.md - - docs/models/errors/getgenreslibraryunauthorized.md - - docs/models/errors/getgeodatabadrequest.md - - docs/models/errors/getgeodataerrors.md - - docs/models/errors/getgeodataplexerrors.md - - docs/models/errors/getgeodataunauthorized.md - - docs/models/errors/getglobalhubsbadrequest.md - - docs/models/errors/getglobalhubserrors.md - - docs/models/errors/getglobalhubshubserrors.md - - docs/models/errors/getglobalhubsunauthorized.md - - docs/models/errors/gethomedatabadrequest.md - - docs/models/errors/gethomedataerrors.md - - docs/models/errors/gethomedataplexerrors.md - - docs/models/errors/gethomedataunauthorized.md - - docs/models/errors/getlibrarydetailsbadrequest.md - - docs/models/errors/getlibrarydetailserrors.md - - docs/models/errors/getlibrarydetailslibraryerrors.md - - docs/models/errors/getlibrarydetailsunauthorized.md - - docs/models/errors/getlibraryhubsbadrequest.md - - docs/models/errors/getlibraryhubserrors.md - - docs/models/errors/getlibraryhubshubserrors.md - - docs/models/errors/getlibraryhubsunauthorized.md - - docs/models/errors/getlibraryitemsbadrequest.md - - docs/models/errors/getlibraryitemserrors.md - - docs/models/errors/getlibraryitemslibraryerrors.md - - docs/models/errors/getlibraryitemsunauthorized.md - - docs/models/errors/getlibrarysectionsallbadrequest.md - - docs/models/errors/getlibrarysectionsallerrors.md - - docs/models/errors/getlibrarysectionsalllibraryerrors.md - - docs/models/errors/getlibrarysectionsallunauthorized.md - - docs/models/errors/getmediametadatabadrequest.md - - docs/models/errors/getmediametadataerrors.md - - docs/models/errors/getmediametadatalibraryerrors.md - - docs/models/errors/getmediametadataunauthorized.md - - docs/models/errors/getmediaprovidersbadrequest.md - - docs/models/errors/getmediaproviderserrors.md - - docs/models/errors/getmediaprovidersservererrors.md - - docs/models/errors/getmediaprovidersunauthorized.md - - docs/models/errors/getmetadatachildrenbadrequest.md - - docs/models/errors/getmetadatachildrenerrors.md - - docs/models/errors/getmetadatachildrenlibraryerrors.md - - docs/models/errors/getmetadatachildrenunauthorized.md - - docs/models/errors/getmyplexaccountbadrequest.md - - docs/models/errors/getmyplexaccounterrors.md - - docs/models/errors/getmyplexaccountservererrors.md - - docs/models/errors/getmyplexaccountunauthorized.md - - docs/models/errors/getpinbadrequest.md - - docs/models/errors/getpinerrors.md - - docs/models/errors/getplaylistbadrequest.md - - docs/models/errors/getplaylistcontentsbadrequest.md - - docs/models/errors/getplaylistcontentserrors.md - - docs/models/errors/getplaylistcontentsplaylistserrors.md - - docs/models/errors/getplaylistcontentsunauthorized.md - - docs/models/errors/getplaylisterrors.md - - docs/models/errors/getplaylistplaylistserrors.md - - docs/models/errors/getplaylistsbadrequest.md - - docs/models/errors/getplaylistserrors.md - - docs/models/errors/getplaylistsplaylistserrors.md - - docs/models/errors/getplaylistsunauthorized.md - - docs/models/errors/getplaylistunauthorized.md - - docs/models/errors/getrecentlyaddedlibrarybadrequest.md - - docs/models/errors/getrecentlyaddedlibraryerrors.md - - docs/models/errors/getrecentlyaddedlibrarylibraryerrors.md - - docs/models/errors/getrecentlyaddedlibraryunauthorized.md - - docs/models/errors/getrefreshlibrarymetadatabadrequest.md - - docs/models/errors/getrefreshlibrarymetadataerrors.md - - docs/models/errors/getrefreshlibrarymetadatalibraryerrors.md - - docs/models/errors/getrefreshlibrarymetadataunauthorized.md - - docs/models/errors/getresizedphotobadrequest.md - - docs/models/errors/getresizedphotoerrors.md - - docs/models/errors/getresizedphotoservererrors.md - - docs/models/errors/getresizedphotounauthorized.md - - docs/models/errors/getresourcesstatisticsbadrequest.md - - docs/models/errors/getresourcesstatisticserrors.md - - docs/models/errors/getresourcesstatisticsstatisticserrors.md - - docs/models/errors/getresourcesstatisticsunauthorized.md - - docs/models/errors/getsearchalllibrariesbadrequest.md - - docs/models/errors/getsearchalllibrarieserrors.md - - docs/models/errors/getsearchalllibrarieslibraryerrors.md - - docs/models/errors/getsearchalllibrariesunauthorized.md - - docs/models/errors/getsearchlibrarybadrequest.md - - docs/models/errors/getsearchlibraryerrors.md - - docs/models/errors/getsearchlibrarylibraryerrors.md - - docs/models/errors/getsearchlibraryunauthorized.md - - docs/models/errors/getsearchresultsbadrequest.md - - docs/models/errors/getsearchresultserrors.md - - docs/models/errors/getsearchresultssearcherrors.md - - docs/models/errors/getsearchresultsunauthorized.md - - docs/models/errors/getserveractivitiesactivitieserrors.md - - docs/models/errors/getserveractivitiesbadrequest.md - - docs/models/errors/getserveractivitieserrors.md - - docs/models/errors/getserveractivitiesunauthorized.md - - docs/models/errors/getservercapabilitiesbadrequest.md - - docs/models/errors/getservercapabilitieserrors.md - - docs/models/errors/getservercapabilitiesunauthorized.md - - docs/models/errors/getserveridentityrequesttimeout.md - - docs/models/errors/getserverlistbadrequest.md - - docs/models/errors/getserverlisterrors.md - - docs/models/errors/getserverlistservererrors.md - - docs/models/errors/getserverlistunauthorized.md - - docs/models/errors/getserverpreferencesbadrequest.md - - docs/models/errors/getserverpreferenceserrors.md - - docs/models/errors/getserverpreferencesservererrors.md - - docs/models/errors/getserverpreferencesunauthorized.md - - docs/models/errors/getserverresourcesbadrequest.md - - docs/models/errors/getserverresourceserrors.md - - docs/models/errors/getserverresourcesplexerrors.md - - docs/models/errors/getserverresourcesunauthorized.md - - docs/models/errors/getsessionhistorybadrequest.md - - docs/models/errors/getsessionhistoryerrors.md - - docs/models/errors/getsessionhistorysessionserrors.md - - docs/models/errors/getsessionhistoryunauthorized.md - - docs/models/errors/getsessionsbadrequest.md - - docs/models/errors/getsessionserrors.md - - docs/models/errors/getsessionssessionserrors.md - - docs/models/errors/getsessionsunauthorized.md - - docs/models/errors/getsourceconnectioninformationauthenticationerrors.md - - docs/models/errors/getsourceconnectioninformationbadrequest.md - - docs/models/errors/getsourceconnectioninformationerrors.md - - docs/models/errors/getsourceconnectioninformationunauthorized.md - - docs/models/errors/getstatisticsbadrequest.md - - docs/models/errors/getstatisticserrors.md - - docs/models/errors/getstatisticsstatisticserrors.md - - docs/models/errors/getstatisticsunauthorized.md - - docs/models/errors/getthumbimagebadrequest.md - - docs/models/errors/getthumbimageerrors.md - - docs/models/errors/getthumbimagemediaerrors.md - - docs/models/errors/getthumbimageunauthorized.md - - docs/models/errors/gettimelinebadrequest.md - - docs/models/errors/gettimelineerrors.md - - docs/models/errors/gettimelineunauthorized.md - - docs/models/errors/gettimelinevideoerrors.md - - docs/models/errors/gettokenbypinidbadrequest.md - - docs/models/errors/gettokenbypiniderrors.md - - docs/models/errors/gettokenbypinidplexerrors.md - - docs/models/errors/gettokenbypinidresponsebody.md - - docs/models/errors/gettokendetailsauthenticationerrors.md - - docs/models/errors/gettokendetailsbadrequest.md - - docs/models/errors/gettokendetailserrors.md - - docs/models/errors/gettokendetailsunauthorized.md - - docs/models/errors/gettopwatchedcontentbadrequest.md - - docs/models/errors/gettopwatchedcontenterrors.md - - docs/models/errors/gettopwatchedcontentlibraryerrors.md - - docs/models/errors/gettopwatchedcontentunauthorized.md - - docs/models/errors/gettranscodesessionsbadrequest.md - - docs/models/errors/gettranscodesessionserrors.md - - docs/models/errors/gettranscodesessionssessionserrors.md - - docs/models/errors/gettranscodesessionsunauthorized.md - - docs/models/errors/gettransienttokenauthenticationerrors.md - - docs/models/errors/gettransienttokenbadrequest.md - - docs/models/errors/gettransienttokenerrors.md - - docs/models/errors/gettransienttokenunauthorized.md - - docs/models/errors/getupdatestatusbadrequest.md - - docs/models/errors/getupdatestatuserrors.md - - docs/models/errors/getupdatestatusunauthorized.md - - docs/models/errors/getupdatestatusupdatererrors.md - - docs/models/errors/getuserfriendsbadrequest.md - - docs/models/errors/getuserfriendserrors.md - - docs/models/errors/getuserfriendsplexerrors.md - - docs/models/errors/getuserfriendsunauthorized.md - - docs/models/errors/getusersbadrequest.md - - docs/models/errors/getuserserrors.md - - docs/models/errors/getusersunauthorized.md - - docs/models/errors/getusersuserserrors.md - - docs/models/errors/getwatchlistbadrequest.md - - docs/models/errors/getwatchlisterrors.md - - docs/models/errors/getwatchlistunauthorized.md - - docs/models/errors/getwatchlistwatchlisterrors.md - - docs/models/errors/loglinebadrequest.md - - docs/models/errors/loglineerrors.md - - docs/models/errors/loglinelogerrors.md - - docs/models/errors/loglineunauthorized.md - - docs/models/errors/logmultilinebadrequest.md - - docs/models/errors/logmultilineerrors.md - - docs/models/errors/logmultilinelogerrors.md - - docs/models/errors/logmultilineunauthorized.md - - docs/models/errors/markplayedbadrequest.md - - docs/models/errors/markplayederrors.md - - docs/models/errors/markplayedmediaerrors.md - - docs/models/errors/markplayedunauthorized.md - - docs/models/errors/markunplayedbadrequest.md - - docs/models/errors/markunplayederrors.md - - docs/models/errors/markunplayedmediaerrors.md - - docs/models/errors/markunplayedunauthorized.md - - docs/models/errors/performsearchbadrequest.md - - docs/models/errors/performsearcherrors.md - - docs/models/errors/performsearchsearcherrors.md - - docs/models/errors/performsearchunauthorized.md - - docs/models/errors/performvoicesearchbadrequest.md - - docs/models/errors/performvoicesearcherrors.md - - docs/models/errors/performvoicesearchsearcherrors.md - - docs/models/errors/performvoicesearchunauthorized.md - - docs/models/errors/postuserssignindataauthenticationerrors.md - - docs/models/errors/postuserssignindatabadrequest.md - - docs/models/errors/postuserssignindataerrors.md - - docs/models/errors/postuserssignindataunauthorized.md - - docs/models/errors/startalltasksbadrequest.md - - docs/models/errors/startalltasksbutlererrors.md - - docs/models/errors/startalltaskserrors.md - - docs/models/errors/startalltasksunauthorized.md - - docs/models/errors/starttaskbadrequest.md - - docs/models/errors/starttaskbutlererrors.md - - docs/models/errors/starttaskerrors.md - - docs/models/errors/starttaskunauthorized.md - - docs/models/errors/startuniversaltranscodebadrequest.md - - docs/models/errors/startuniversaltranscodeerrors.md - - docs/models/errors/startuniversaltranscodeunauthorized.md - - docs/models/errors/startuniversaltranscodevideoerrors.md - - docs/models/errors/stopalltasksbadrequest.md - - docs/models/errors/stopalltasksbutlererrors.md - - docs/models/errors/stopalltaskserrors.md - - docs/models/errors/stopalltasksunauthorized.md - - docs/models/errors/stoptaskbadrequest.md - - docs/models/errors/stoptaskbutlererrors.md - - docs/models/errors/stoptaskerrors.md - - docs/models/errors/stoptaskunauthorized.md - - docs/models/errors/stoptranscodesessionbadrequest.md - - docs/models/errors/stoptranscodesessionerrors.md - - docs/models/errors/stoptranscodesessionsessionserrors.md - - docs/models/errors/stoptranscodesessionunauthorized.md - - docs/models/errors/updateplaylistbadrequest.md - - docs/models/errors/updateplaylisterrors.md - - docs/models/errors/updateplaylistplaylistserrors.md - - docs/models/errors/updateplaylistunauthorized.md - - docs/models/errors/updateplayprogressbadrequest.md - - docs/models/errors/updateplayprogresserrors.md - - docs/models/errors/updateplayprogressmediaerrors.md - - docs/models/errors/updateplayprogressunauthorized.md - - docs/models/errors/uploadplaylistbadrequest.md - - docs/models/errors/uploadplaylisterrors.md - - docs/models/errors/uploadplaylistplaylistserrors.md - - docs/models/errors/uploadplaylistunauthorized.md + - docs/models/components/session.md + - docs/models/components/sessionlocation.md + - docs/models/components/setting.md + - docs/models/components/slashgetresponses200.md + - docs/models/components/slashgetresponses200mediacontainer.md + - docs/models/components/sort.md + - docs/models/components/sortdefault.md + - docs/models/components/sortpivot.md + - docs/models/components/status.md + - docs/models/components/stream.md + - docs/models/components/subtitles.md + - docs/models/components/tag.md + - docs/models/components/transcodesession.md + - docs/models/components/transcodetype.md + - docs/models/components/type.md + - docs/models/components/user.md + - docs/models/components/value.md + - docs/models/internal/globals.md - docs/models/operations/account.md - docs/models/operations/action.md - - docs/models/operations/activedirection.md - docs/models/operations/activity.md - - docs/models/operations/addplaylistcontentsmediacontainer.md - - docs/models/operations/addplaylistcontentsmetadata.md - - docs/models/operations/addplaylistcontentsrequest.md - - docs/models/operations/addplaylistcontentsresponse.md - - docs/models/operations/addplaylistcontentsresponsebody.md - - docs/models/operations/alllibraries.md - - docs/models/operations/allowcameraupload.md - - docs/models/operations/allowchannels.md - - docs/models/operations/allowsubtitleadmin.md - - docs/models/operations/allowsync.md - - docs/models/operations/allowtuners.md + - docs/models/operations/addcollectionitemsglobals.md + - docs/models/operations/addcollectionitemsrequest.md + - docs/models/operations/addcollectionitemsresponse.md + - docs/models/operations/adddeviceglobals.md + - docs/models/operations/adddevicerequest.md + - docs/models/operations/adddeviceresponse.md + - docs/models/operations/adddevicetodvrdvr.md + - docs/models/operations/adddevicetodvrdvrsmediacontainer.md + - docs/models/operations/adddevicetodvrglobals.md + - docs/models/operations/adddevicetodvrmediacontainer.md + - docs/models/operations/adddevicetodvrrequest.md + - docs/models/operations/adddevicetodvrresponse.md + - docs/models/operations/adddevicetodvrresponsebody.md + - docs/models/operations/adddownloadqueueitemsglobals.md + - docs/models/operations/adddownloadqueueitemsmediacontainer.md + - docs/models/operations/adddownloadqueueitemsrequest.md + - docs/models/operations/adddownloadqueueitemsresponse.md + - docs/models/operations/adddownloadqueueitemsresponsebody.md + - docs/models/operations/addedqueueitems.md + - docs/models/operations/addextrasglobals.md + - docs/models/operations/addextrasrequest.md + - docs/models/operations/addextrasresponse.md + - docs/models/operations/addlineupdvr.md + - docs/models/operations/addlineupdvrsmediacontainer.md + - docs/models/operations/addlineupglobals.md + - docs/models/operations/addlineupmediacontainer.md + - docs/models/operations/addlineuprequest.md + - docs/models/operations/addlineupresponse.md + - docs/models/operations/addlineupresponsebody.md + - docs/models/operations/addplaylistitemsglobals.md + - docs/models/operations/addplaylistitemsrequest.md + - docs/models/operations/addplaylistitemsresponse.md + - docs/models/operations/addproviderglobals.md + - docs/models/operations/addproviderrequest.md + - docs/models/operations/addproviderresponse.md + - docs/models/operations/addsectionglobals.md + - docs/models/operations/addsectionrequest.md + - docs/models/operations/addsectionresponse.md + - docs/models/operations/addsubtitlesglobals.md + - docs/models/operations/addsubtitlesrequest.md + - docs/models/operations/addsubtitlesresponse.md + - docs/models/operations/addtoplayqueueglobals.md + - docs/models/operations/addtoplayqueuerequest.md + - docs/models/operations/addtoplayqueueresponse.md + - docs/models/operations/advancedsubtitles.md + - docs/models/operations/analyzemetadataglobals.md + - docs/models/operations/analyzemetadatarequest.md + - docs/models/operations/analyzemetadataresponse.md + - docs/models/operations/applyupdatesglobals.md - docs/models/operations/applyupdatesrequest.md - docs/models/operations/applyupdatesresponse.md + - docs/models/operations/args.md - docs/models/operations/attributes.md - - docs/models/operations/autoselectsubtitle.md - - docs/models/operations/billing.md + - docs/models/operations/autocompleteglobals.md + - docs/models/operations/autocompleterequest.md + - docs/models/operations/autocompleteresponse.md + - docs/models/operations/bandwidth.md + - docs/models/operations/bandwidths.md - docs/models/operations/butlertask.md - docs/models/operations/butlertasks.md - - docs/models/operations/cancelserveractivitiesrequest.md - - docs/models/operations/cancelserveractivitiesresponse.md - - docs/models/operations/chapter.md - - docs/models/operations/checkforupdatesrequest.md - - docs/models/operations/checkforupdatesresponse.md - - docs/models/operations/clearplaylistcontentsrequest.md - - docs/models/operations/clearplaylistcontentsresponse.md - - docs/models/operations/collection.md - - docs/models/operations/connections.md - - docs/models/operations/context.md + - docs/models/operations/cancelactivityglobals.md + - docs/models/operations/cancelactivityrequest.md + - docs/models/operations/cancelactivityresponse.md + - docs/models/operations/cancelgrabglobals.md + - docs/models/operations/cancelgrabrequest.md + - docs/models/operations/cancelgrabresponse.md + - docs/models/operations/cancelrefreshglobals.md + - docs/models/operations/cancelrefreshrequest.md + - docs/models/operations/cancelrefreshresponse.md + - docs/models/operations/channelmapping.md + - docs/models/operations/channelmappingbykey.md + - docs/models/operations/checkupdatesglobals.md + - docs/models/operations/checkupdatesrequest.md + - docs/models/operations/checkupdatesresponse.md + - docs/models/operations/chromasubsampling.md + - docs/models/operations/cleanbundlesresponse.md + - docs/models/operations/clearplaylistitemsglobals.md + - docs/models/operations/clearplaylistitemsrequest.md + - docs/models/operations/clearplaylistitemsresponse.md + - docs/models/operations/clearplayqueueglobals.md + - docs/models/operations/clearplayqueuerequest.md + - docs/models/operations/clearplayqueueresponse.md + - docs/models/operations/computechannelmapchannelmapping.md + - docs/models/operations/computechannelmapglobals.md + - docs/models/operations/computechannelmapmediacontainer.md + - docs/models/operations/computechannelmaprequest.md + - docs/models/operations/computechannelmapresponse.md + - docs/models/operations/computechannelmapresponsebody.md + - docs/models/operations/connection.md + - docs/models/operations/connectwebsocketglobals.md + - docs/models/operations/connectwebsocketrequest.md + - docs/models/operations/connectwebsocketresponse.md - docs/models/operations/country.md - - docs/models/operations/createplaylistmediacontainer.md - - docs/models/operations/createplaylistmetadata.md - - docs/models/operations/createplaylistqueryparamtype.md + - docs/models/operations/createcollectionglobals.md + - docs/models/operations/createcollectionrequest.md + - docs/models/operations/createcollectionresponse.md + - docs/models/operations/createcustomhubglobals.md + - docs/models/operations/createcustomhubrequest.md + - docs/models/operations/createcustomhubresponse.md + - docs/models/operations/createdownloadqueuemediacontainer.md + - docs/models/operations/createdownloadqueueresponse.md + - docs/models/operations/createdownloadqueueresponsebody.md + - docs/models/operations/createdvrglobals.md + - docs/models/operations/createdvrrequest.md + - docs/models/operations/createdvrresponse.md + - docs/models/operations/createmarkerglobals.md + - docs/models/operations/createmarkermediacontainer.md + - docs/models/operations/createmarkerrequest.md + - docs/models/operations/createmarkerresponse.md + - docs/models/operations/createmarkerresponsebody.md + - docs/models/operations/createmarkertype.md + - docs/models/operations/createplaylistglobals.md - docs/models/operations/createplaylistrequest.md - docs/models/operations/createplaylistresponse.md - - docs/models/operations/createplaylistresponsebody.md - - docs/models/operations/defaultdirection.md - - docs/models/operations/defaultsubtitleaccessibility.md - - docs/models/operations/defaultsubtitleforced.md - - docs/models/operations/deletelibraryrequest.md - - docs/models/operations/deletelibraryresponse.md + - docs/models/operations/createplayqueueglobals.md + - docs/models/operations/createplayqueuemediacontainer.md + - docs/models/operations/createplayqueuerequest.md + - docs/models/operations/createplayqueueresponse.md + - docs/models/operations/createplayqueueresponsebody.md + - docs/models/operations/createsubscriptionglobals.md + - docs/models/operations/createsubscriptionmediacontainer.md + - docs/models/operations/createsubscriptionqueryparamprefs.md + - docs/models/operations/createsubscriptionrequest.md + - docs/models/operations/createsubscriptionresponse.md + - docs/models/operations/createsubscriptionresponsebody.md + - docs/models/operations/decisionresult.md + - docs/models/operations/deletecachesresponse.md + - docs/models/operations/deletecollectionglobals.md + - docs/models/operations/deletecollectionitemglobals.md + - docs/models/operations/deletecollectionitemrequest.md + - docs/models/operations/deletecollectionitemresponse.md + - docs/models/operations/deletecollectionrequest.md + - docs/models/operations/deletecollectionresponse.md + - docs/models/operations/deletecustomhubglobals.md + - docs/models/operations/deletecustomhubrequest.md + - docs/models/operations/deletecustomhubresponse.md + - docs/models/operations/deletedvrglobals.md + - docs/models/operations/deletedvrrequest.md + - docs/models/operations/deletedvrresponse.md + - docs/models/operations/deletehistoryglobals.md + - docs/models/operations/deletehistoryrequest.md + - docs/models/operations/deletehistoryresponse.md + - docs/models/operations/deleteindexesglobals.md + - docs/models/operations/deleteindexesrequest.md + - docs/models/operations/deleteindexesresponse.md + - docs/models/operations/deleteintrosglobals.md + - docs/models/operations/deleteintrosrequest.md + - docs/models/operations/deleteintrosresponse.md + - docs/models/operations/deletelibrarysectionglobals.md + - docs/models/operations/deletelibrarysectionrequest.md + - docs/models/operations/deletelibrarysectionresponse.md + - docs/models/operations/deletelineupdvr.md + - docs/models/operations/deletelineupdvrsmediacontainer.md + - docs/models/operations/deletelineupglobals.md + - docs/models/operations/deletelineupmediacontainer.md + - docs/models/operations/deletelineuprequest.md + - docs/models/operations/deletelineupresponse.md + - docs/models/operations/deletelineupresponsebody.md + - docs/models/operations/deletemarkerglobals.md + - docs/models/operations/deletemarkerrequest.md + - docs/models/operations/deletemarkerresponse.md + - docs/models/operations/deletemediaitemglobals.md + - docs/models/operations/deletemediaitemrequest.md + - docs/models/operations/deletemediaitemresponse.md + - docs/models/operations/deletemediaproviderglobals.md + - docs/models/operations/deletemediaproviderrequest.md + - docs/models/operations/deletemediaproviderresponse.md + - docs/models/operations/deletemetadataitemglobals.md + - docs/models/operations/deletemetadataitemrequest.md + - docs/models/operations/deletemetadataitemresponse.md + - docs/models/operations/deleteplaylistglobals.md + - docs/models/operations/deleteplaylistitemglobals.md + - docs/models/operations/deleteplaylistitemrequest.md + - docs/models/operations/deleteplaylistitemresponse.md - docs/models/operations/deleteplaylistrequest.md - docs/models/operations/deleteplaylistresponse.md + - docs/models/operations/deleteplayqueueitemglobals.md + - docs/models/operations/deleteplayqueueitemrequest.md + - docs/models/operations/deleteplayqueueitemresponse.md + - docs/models/operations/deletestreamglobals.md + - docs/models/operations/deletestreamrequest.md + - docs/models/operations/deletestreamresponse.md + - docs/models/operations/deletesubscriptionglobals.md + - docs/models/operations/deletesubscriptionrequest.md + - docs/models/operations/deletesubscriptionresponse.md + - docs/models/operations/detectadsglobals.md + - docs/models/operations/detectadsrequest.md + - docs/models/operations/detectadsresponse.md + - docs/models/operations/detectcreditsglobals.md + - docs/models/operations/detectcreditsrequest.md + - docs/models/operations/detectcreditsresponse.md + - docs/models/operations/detectintrosglobals.md + - docs/models/operations/detectintrosrequest.md + - docs/models/operations/detectintrosresponse.md + - docs/models/operations/detectvoiceactivityglobals.md + - docs/models/operations/detectvoiceactivityrequest.md + - docs/models/operations/detectvoiceactivityresponse.md - docs/models/operations/device.md - - docs/models/operations/director.md + - docs/models/operations/devicechannel.md - docs/models/operations/directory.md - - docs/models/operations/download.md + - docs/models/operations/discoverdevicesresponse.md + - docs/models/operations/downloadqueue.md + - docs/models/operations/downloadqueueitem.md + - docs/models/operations/dvr.md + - docs/models/operations/editmarkerglobals.md + - docs/models/operations/editmarkerrequest.md + - docs/models/operations/editmarkerresponse.md + - docs/models/operations/editmetadataitemglobals.md + - docs/models/operations/editmetadataitemrequest.md + - docs/models/operations/editmetadataitemresponse.md + - docs/models/operations/editsectionglobals.md + - docs/models/operations/editsectionqueryparamprefs.md + - docs/models/operations/editsectionrequest.md + - docs/models/operations/editsectionresponse.md + - docs/models/operations/editsubscriptionpreferencesglobals.md + - docs/models/operations/editsubscriptionpreferencesqueryparamprefs.md + - docs/models/operations/editsubscriptionpreferencesrequest.md + - docs/models/operations/editsubscriptionpreferencesresponse.md + - docs/models/operations/element.md + - docs/models/operations/emptytrashglobals.md + - docs/models/operations/emptytrashrequest.md + - docs/models/operations/emptytrashresponse.md + - docs/models/operations/enablepapertrailglobals.md + - docs/models/operations/enablepapertrailrequest.md - docs/models/operations/enablepapertrailresponse.md - - docs/models/operations/extras.md + - docs/models/operations/extension.md - docs/models/operations/feature.md - - docs/models/operations/fieldt.md - - docs/models/operations/fieldtype.md - - docs/models/operations/filter_.md - - docs/models/operations/flattenseasons.md - - docs/models/operations/force.md - - docs/models/operations/friend.md - - docs/models/operations/genre.md - - docs/models/operations/geodata.md - - docs/models/operations/getactorslibrarydirectory.md - - docs/models/operations/getactorslibrarymediacontainer.md - - docs/models/operations/getactorslibraryqueryparamtype.md - - docs/models/operations/getactorslibraryrequest.md - - docs/models/operations/getactorslibraryresponse.md - - docs/models/operations/getactorslibraryresponsebody.md - - docs/models/operations/getalllibrariesdirectory.md - - docs/models/operations/getalllibrarieslocation.md - - docs/models/operations/getalllibrariesmediacontainer.md - - docs/models/operations/getalllibrariesresponse.md - - docs/models/operations/getalllibrariesresponsebody.md - - docs/models/operations/getalllibrariestype.md - - docs/models/operations/getavailableclientsmediacontainer.md - - docs/models/operations/getavailableclientsresponse.md - - docs/models/operations/getavailableclientsresponsebody.md - - docs/models/operations/getbandwidthstatisticsaccount.md - - docs/models/operations/getbandwidthstatisticsdevice.md - - docs/models/operations/getbandwidthstatisticsmediacontainer.md - - docs/models/operations/getbandwidthstatisticsrequest.md - - docs/models/operations/getbandwidthstatisticsresponse.md - - docs/models/operations/getbandwidthstatisticsresponsebody.md - - docs/models/operations/getbannerimagerequest.md - - docs/models/operations/getbannerimageresponse.md - - docs/models/operations/getbutlertasksresponse.md - - docs/models/operations/getbutlertasksresponsebody.md - - docs/models/operations/getcompanionsdataresponse.md - - docs/models/operations/getcountrieslibrarydirectory.md - - docs/models/operations/getcountrieslibrarymediacontainer.md - - docs/models/operations/getcountrieslibraryqueryparamtype.md - - docs/models/operations/getcountrieslibraryrequest.md - - docs/models/operations/getcountrieslibraryresponse.md - - docs/models/operations/getcountrieslibraryresponsebody.md - - docs/models/operations/getdevicesmediacontainer.md - - docs/models/operations/getdevicesresponse.md - - docs/models/operations/getdevicesresponsebody.md - - docs/models/operations/getfilehashrequest.md - - docs/models/operations/getfilehashresponse.md - - docs/models/operations/getgenreslibrarydirectory.md - - docs/models/operations/getgenreslibrarymediacontainer.md - - docs/models/operations/getgenreslibraryqueryparamtype.md - - docs/models/operations/getgenreslibraryrequest.md - - docs/models/operations/getgenreslibraryresponse.md - - docs/models/operations/getgenreslibraryresponsebody.md - - docs/models/operations/getgeodatageodata.md - - docs/models/operations/getgeodataresponse.md - - docs/models/operations/getglobalhubsmediacontainer.md - - docs/models/operations/getglobalhubsmetadata.md - - docs/models/operations/getglobalhubsrequest.md - - docs/models/operations/getglobalhubsresponse.md - - docs/models/operations/getglobalhubsresponsebody.md - - docs/models/operations/gethomedataresponse.md - - docs/models/operations/gethomedataresponsebody.md - - docs/models/operations/getlibrarydetailsdirectory.md - - docs/models/operations/getlibrarydetailsfield.md - - docs/models/operations/getlibrarydetailsfieldtype.md - - docs/models/operations/getlibrarydetailsfilter.md + - docs/models/operations/flavor.md + - docs/models/operations/format_.md + - docs/models/operations/generatethumbsglobals.md + - docs/models/operations/generatethumbsrequest.md + - docs/models/operations/generatethumbsresponse.md + - docs/models/operations/getalbumsglobals.md + - docs/models/operations/getalbumsrequest.md + - docs/models/operations/getalbumsresponse.md + - docs/models/operations/getallhubsglobals.md + - docs/models/operations/getallhubsmediacontainer.md + - docs/models/operations/getallhubsrequest.md + - docs/models/operations/getallhubsresponse.md + - docs/models/operations/getallhubsresponsebody.md + - docs/models/operations/getallitemleavesglobals.md + - docs/models/operations/getallitemleavesrequest.md + - docs/models/operations/getallitemleavesresponse.md + - docs/models/operations/getalllanguagesmediacontainer.md + - docs/models/operations/getalllanguagesresponse.md + - docs/models/operations/getalllanguagesresponsebody.md + - docs/models/operations/getallleavesglobals.md + - docs/models/operations/getallleavesrequest.md + - docs/models/operations/getallleavesresponse.md + - docs/models/operations/getallpreferencesresponse.md + - docs/models/operations/getallsubscriptionsglobals.md + - docs/models/operations/getallsubscriptionsrequest.md + - docs/models/operations/getallsubscriptionsresponse.md + - docs/models/operations/getartsglobals.md + - docs/models/operations/getartsrequest.md + - docs/models/operations/getartsresponse.md + - docs/models/operations/getaugmentationstatusglobals.md + - docs/models/operations/getaugmentationstatusrequest.md + - docs/models/operations/getaugmentationstatusresponse.md + - docs/models/operations/getavailablegrabbersglobals.md + - docs/models/operations/getavailablegrabbersmediacontainer.md + - docs/models/operations/getavailablegrabbersrequest.md + - docs/models/operations/getavailablegrabbersresponse.md + - docs/models/operations/getavailablegrabbersresponsebody.md + - docs/models/operations/getavailablesortsglobals.md + - docs/models/operations/getavailablesortsmediacontainer.md + - docs/models/operations/getavailablesortsrequest.md + - docs/models/operations/getavailablesortsresponse.md + - docs/models/operations/getavailablesortsresponsebody.md + - docs/models/operations/getbackgroundtasksmediacontainer.md + - docs/models/operations/getbackgroundtasksresponse.md + - docs/models/operations/getbackgroundtasksresponsebody.md + - docs/models/operations/getbackgroundtaskstype.md + - docs/models/operations/getcategoriesglobals.md + - docs/models/operations/getcategoriesrequest.md + - docs/models/operations/getcategoriesresponse.md + - docs/models/operations/getchannelsglobals.md + - docs/models/operations/getchannelsmediacontainer.md + - docs/models/operations/getchannelsrequest.md + - docs/models/operations/getchannelsresponse.md + - docs/models/operations/getchannelsresponsebody.md + - docs/models/operations/getchapterimageglobals.md + - docs/models/operations/getchapterimagerequest.md + - docs/models/operations/getchapterimageresponse.md + - docs/models/operations/getclusterglobals.md + - docs/models/operations/getclusterrequest.md + - docs/models/operations/getclusterresponse.md + - docs/models/operations/getcollectionimageglobals.md + - docs/models/operations/getcollectionimagerequest.md + - docs/models/operations/getcollectionimageresponse.md + - docs/models/operations/getcollectionitemsglobals.md + - docs/models/operations/getcollectionitemsrequest.md + - docs/models/operations/getcollectionitemsresponse.md + - docs/models/operations/getcollectionsglobals.md + - docs/models/operations/getcollectionsrequest.md + - docs/models/operations/getcollectionsresponse.md + - docs/models/operations/getcolorsglobals.md + - docs/models/operations/getcolorsmediacontainer.md + - docs/models/operations/getcolorsrequest.md + - docs/models/operations/getcolorsresponse.md + - docs/models/operations/getcolorsresponsebody.md + - docs/models/operations/getcommonglobals.md + - docs/models/operations/getcommonrequest.md + - docs/models/operations/getcommonresponse.md + - docs/models/operations/getcontinuewatchingglobals.md + - docs/models/operations/getcontinuewatchingmediacontainer.md + - docs/models/operations/getcontinuewatchingrequest.md + - docs/models/operations/getcontinuewatchingresponse.md + - docs/models/operations/getcontinuewatchingresponsebody.md + - docs/models/operations/getcountrieslineupsglobals.md + - docs/models/operations/getcountrieslineupsrequest.md + - docs/models/operations/getcountrieslineupsresponse.md + - docs/models/operations/getcountriesmediacontainer.md + - docs/models/operations/getcountriesresponse.md + - docs/models/operations/getcountriesresponsebody.md + - docs/models/operations/getcountryregionscountry.md + - docs/models/operations/getcountryregionsglobals.md + - docs/models/operations/getcountryregionsmediacontainer.md + - docs/models/operations/getcountryregionsrequest.md + - docs/models/operations/getcountryregionsresponse.md + - docs/models/operations/getcountryregionsresponsebody.md + - docs/models/operations/getdevicedetailsglobals.md + - docs/models/operations/getdevicedetailsrequest.md + - docs/models/operations/getdevicedetailsresponse.md + - docs/models/operations/getdeviceschannelsglobals.md + - docs/models/operations/getdeviceschannelsmediacontainer.md + - docs/models/operations/getdeviceschannelsrequest.md + - docs/models/operations/getdeviceschannelsresponse.md + - docs/models/operations/getdeviceschannelsresponsebody.md + - docs/models/operations/getdownloadqueuedownloadqueue.md + - docs/models/operations/getdownloadqueueglobals.md + - docs/models/operations/getdownloadqueueitemsdecisionresult.md + - docs/models/operations/getdownloadqueueitemsdownloadqueueitem.md + - docs/models/operations/getdownloadqueueitemsglobals.md + - docs/models/operations/getdownloadqueueitemsmediacontainer.md + - docs/models/operations/getdownloadqueueitemsrequest.md + - docs/models/operations/getdownloadqueueitemsresponse.md + - docs/models/operations/getdownloadqueueitemsresponsebody.md + - docs/models/operations/getdownloadqueueitemsstatus.md + - docs/models/operations/getdownloadqueueitemstranscode.md + - docs/models/operations/getdownloadqueuemediacontainer.md + - docs/models/operations/getdownloadqueuemediaglobals.md + - docs/models/operations/getdownloadqueuemediarequest.md + - docs/models/operations/getdownloadqueuemediaresponse.md + - docs/models/operations/getdownloadqueuerequest.md + - docs/models/operations/getdownloadqueueresponse.md + - docs/models/operations/getdownloadqueueresponsebody.md + - docs/models/operations/getdownloadqueuestatus.md + - docs/models/operations/getdvrdvr.md + - docs/models/operations/getdvrdvrsmediacontainer.md + - docs/models/operations/getdvrglobals.md + - docs/models/operations/getdvrmediacontainer.md + - docs/models/operations/getdvrrequest.md + - docs/models/operations/getdvrresponse.md + - docs/models/operations/getdvrresponsebody.md + - docs/models/operations/getextrasglobals.md + - docs/models/operations/getextrasrequest.md + - docs/models/operations/getextrasresponse.md + - docs/models/operations/getfileglobals.md + - docs/models/operations/getfilerequest.md + - docs/models/operations/getfileresponse.md + - docs/models/operations/getfirstcharactersdirectory.md + - docs/models/operations/getfirstcharactersglobals.md + - docs/models/operations/getfirstcharactersmediacontainer.md + - docs/models/operations/getfirstcharactersrequest.md + - docs/models/operations/getfirstcharactersresponse.md + - docs/models/operations/getfirstcharactersresponsebody.md + - docs/models/operations/getfoldersdirectory.md + - docs/models/operations/getfoldersglobals.md + - docs/models/operations/getfoldersmediacontainer.md + - docs/models/operations/getfoldersrequest.md + - docs/models/operations/getfoldersresponse.md + - docs/models/operations/getfoldersresponsebody.md + - docs/models/operations/gethistoryitemglobals.md + - docs/models/operations/gethistoryitemrequest.md + - docs/models/operations/gethistoryitemresponse.md + - docs/models/operations/gethubitemsglobals.md + - docs/models/operations/gethubitemsrequest.md + - docs/models/operations/gethubitemsresponse.md + - docs/models/operations/gethubitemsresponsebody.md + - docs/models/operations/getidentitymediacontainer.md + - docs/models/operations/getidentityresponse.md + - docs/models/operations/getidentityresponsebody.md + - docs/models/operations/getimagefrombifglobals.md + - docs/models/operations/getimagefrombifrequest.md + - docs/models/operations/getimagefrombifresponse.md + - docs/models/operations/getimageglobals.md + - docs/models/operations/getimagerequest.md + - docs/models/operations/getimageresponse.md + - docs/models/operations/getitemartworkglobals.md + - docs/models/operations/getitemartworkpathparamelement.md + - docs/models/operations/getitemartworkrequest.md + - docs/models/operations/getitemartworkresponse.md + - docs/models/operations/getitemdecisionglobals.md + - docs/models/operations/getitemdecisionrequest.md + - docs/models/operations/getitemdecisionresponse.md + - docs/models/operations/getitemtreeglobals.md + - docs/models/operations/getitemtreerequest.md + - docs/models/operations/getitemtreeresponse.md + - docs/models/operations/getlibrarydetailsglobals.md - docs/models/operations/getlibrarydetailsmediacontainer.md - - docs/models/operations/getlibrarydetailsoperator.md - docs/models/operations/getlibrarydetailsrequest.md - docs/models/operations/getlibrarydetailsresponse.md - docs/models/operations/getlibrarydetailsresponsebody.md - - docs/models/operations/getlibrarydetailssort.md - - docs/models/operations/getlibrarydetailstype.md - - docs/models/operations/getlibraryhubscountry.md - - docs/models/operations/getlibraryhubsdirector.md - - docs/models/operations/getlibraryhubsgenre.md - - docs/models/operations/getlibraryhubshub.md - - docs/models/operations/getlibraryhubsmedia.md - - docs/models/operations/getlibraryhubsmediacontainer.md - - docs/models/operations/getlibraryhubsmetadata.md - - docs/models/operations/getlibraryhubspart.md - - docs/models/operations/getlibraryhubsrequest.md - - docs/models/operations/getlibraryhubsresponse.md - - docs/models/operations/getlibraryhubsresponsebody.md - - docs/models/operations/getlibraryhubsrole.md - - docs/models/operations/getlibraryhubswriter.md - - docs/models/operations/getlibraryitemsactivedirection.md - - docs/models/operations/getlibraryitemscollection.md - - docs/models/operations/getlibraryitemscountry.md - - docs/models/operations/getlibraryitemsdefaultdirection.md - - docs/models/operations/getlibraryitemsdirector.md - - docs/models/operations/getlibraryitemsfield.md - - docs/models/operations/getlibraryitemsfieldtype.md - - docs/models/operations/getlibraryitemsfilter.md - - docs/models/operations/getlibraryitemsgenre.md - - docs/models/operations/getlibraryitemsguids.md - - docs/models/operations/getlibraryitemshasthumbnail.md - - docs/models/operations/getlibraryitemsimage.md - - docs/models/operations/getlibraryitemslibraryoptimizedforstreaming.md - - docs/models/operations/getlibraryitemslibraryresponsetype.md - - docs/models/operations/getlibraryitemslibrarytype.md - - docs/models/operations/getlibraryitemslocation.md - - docs/models/operations/getlibraryitemsmedia.md - - docs/models/operations/getlibraryitemsmediacontainer.md - - docs/models/operations/getlibraryitemsmeta.md - - docs/models/operations/getlibraryitemsmetadata.md - - docs/models/operations/getlibraryitemsoperator.md - - docs/models/operations/getlibraryitemsoptimizedforstreaming.md - - docs/models/operations/getlibraryitemsoptimizedforstreaming1.md - - docs/models/operations/getlibraryitemspart.md - - docs/models/operations/getlibraryitemsproducer.md - - docs/models/operations/getlibraryitemsqueryparamincludemeta.md - - docs/models/operations/getlibraryitemsqueryparamtype.md + - docs/models/operations/getlibraryitemsglobals.md - docs/models/operations/getlibraryitemsrequest.md - docs/models/operations/getlibraryitemsresponse.md - - docs/models/operations/getlibraryitemsresponsebody.md - - docs/models/operations/getlibraryitemsrole.md - - docs/models/operations/getlibraryitemssimilar.md - - docs/models/operations/getlibraryitemssort.md - - docs/models/operations/getlibraryitemstype.md - - docs/models/operations/getlibraryitemsultrablurcolors.md - - docs/models/operations/getlibraryitemswriter.md - - docs/models/operations/getlibrarysectionsallactivedirection.md - - docs/models/operations/getlibrarysectionsallcollection.md - - docs/models/operations/getlibrarysectionsallcountry.md - - docs/models/operations/getlibrarysectionsalldefaultdirection.md - - docs/models/operations/getlibrarysectionsalldirector.md - - docs/models/operations/getlibrarysectionsallfield.md - - docs/models/operations/getlibrarysectionsallfieldtype.md - - docs/models/operations/getlibrarysectionsallfilter.md - - docs/models/operations/getlibrarysectionsallgenre.md - - docs/models/operations/getlibrarysectionsallguids.md - - docs/models/operations/getlibrarysectionsallhasthumbnail.md - - docs/models/operations/getlibrarysectionsallimage.md - - docs/models/operations/getlibrarysectionsalllibraryoptimizedforstreaming.md - - docs/models/operations/getlibrarysectionsalllibraryresponsetype.md - - docs/models/operations/getlibrarysectionsalllibrarytype.md - - docs/models/operations/getlibrarysectionsallmedia.md - - docs/models/operations/getlibrarysectionsallmediacontainer.md - - docs/models/operations/getlibrarysectionsallmeta.md - - docs/models/operations/getlibrarysectionsallmetadata.md - - docs/models/operations/getlibrarysectionsalloperator.md - - docs/models/operations/getlibrarysectionsalloptimizedforstreaming.md - - docs/models/operations/getlibrarysectionsalloptimizedforstreaming1.md - - docs/models/operations/getlibrarysectionsalloptimizedforstreaminglibrary1.md - - docs/models/operations/getlibrarysectionsallpart.md - - docs/models/operations/getlibrarysectionsallqueryparamincludemeta.md - - docs/models/operations/getlibrarysectionsallqueryparamtype.md - - docs/models/operations/getlibrarysectionsallrequest.md - - docs/models/operations/getlibrarysectionsallresponse.md - - docs/models/operations/getlibrarysectionsallresponsebody.md - - docs/models/operations/getlibrarysectionsallrole.md - - docs/models/operations/getlibrarysectionsallsort.md - - docs/models/operations/getlibrarysectionsallstream.md - - docs/models/operations/getlibrarysectionsalltype.md - - docs/models/operations/getlibrarysectionsallultrablurcolors.md - - docs/models/operations/getlibrarysectionsallwriter.md - - docs/models/operations/getmediaartsmediacontainer.md - - docs/models/operations/getmediaartsmetadata.md - - docs/models/operations/getmediaartsrequest.md - - docs/models/operations/getmediaartsresponse.md - - docs/models/operations/getmediaartsresponsebody.md - - docs/models/operations/getmediametadataattributes.md - - docs/models/operations/getmediametadatachapter.md - - docs/models/operations/getmediametadatacountry.md - - docs/models/operations/getmediametadatadirector.md - - docs/models/operations/getmediametadataextras.md - - docs/models/operations/getmediametadatagenre.md - - docs/models/operations/getmediametadataguids.md - - docs/models/operations/getmediametadatahasthumbnail.md - - docs/models/operations/getmediametadataimage.md - - docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md - - docs/models/operations/getmediametadatalibrarytype.md - - docs/models/operations/getmediametadatalocation.md - - docs/models/operations/getmediametadatamarker.md - - docs/models/operations/getmediametadatamedia.md - - docs/models/operations/getmediametadatamediacontainer.md - - docs/models/operations/getmediametadatametadata.md - - docs/models/operations/getmediametadataoptimizedforstreaming.md - - docs/models/operations/getmediametadataoptimizedforstreaming1.md - - docs/models/operations/getmediametadataoptimizedforstreaminglibrary1.md - - docs/models/operations/getmediametadatapart.md - - docs/models/operations/getmediametadataproducer.md - - docs/models/operations/getmediametadataratings.md - - docs/models/operations/getmediametadatarequest.md - - docs/models/operations/getmediametadataresponse.md - - docs/models/operations/getmediametadataresponsebody.md - - docs/models/operations/getmediametadatarole.md - - docs/models/operations/getmediametadatasimilar.md - - docs/models/operations/getmediametadatastream.md - - docs/models/operations/getmediametadatatype.md - - docs/models/operations/getmediametadataultrablurcolors.md - - docs/models/operations/getmediametadatawriter.md - - docs/models/operations/getmediapostersmediacontainer.md - - docs/models/operations/getmediapostersmetadata.md - - docs/models/operations/getmediapostersrequest.md - - docs/models/operations/getmediapostersresponse.md - - docs/models/operations/getmediapostersresponsebody.md - - docs/models/operations/getmediaprovidersdirectory.md - - docs/models/operations/getmediaprovidersmediacontainer.md - - docs/models/operations/getmediaprovidersrequest.md - - docs/models/operations/getmediaprovidersresponse.md - - docs/models/operations/getmediaprovidersresponsebody.md - - docs/models/operations/getmetadatachildrendirectory.md - - docs/models/operations/getmetadatachildrenmediacontainer.md - - docs/models/operations/getmetadatachildrenmetadata.md - - docs/models/operations/getmetadatachildrenrequest.md - - docs/models/operations/getmetadatachildrenresponse.md - - docs/models/operations/getmetadatachildrenresponsebody.md - - docs/models/operations/getmyplexaccountresponse.md - - docs/models/operations/getmyplexaccountresponsebody.md - - docs/models/operations/getpinauthpincontainer.md - - docs/models/operations/getpinrequest.md - - docs/models/operations/getpinresponse.md - - docs/models/operations/getplaylistcontentscountry.md - - docs/models/operations/getplaylistcontentsdirector.md - - docs/models/operations/getplaylistcontentsgenre.md - - docs/models/operations/getplaylistcontentsmedia.md - - docs/models/operations/getplaylistcontentsmediacontainer.md - - docs/models/operations/getplaylistcontentsmetadata.md - - docs/models/operations/getplaylistcontentspart.md - - docs/models/operations/getplaylistcontentsqueryparamtype.md - - docs/models/operations/getplaylistcontentsrequest.md - - docs/models/operations/getplaylistcontentsresponse.md - - docs/models/operations/getplaylistcontentsresponsebody.md - - docs/models/operations/getplaylistcontentsrole.md - - docs/models/operations/getplaylistcontentswriter.md - - docs/models/operations/getplaylistmediacontainer.md - - docs/models/operations/getplaylistmetadata.md + - docs/models/operations/getlibrarymatchesglobals.md + - docs/models/operations/getlibrarymatchesrequest.md + - docs/models/operations/getlibrarymatchesresponse.md + - docs/models/operations/getlineupchannelsglobals.md + - docs/models/operations/getlineupchannelsmediacontainer.md + - docs/models/operations/getlineupchannelsrequest.md + - docs/models/operations/getlineupchannelsresponse.md + - docs/models/operations/getlineupchannelsresponsebody.md + - docs/models/operations/getlineupglobals.md + - docs/models/operations/getlineuprequest.md + - docs/models/operations/getlineupresponse.md + - docs/models/operations/getlivetvsessionglobals.md + - docs/models/operations/getlivetvsessionrequest.md + - docs/models/operations/getlivetvsessionresponse.md + - docs/models/operations/getmediapartglobals.md + - docs/models/operations/getmediapartrequest.md + - docs/models/operations/getmediapartresponse.md + - docs/models/operations/getmetadatahubsglobals.md + - docs/models/operations/getmetadatahubsrequest.md + - docs/models/operations/getmetadatahubsresponse.md + - docs/models/operations/getmetadataitemglobals.md + - docs/models/operations/getmetadataitemrequest.md + - docs/models/operations/getmetadataitemresponse.md + - docs/models/operations/getnotificationsglobals.md + - docs/models/operations/getnotificationsrequest.md + - docs/models/operations/getnotificationsresponse.md + - docs/models/operations/getpartindexglobals.md + - docs/models/operations/getpartindexrequest.md + - docs/models/operations/getpartindexresponse.md + - docs/models/operations/getpersonglobals.md + - docs/models/operations/getpersonmediacontainer.md + - docs/models/operations/getpersonrequest.md + - docs/models/operations/getpersonresponse.md + - docs/models/operations/getpersonresponsebody.md + - docs/models/operations/getplaylistgeneratordevice.md + - docs/models/operations/getplaylistgeneratorglobals.md + - docs/models/operations/getplaylistgeneratoritem.md + - docs/models/operations/getplaylistgeneratoritemsglobals.md + - docs/models/operations/getplaylistgeneratoritemsmediacontainer.md + - docs/models/operations/getplaylistgeneratoritemsmetadata.md + - docs/models/operations/getplaylistgeneratoritemsrequest.md + - docs/models/operations/getplaylistgeneratoritemsresponse.md + - docs/models/operations/getplaylistgeneratoritemsresponsebody.md + - docs/models/operations/getplaylistgeneratorlocation.md + - docs/models/operations/getplaylistgeneratormediacontainer.md + - docs/models/operations/getplaylistgeneratorpolicy.md + - docs/models/operations/getplaylistgeneratorrequest.md + - docs/models/operations/getplaylistgeneratorresponse.md + - docs/models/operations/getplaylistgeneratorresponsebody.md + - docs/models/operations/getplaylistgeneratorscope.md + - docs/models/operations/getplaylistgeneratorsglobals.md + - docs/models/operations/getplaylistgeneratorsmediacontainer.md + - docs/models/operations/getplaylistgeneratorsrequest.md + - docs/models/operations/getplaylistgeneratorsresponse.md + - docs/models/operations/getplaylistgeneratorsresponsebody.md + - docs/models/operations/getplaylistgeneratorstate.md + - docs/models/operations/getplaylistgeneratorstatus.md + - docs/models/operations/getplaylistgeneratorstype.md + - docs/models/operations/getplaylistgeneratorsubtitles.md + - docs/models/operations/getplaylistgeneratortype.md + - docs/models/operations/getplaylistglobals.md + - docs/models/operations/getplaylistitemsglobals.md + - docs/models/operations/getplaylistitemsrequest.md + - docs/models/operations/getplaylistitemsresponse.md - docs/models/operations/getplaylistrequest.md - docs/models/operations/getplaylistresponse.md - - docs/models/operations/getplaylistresponsebody.md - - docs/models/operations/getplaylistsmediacontainer.md - - docs/models/operations/getplaylistsmetadata.md - - docs/models/operations/getplaylistsrequest.md - - docs/models/operations/getplaylistsresponse.md - - docs/models/operations/getplaylistsresponsebody.md - - docs/models/operations/getrecentlyaddedactivedirection.md - - docs/models/operations/getrecentlyaddeddefaultdirection.md - - docs/models/operations/getrecentlyaddedfield.md - - docs/models/operations/getrecentlyaddedfieldtype.md - - docs/models/operations/getrecentlyaddedfilter.md - - docs/models/operations/getrecentlyaddedhubsresponsetype.md - - docs/models/operations/getrecentlyaddedhubstype.md - - docs/models/operations/getrecentlyaddedimage.md - - docs/models/operations/getrecentlyaddedlibrarycountry.md - - docs/models/operations/getrecentlyaddedlibrarydirector.md - - docs/models/operations/getrecentlyaddedlibraryfilter.md - - docs/models/operations/getrecentlyaddedlibrarygenre.md - - docs/models/operations/getrecentlyaddedlibrarymedia.md - - docs/models/operations/getrecentlyaddedlibrarymediacontainer.md - - docs/models/operations/getrecentlyaddedlibrarymetadata.md - - docs/models/operations/getrecentlyaddedlibrarypart.md - - docs/models/operations/getrecentlyaddedlibraryrequest.md - - docs/models/operations/getrecentlyaddedlibraryresponse.md - - docs/models/operations/getrecentlyaddedlibraryresponsebody.md - - docs/models/operations/getrecentlyaddedlibraryrole.md - - docs/models/operations/getrecentlyaddedlibrarytype.md - - docs/models/operations/getrecentlyaddedlibrarywriter.md - - docs/models/operations/getrecentlyaddedmediacontainer.md - - docs/models/operations/getrecentlyaddedmetadata.md - - docs/models/operations/getrecentlyaddedoperator.md - - docs/models/operations/getrecentlyaddedoptimizedforstreaming.md - - docs/models/operations/getrecentlyaddedoptimizedforstreaming1.md - - docs/models/operations/getrecentlyaddedrequest.md - - docs/models/operations/getrecentlyaddedresponse.md - - docs/models/operations/getrecentlyaddedresponsebody.md - - docs/models/operations/getrecentlyaddedsort.md - - docs/models/operations/getrecentlyaddedtype.md - - docs/models/operations/getrefreshlibrarymetadatarequest.md - - docs/models/operations/getrefreshlibrarymetadataresponse.md - - docs/models/operations/getresizedphotorequest.md - - docs/models/operations/getresizedphotoresponse.md - - docs/models/operations/getresourcesstatisticsmediacontainer.md - - docs/models/operations/getresourcesstatisticsrequest.md - - docs/models/operations/getresourcesstatisticsresponse.md - - docs/models/operations/getresourcesstatisticsresponsebody.md - - docs/models/operations/getsearchalllibrariescountry.md - - docs/models/operations/getsearchalllibrariesdirector.md - - docs/models/operations/getsearchalllibrariesdirectory.md - - docs/models/operations/getsearchalllibrariesflattenseasons.md - - docs/models/operations/getsearchalllibrariesgenre.md - - docs/models/operations/getsearchalllibrariesguids.md - - docs/models/operations/getsearchalllibrarieshasthumbnail.md - - docs/models/operations/getsearchalllibrariesimage.md - - docs/models/operations/getsearchalllibrarieslibraryoptimizedforstreaming.md - - docs/models/operations/getsearchalllibrarieslibrarytype.md - - docs/models/operations/getsearchalllibrarieslocation.md - - docs/models/operations/getsearchalllibrariesmedia.md - - docs/models/operations/getsearchalllibrariesmediacontainer.md - - docs/models/operations/getsearchalllibrariesmetadata.md - - docs/models/operations/getsearchalllibrariesoptimizedforstreaming.md - - docs/models/operations/getsearchalllibrariesoptimizedforstreaming1.md - - docs/models/operations/getsearchalllibrariesoptimizedforstreaminglibrary1.md - - docs/models/operations/getsearchalllibrariespart.md - - docs/models/operations/getsearchalllibrariesqueryparamincludecollections.md - - docs/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md - - docs/models/operations/getsearchalllibrariesrequest.md - - docs/models/operations/getsearchalllibrariesresponse.md - - docs/models/operations/getsearchalllibrariesresponsebody.md - - docs/models/operations/getsearchalllibrariesrole.md - - docs/models/operations/getsearchalllibrariesshowordering.md - - docs/models/operations/getsearchalllibrariestype.md - - docs/models/operations/getsearchalllibrariesultrablurcolors.md - - docs/models/operations/getsearchalllibrarieswriter.md - - docs/models/operations/getsearchlibrarymediacontainer.md - - docs/models/operations/getsearchlibrarymetadata.md - - docs/models/operations/getsearchlibraryqueryparamtype.md - - docs/models/operations/getsearchlibraryrequest.md - - docs/models/operations/getsearchlibraryresponse.md - - docs/models/operations/getsearchlibraryresponsebody.md - - docs/models/operations/getsearchresultscountry.md - - docs/models/operations/getsearchresultsdirector.md - - docs/models/operations/getsearchresultsgenre.md - - docs/models/operations/getsearchresultsmedia.md - - docs/models/operations/getsearchresultsmediacontainer.md - - docs/models/operations/getsearchresultsmetadata.md - - docs/models/operations/getsearchresultspart.md - - docs/models/operations/getsearchresultsrequest.md - - docs/models/operations/getsearchresultsresponse.md - - docs/models/operations/getsearchresultsresponsebody.md - - docs/models/operations/getsearchresultsrole.md - - docs/models/operations/getsearchresultswriter.md - - docs/models/operations/getserveractivitiesmediacontainer.md - - docs/models/operations/getserveractivitiesresponse.md - - docs/models/operations/getserveractivitiesresponsebody.md - - docs/models/operations/getservercapabilitiesresponse.md - - docs/models/operations/getservercapabilitiesresponsebody.md - - docs/models/operations/getserveridentitymediacontainer.md - - docs/models/operations/getserveridentityresponse.md - - docs/models/operations/getserveridentityresponsebody.md - - docs/models/operations/getserverlistmediacontainer.md - - docs/models/operations/getserverlistresponse.md - - docs/models/operations/getserverlistresponsebody.md - - docs/models/operations/getserverlistserver.md - - docs/models/operations/getserverpreferencesmediacontainer.md - - docs/models/operations/getserverpreferencesresponse.md - - docs/models/operations/getserverpreferencesresponsebody.md - - docs/models/operations/getserverresourcesrequest.md - - docs/models/operations/getserverresourcesresponse.md - - docs/models/operations/getsessionhistorymediacontainer.md - - docs/models/operations/getsessionhistorymetadata.md - - docs/models/operations/getsessionhistoryrequest.md - - docs/models/operations/getsessionhistoryresponse.md - - docs/models/operations/getsessionhistoryresponsebody.md - - docs/models/operations/getsessionsmedia.md - - docs/models/operations/getsessionsmediacontainer.md - - docs/models/operations/getsessionsmetadata.md - - docs/models/operations/getsessionspart.md + - docs/models/operations/getplayqueueglobals.md + - docs/models/operations/getplayqueuerequest.md + - docs/models/operations/getplayqueueresponse.md + - docs/models/operations/getpostplayhubsglobals.md + - docs/models/operations/getpostplayhubsrequest.md + - docs/models/operations/getpostplayhubsresponse.md + - docs/models/operations/getpreferenceglobals.md + - docs/models/operations/getpreferencerequest.md + - docs/models/operations/getpreferenceresponse.md + - docs/models/operations/getpromotedhubsglobals.md + - docs/models/operations/getpromotedhubsmediacontainer.md + - docs/models/operations/getpromotedhubsrequest.md + - docs/models/operations/getpromotedhubsresponse.md + - docs/models/operations/getpromotedhubsresponsebody.md + - docs/models/operations/getrandomartworkglobals.md + - docs/models/operations/getrandomartworkrequest.md + - docs/models/operations/getrandomartworkresponse.md + - docs/models/operations/getrelatedhubsglobals.md + - docs/models/operations/getrelatedhubsrequest.md + - docs/models/operations/getrelatedhubsresponse.md + - docs/models/operations/getrelateditemsglobals.md + - docs/models/operations/getrelateditemsmediacontainer.md + - docs/models/operations/getrelateditemsrequest.md + - docs/models/operations/getrelateditemsresponse.md + - docs/models/operations/getrelateditemsresponsebody.md + - docs/models/operations/getscheduledrecordingsmediacontainer.md + - docs/models/operations/getscheduledrecordingsresponse.md + - docs/models/operations/getscheduledrecordingsresponsebody.md + - docs/models/operations/getsectionfiltersglobals.md + - docs/models/operations/getsectionfiltersmediacontainer.md + - docs/models/operations/getsectionfiltersrequest.md + - docs/models/operations/getsectionfiltersresponse.md + - docs/models/operations/getsectionfiltersresponsebody.md + - docs/models/operations/getsectionhubsglobals.md + - docs/models/operations/getsectionhubsmediacontainer.md + - docs/models/operations/getsectionhubsrequest.md + - docs/models/operations/getsectionhubsresponse.md + - docs/models/operations/getsectionhubsresponsebody.md + - docs/models/operations/getsectionimageglobals.md + - docs/models/operations/getsectionimagerequest.md + - docs/models/operations/getsectionimageresponse.md + - docs/models/operations/getsectionpreferencesglobals.md + - docs/models/operations/getsectionpreferencesrequest.md + - docs/models/operations/getsectionpreferencesresponse.md + - docs/models/operations/getsectionsmediacontainer.md + - docs/models/operations/getsectionsprefsglobals.md + - docs/models/operations/getsectionsprefsrequest.md + - docs/models/operations/getsectionsprefsresponse.md + - docs/models/operations/getsectionsresponse.md + - docs/models/operations/getsectionsresponsebody.md + - docs/models/operations/getserverinfoglobals.md + - docs/models/operations/getserverinforequest.md + - docs/models/operations/getserverinforesponse.md + - docs/models/operations/getsessionplaylistindexglobals.md + - docs/models/operations/getsessionplaylistindexrequest.md + - docs/models/operations/getsessionplaylistindexresponse.md + - docs/models/operations/getsessionsegmentglobals.md + - docs/models/operations/getsessionsegmentrequest.md + - docs/models/operations/getsessionsegmentresponse.md - docs/models/operations/getsessionsresponse.md - - docs/models/operations/getsessionsresponsebody.md - - docs/models/operations/getsessionsstream.md - - docs/models/operations/getsessionsuser.md + - docs/models/operations/getsonicallysimilarglobals.md + - docs/models/operations/getsonicallysimilarrequest.md + - docs/models/operations/getsonicallysimilarresponse.md + - docs/models/operations/getsonicpathglobals.md + - docs/models/operations/getsonicpathrequest.md + - docs/models/operations/getsonicpathresponse.md + - docs/models/operations/getsourceconnectioninformationglobals.md + - docs/models/operations/getsourceconnectioninformationmediacontainer.md - docs/models/operations/getsourceconnectioninformationrequest.md - docs/models/operations/getsourceconnectioninformationresponse.md - - docs/models/operations/getstatisticsdevice.md - - docs/models/operations/getstatisticsmediacontainer.md - - docs/models/operations/getstatisticsrequest.md - - docs/models/operations/getstatisticsresponse.md - - docs/models/operations/getstatisticsresponsebody.md - - docs/models/operations/getthumbimagerequest.md - - docs/models/operations/getthumbimageresponse.md - - docs/models/operations/gettimelinerequest.md - - docs/models/operations/gettimelineresponse.md - - docs/models/operations/gettokenbypinidauthpincontainer.md - - docs/models/operations/gettokenbypinidgeodata.md - - docs/models/operations/gettokenbypinidrequest.md - - docs/models/operations/gettokenbypinidresponse.md - - docs/models/operations/gettokendetailsauthenticationresponsestatus.md - - docs/models/operations/gettokendetailsauthenticationstatus.md - - docs/models/operations/gettokendetailsresponse.md - - docs/models/operations/gettokendetailsstatus.md - - docs/models/operations/gettokendetailssubscription.md - - docs/models/operations/gettokendetailsuserplexaccount.md - - docs/models/operations/gettopwatchedcontentcountry.md - - docs/models/operations/gettopwatchedcontentgenre.md - - docs/models/operations/gettopwatchedcontentguids.md - - docs/models/operations/gettopwatchedcontentmediacontainer.md - - docs/models/operations/gettopwatchedcontentmetadata.md - - docs/models/operations/gettopwatchedcontentqueryparamincludeguids.md - - docs/models/operations/gettopwatchedcontentqueryparamtype.md - - docs/models/operations/gettopwatchedcontentrequest.md - - docs/models/operations/gettopwatchedcontentresponse.md - - docs/models/operations/gettopwatchedcontentresponsebody.md - - docs/models/operations/gettopwatchedcontentrole.md - - docs/models/operations/gettopwatchedcontentuser.md - - docs/models/operations/gettranscodesessionsmediacontainer.md - - docs/models/operations/gettranscodesessionsresponse.md - - docs/models/operations/gettranscodesessionsresponsebody.md - - docs/models/operations/gettransienttokenqueryparamtype.md + - docs/models/operations/getsourceconnectioninformationresponsebody.md + - docs/models/operations/getstreamglobals.md + - docs/models/operations/getstreamlevelsglobals.md + - docs/models/operations/getstreamlevelslevel.md + - docs/models/operations/getstreamlevelsmediacontainer.md + - docs/models/operations/getstreamlevelsrequest.md + - docs/models/operations/getstreamlevelsresponse.md + - docs/models/operations/getstreamlevelsresponsebody.md + - docs/models/operations/getstreamloudnessglobals.md + - docs/models/operations/getstreamloudnessrequest.md + - docs/models/operations/getstreamloudnessresponse.md + - docs/models/operations/getstreamrequest.md + - docs/models/operations/getstreamresponse.md + - docs/models/operations/getsubscriptionglobals.md + - docs/models/operations/getsubscriptionrequest.md + - docs/models/operations/getsubscriptionresponse.md + - docs/models/operations/gettagsglobals.md + - docs/models/operations/gettagsmediacontainer.md + - docs/models/operations/gettagsrequest.md + - docs/models/operations/gettagsresponse.md + - docs/models/operations/gettagsresponsebody.md + - docs/models/operations/gettasksresponse.md + - docs/models/operations/gettasksresponsebody.md + - docs/models/operations/gettemplateglobals.md + - docs/models/operations/gettemplatemediacontainer.md + - docs/models/operations/gettemplaterequest.md + - docs/models/operations/gettemplateresponse.md + - docs/models/operations/gettemplateresponsebody.md + - docs/models/operations/getthumbglobals.md + - docs/models/operations/getthumbrequest.md + - docs/models/operations/getthumbresponse.md + - docs/models/operations/gettransienttokenglobals.md + - docs/models/operations/gettransienttokenmediacontainer.md - docs/models/operations/gettransienttokenrequest.md - docs/models/operations/gettransienttokenresponse.md - - docs/models/operations/getupdatestatusmediacontainer.md - - docs/models/operations/getupdatestatusresponse.md - - docs/models/operations/getupdatestatusresponsebody.md - - docs/models/operations/getuserfriendsresponse.md - - docs/models/operations/getusersmediacontainer.md - - docs/models/operations/getusersrequest.md - - docs/models/operations/getusersresponse.md - - docs/models/operations/getusersresponsebody.md - - docs/models/operations/getusersserver.md - - docs/models/operations/getwatchlistrequest.md - - docs/models/operations/getwatchlistresponse.md - - docs/models/operations/getwatchlistresponsebody.md - - docs/models/operations/guids.md - - docs/models/operations/hasthumbnail.md - - docs/models/operations/hidden.md - - docs/models/operations/home.md + - docs/models/operations/gettransienttokenresponsebody.md + - docs/models/operations/getupdatesstatusmediacontainer.md + - docs/models/operations/getupdatesstatusresponse.md + - docs/models/operations/getupdatesstatusresponsebody.md + - docs/models/operations/getupdatesstatusstate.md + - docs/models/operations/hints.md + - docs/models/operations/homevisibility.md - docs/models/operations/hub.md - - docs/models/operations/image.md - - docs/models/operations/includeadvanced.md - - docs/models/operations/includecollections.md - - docs/models/operations/includedetails.md - - docs/models/operations/includeexternalmedia.md - - docs/models/operations/includeguids.md - - docs/models/operations/includehttps.md - - docs/models/operations/includeipv6.md - - docs/models/operations/includemeta.md - - docs/models/operations/includerelay.md - - docs/models/operations/internalpaymentmethod.md + - docs/models/operations/index.md + - docs/models/operations/ingesttransientitemglobals.md + - docs/models/operations/ingesttransientitemrequest.md + - docs/models/operations/ingesttransientitemresponse.md + - docs/models/operations/item.md + - docs/models/operations/language.md - docs/models/operations/level.md - - docs/models/operations/libtype.md + - docs/models/operations/lineup.md + - docs/models/operations/lineuptype.md + - docs/models/operations/listactivitiesmediacontainer.md + - docs/models/operations/listactivitiesresponse.md + - docs/models/operations/listactivitiesresponsebody.md + - docs/models/operations/listcontentglobals.md + - docs/models/operations/listcontentrequest.md + - docs/models/operations/listcontentresponse.md + - docs/models/operations/listdevicesresponse.md + - docs/models/operations/listdownloadqueueitemsglobals.md + - docs/models/operations/listdownloadqueueitemsmediacontainer.md + - docs/models/operations/listdownloadqueueitemsrequest.md + - docs/models/operations/listdownloadqueueitemsresponse.md + - docs/models/operations/listdownloadqueueitemsresponsebody.md + - docs/models/operations/listdownloadqueueitemsstatus.md + - docs/models/operations/listdvrsdvrsmediacontainer.md + - docs/models/operations/listdvrsmediacontainer.md + - docs/models/operations/listdvrsresponse.md + - docs/models/operations/listdvrsresponsebody.md + - docs/models/operations/listhubsglobals.md + - docs/models/operations/listhubsmediacontainer.md + - docs/models/operations/listhubsrequest.md + - docs/models/operations/listhubsresponse.md + - docs/models/operations/listhubsresponsebody.md + - docs/models/operations/listlineupsglobals.md + - docs/models/operations/listlineupsrequest.md + - docs/models/operations/listlineupsresponse.md + - docs/models/operations/listmatchesglobals.md + - docs/models/operations/listmatchesrequest.md + - docs/models/operations/listmatchesresponse.md + - docs/models/operations/listmomentsglobals.md + - docs/models/operations/listmomentsrequest.md + - docs/models/operations/listmomentsresponse.md + - docs/models/operations/listpersonmediaglobals.md + - docs/models/operations/listpersonmediarequest.md + - docs/models/operations/listpersonmediaresponse.md + - docs/models/operations/listplaybackhistoryglobals.md + - docs/models/operations/listplaybackhistorymediacontainer.md + - docs/models/operations/listplaybackhistorymetadata.md + - docs/models/operations/listplaybackhistoryrequest.md + - docs/models/operations/listplaybackhistoryresponse.md + - docs/models/operations/listplaybackhistoryresponsebody.md + - docs/models/operations/listplaylistsglobals.md + - docs/models/operations/listplaylistsrequest.md + - docs/models/operations/listplaylistsresponse.md + - docs/models/operations/listprovidersmediacontainer.md + - docs/models/operations/listprovidersresponse.md + - docs/models/operations/listprovidersresponsebody.md + - docs/models/operations/listsessionsmediacontainer.md + - docs/models/operations/listsessionsresponse.md + - docs/models/operations/listsessionsresponsebody.md + - docs/models/operations/listsimilarglobals.md + - docs/models/operations/listsimilarrequest.md + - docs/models/operations/listsimilarresponse.md + - docs/models/operations/listsonicallysimilarglobals.md + - docs/models/operations/listsonicallysimilarrequest.md + - docs/models/operations/listsonicallysimilarresponse.md + - docs/models/operations/listtopusersglobals.md + - docs/models/operations/listtopusersmediacontainer.md + - docs/models/operations/listtopusersrequest.md + - docs/models/operations/listtopusersresponse.md + - docs/models/operations/listtopusersresponsebody.md - docs/models/operations/location.md - - docs/models/operations/loglinerequest.md - - docs/models/operations/loglineresponse.md - - docs/models/operations/logmultilineresponse.md - - docs/models/operations/mailingliststatus.md - - docs/models/operations/marker.md + - docs/models/operations/makedecisionglobals.md + - docs/models/operations/makedecisionrequest.md + - docs/models/operations/makedecisionresponse.md + - docs/models/operations/markplayedglobals.md - docs/models/operations/markplayedrequest.md - docs/models/operations/markplayedresponse.md - - docs/models/operations/markunplayedrequest.md - - docs/models/operations/markunplayedresponse.md - - docs/models/operations/media.md + - docs/models/operations/matchitemglobals.md + - docs/models/operations/matchitemrequest.md + - docs/models/operations/matchitemresponse.md - docs/models/operations/mediacontainer.md - - docs/models/operations/mediaprovider.md - - docs/models/operations/mediareviewsvisibility.md - - docs/models/operations/meta.md + - docs/models/operations/mediagrabber.md + - docs/models/operations/mediasettings.md + - docs/models/operations/mediasubscription.md + - docs/models/operations/mergeitemsglobals.md + - docs/models/operations/mergeitemsrequest.md + - docs/models/operations/mergeitemsresponse.md - docs/models/operations/metadata.md - - docs/models/operations/minsize.md - - docs/models/operations/myplex.md - - docs/models/operations/one.md - - docs/models/operations/onlytransient.md - - docs/models/operations/operator.md - - docs/models/operations/optimizedforstreaming.md - - docs/models/operations/optimizedforstreaming1.md - - docs/models/operations/owned.md - - docs/models/operations/part.md - - docs/models/operations/pastsubscription.md - - docs/models/operations/pathparamtaskname.md - - docs/models/operations/pending.md - - docs/models/operations/performsearchrequest.md - - docs/models/operations/performsearchresponse.md - - docs/models/operations/performvoicesearchrequest.md - - docs/models/operations/performvoicesearchresponse.md - - docs/models/operations/pivot.md - - docs/models/operations/player.md + - docs/models/operations/modifydeviceglobals.md + - docs/models/operations/modifydevicemediacontainer.md + - docs/models/operations/modifydevicerequest.md + - docs/models/operations/modifydeviceresponse.md + - docs/models/operations/modifydeviceresponsebody.md + - docs/models/operations/modifyplaylistgeneratorglobals.md + - docs/models/operations/modifyplaylistgeneratorqueryparamlocation.md + - docs/models/operations/modifyplaylistgeneratorrequest.md + - docs/models/operations/modifyplaylistgeneratorresponse.md + - docs/models/operations/movecollectionitemglobals.md + - docs/models/operations/movecollectionitemrequest.md + - docs/models/operations/movecollectionitemresponse.md + - docs/models/operations/movehubglobals.md + - docs/models/operations/movehubrequest.md + - docs/models/operations/movehubresponse.md + - docs/models/operations/moveplaylistitemglobals.md + - docs/models/operations/moveplaylistitemrequest.md + - docs/models/operations/moveplaylistitemresponse.md + - docs/models/operations/moveplayqueueitemglobals.md + - docs/models/operations/moveplayqueueitemrequest.md + - docs/models/operations/moveplayqueueitemresponse.md + - docs/models/operations/optimizedatabaseglobals.md + - docs/models/operations/optimizedatabaserequest.md + - docs/models/operations/optimizedatabaseresponse.md + - docs/models/operations/params.md + - docs/models/operations/pathparamelement.md + - docs/models/operations/pathparamindex.md + - docs/models/operations/pathparamtask.md - docs/models/operations/playlisttype.md - - docs/models/operations/plexdevice.md - - docs/models/operations/postmediaartsrequest.md - - docs/models/operations/postmediaartsresponse.md - - docs/models/operations/postmediaposterrequest.md - - docs/models/operations/postmediaposterresponse.md - - docs/models/operations/postuserssignindataauthenticationresponsestatus.md - - docs/models/operations/postuserssignindataauthenticationstatus.md - - docs/models/operations/postuserssignindataauthenticationsubscription.md - - docs/models/operations/postuserssignindataautoselectsubtitle.md - - docs/models/operations/postuserssignindatadefaultsubtitleaccessibility.md - - docs/models/operations/postuserssignindatadefaultsubtitleforced.md - - docs/models/operations/postuserssignindatamailingliststatus.md - - docs/models/operations/postuserssignindatamediareviewsvisibility.md - - docs/models/operations/postuserssignindatarequest.md - - docs/models/operations/postuserssignindatarequestbody.md - - docs/models/operations/postuserssignindataresponse.md - - docs/models/operations/postuserssignindataservices.md - - docs/models/operations/postuserssignindatastate.md - - docs/models/operations/postuserssignindatastatus.md - - docs/models/operations/postuserssignindatasubscription.md - - docs/models/operations/postuserssignindatauserplexaccount.md - - docs/models/operations/postuserssignindatauserprofile.md - - docs/models/operations/postuserssignindatawatchedindicator.md - - docs/models/operations/producer.md - - docs/models/operations/protected.md + - docs/models/operations/playqueuegenerator.md + - docs/models/operations/policy.md + - docs/models/operations/prefs.md + - docs/models/operations/processingstate.md + - docs/models/operations/processingstatecontext.md + - docs/models/operations/processsubscriptionsresponse.md - docs/models/operations/protocol.md - - docs/models/operations/provider.md - - docs/models/operations/queryparamfilter.md - - docs/models/operations/queryparamforce.md - - docs/models/operations/queryparamincludecollections.md - - docs/models/operations/queryparamincludeexternalmedia.md - - docs/models/operations/queryparamincludeguids.md - - docs/models/operations/queryparamincludemeta.md - - docs/models/operations/queryparamonlytransient.md - - docs/models/operations/queryparamsmart.md + - docs/models/operations/queryparamargs.md + - docs/models/operations/queryparamattributes.md + - docs/models/operations/queryparamlocation.md + - docs/models/operations/queryparamprefs.md + - docs/models/operations/queryparamprotocol.md + - docs/models/operations/queryparamscope.md + - docs/models/operations/queryparamsubtitles.md - docs/models/operations/queryparamtype.md - - docs/models/operations/rating.md - - docs/models/operations/ratings.md + - docs/models/operations/recommendationsvisibility.md + - docs/models/operations/refreshitemsmetadataglobals.md + - docs/models/operations/refreshitemsmetadatarequest.md + - docs/models/operations/refreshitemsmetadataresponse.md + - docs/models/operations/refreshplaylistglobals.md + - docs/models/operations/refreshplaylistrequest.md + - docs/models/operations/refreshplaylistresponse.md + - docs/models/operations/refreshprovidersresponse.md + - docs/models/operations/refreshsectionglobals.md + - docs/models/operations/refreshsectionrequest.md + - docs/models/operations/refreshsectionresponse.md + - docs/models/operations/refreshsectionsmetadataglobals.md + - docs/models/operations/refreshsectionsmetadatarequest.md + - docs/models/operations/refreshsectionsmetadataresponse.md - docs/models/operations/release.md - - docs/models/operations/responsebody.md - - docs/models/operations/restricted.md - - docs/models/operations/role.md + - docs/models/operations/reloadguideglobals.md + - docs/models/operations/reloadguiderequest.md + - docs/models/operations/reloadguideresponse.md + - docs/models/operations/removedevicefromdvrdvr.md + - docs/models/operations/removedevicefromdvrdvrsmediacontainer.md + - docs/models/operations/removedevicefromdvrglobals.md + - docs/models/operations/removedevicefromdvrmediacontainer.md + - docs/models/operations/removedevicefromdvrrequest.md + - docs/models/operations/removedevicefromdvrresponse.md + - docs/models/operations/removedevicefromdvrresponsebody.md + - docs/models/operations/removedeviceglobals.md + - docs/models/operations/removedevicemediacontainer.md + - docs/models/operations/removedevicerequest.md + - docs/models/operations/removedeviceresponse.md + - docs/models/operations/removedeviceresponsebody.md + - docs/models/operations/removedownloadqueueitemsglobals.md + - docs/models/operations/removedownloadqueueitemsrequest.md + - docs/models/operations/removedownloadqueueitemsresponse.md + - docs/models/operations/reordersubscriptionglobals.md + - docs/models/operations/reordersubscriptionrequest.md + - docs/models/operations/reordersubscriptionresponse.md + - docs/models/operations/reportglobals.md + - docs/models/operations/reportrequest.md + - docs/models/operations/reportresponse.md + - docs/models/operations/reportresponsebody.md + - docs/models/operations/resetplayqueueglobals.md + - docs/models/operations/resetplayqueuerequest.md + - docs/models/operations/resetplayqueueresponse.md + - docs/models/operations/resetsectiondefaultsglobals.md + - docs/models/operations/resetsectiondefaultsrequest.md + - docs/models/operations/resetsectiondefaultsresponse.md + - docs/models/operations/restartprocessingdownloadqueueitemsglobals.md + - docs/models/operations/restartprocessingdownloadqueueitemsrequest.md + - docs/models/operations/restartprocessingdownloadqueueitemsresponse.md + - docs/models/operations/scanglobals.md + - docs/models/operations/scanrequest.md + - docs/models/operations/scanresponse.md - docs/models/operations/scope.md - - docs/models/operations/searchresult.md - - docs/models/operations/searchtypes.md - - docs/models/operations/server.md - - docs/models/operations/services.md - - docs/models/operations/session.md - - docs/models/operations/setting.md - - docs/models/operations/sharedservers.md - - docs/models/operations/sharedsources.md - - docs/models/operations/showordering.md - - docs/models/operations/similar.md - - docs/models/operations/skip.md - - docs/models/operations/smart.md - - docs/models/operations/sort.md - - docs/models/operations/startalltasksresponse.md + - docs/models/operations/searchhubsglobals.md + - docs/models/operations/searchhubsmediacontainer.md + - docs/models/operations/searchhubsrequest.md + - docs/models/operations/searchhubsresponse.md + - docs/models/operations/searchhubsresponsebody.md + - docs/models/operations/setchannelmapglobals.md + - docs/models/operations/setchannelmaprequest.md + - docs/models/operations/setchannelmapresponse.md + - docs/models/operations/setdevicepreferencesglobals.md + - docs/models/operations/setdevicepreferencesrequest.md + - docs/models/operations/setdevicepreferencesresponse.md + - docs/models/operations/setdvrpreferencesdvr.md + - docs/models/operations/setdvrpreferencesdvrsmediacontainer.md + - docs/models/operations/setdvrpreferencesglobals.md + - docs/models/operations/setdvrpreferencesmediacontainer.md + - docs/models/operations/setdvrpreferencesrequest.md + - docs/models/operations/setdvrpreferencesresponse.md + - docs/models/operations/setdvrpreferencesresponsebody.md + - docs/models/operations/setitemartworkglobals.md + - docs/models/operations/setitemartworkrequest.md + - docs/models/operations/setitemartworkresponse.md + - docs/models/operations/setitempreferencesglobals.md + - docs/models/operations/setitempreferencesrequest.md + - docs/models/operations/setitempreferencesresponse.md + - docs/models/operations/setpreferencesglobals.md + - docs/models/operations/setpreferencesrequest.md + - docs/models/operations/setpreferencesresponse.md + - docs/models/operations/setratingglobals.md + - docs/models/operations/setratingrequest.md + - docs/models/operations/setratingresponse.md + - docs/models/operations/setsectionpreferencesglobals.md + - docs/models/operations/setsectionpreferencesqueryparamprefs.md + - docs/models/operations/setsectionpreferencesrequest.md + - docs/models/operations/setsectionpreferencesresponse.md + - docs/models/operations/setstreamoffsetglobals.md + - docs/models/operations/setstreamoffsetrequest.md + - docs/models/operations/setstreamoffsetresponse.md + - docs/models/operations/setstreamselectionglobals.md + - docs/models/operations/setstreamselectionrequest.md + - docs/models/operations/setstreamselectionresponse.md + - docs/models/operations/shuffleglobals.md + - docs/models/operations/shufflerequest.md + - docs/models/operations/shuffleresponse.md + - docs/models/operations/splititemglobals.md + - docs/models/operations/splititemrequest.md + - docs/models/operations/splititemresponse.md + - docs/models/operations/startanalysisglobals.md + - docs/models/operations/startanalysisrequest.md + - docs/models/operations/startanalysisresponse.md + - docs/models/operations/startbifgenerationglobals.md + - docs/models/operations/startbifgenerationrequest.md + - docs/models/operations/startbifgenerationresponse.md + - docs/models/operations/starttaskglobals.md - docs/models/operations/starttaskrequest.md - docs/models/operations/starttaskresponse.md - - docs/models/operations/startuniversaltranscoderequest.md - - docs/models/operations/startuniversaltranscoderesponse.md + - docs/models/operations/starttasksresponse.md + - docs/models/operations/starttranscodesessionglobals.md + - docs/models/operations/starttranscodesessionqueryparamlocation.md + - docs/models/operations/starttranscodesessionqueryparamprotocol.md + - docs/models/operations/starttranscodesessionqueryparamsubtitles.md + - docs/models/operations/starttranscodesessionrequest.md + - docs/models/operations/starttranscodesessionresponse.md - docs/models/operations/state.md - - docs/models/operations/statisticsbandwidth.md - - docs/models/operations/statisticsmedia.md - - docs/models/operations/statisticsresources.md - docs/models/operations/status.md - - docs/models/operations/stopalltasksresponse.md + - docs/models/operations/stopallrefreshesresponse.md + - docs/models/operations/stopdvrreloadglobals.md + - docs/models/operations/stopdvrreloadrequest.md + - docs/models/operations/stopdvrreloadresponse.md + - docs/models/operations/stopscanglobals.md + - docs/models/operations/stopscanrequest.md + - docs/models/operations/stopscanresponse.md + - docs/models/operations/stoptaskglobals.md - docs/models/operations/stoptaskrequest.md - docs/models/operations/stoptaskresponse.md - - docs/models/operations/stoptranscodesessionrequest.md - - docs/models/operations/stoptranscodesessionresponse.md - - docs/models/operations/stream.md - - docs/models/operations/subscription.md - - docs/models/operations/tag.md - - docs/models/operations/taskname.md - - docs/models/operations/tonight.md - - docs/models/operations/transcodesession.md - - docs/models/operations/trials.md + - docs/models/operations/stoptasksresponse.md + - docs/models/operations/subscriptiontemplate.md + - docs/models/operations/subtitles.md + - docs/models/operations/task.md + - docs/models/operations/terminatesessionglobals.md + - docs/models/operations/terminatesessionrequest.md + - docs/models/operations/terminatesessionresponse.md + - docs/models/operations/transcode.md + - docs/models/operations/transcodeimageglobals.md + - docs/models/operations/transcodeimagerequest.md + - docs/models/operations/transcodeimageresponse.md + - docs/models/operations/transcodejob.md + - docs/models/operations/transcodesubtitlesglobals.md + - docs/models/operations/transcodesubtitlesrequest.md + - docs/models/operations/transcodesubtitlesresponse.md + - docs/models/operations/triggerfallbackglobals.md + - docs/models/operations/triggerfallbackrequest.md + - docs/models/operations/triggerfallbackresponse.md + - docs/models/operations/tunechannelglobals.md + - docs/models/operations/tunechannelrequest.md + - docs/models/operations/tunechannelresponse.md - docs/models/operations/type.md - docs/models/operations/ultrablurcolors.md + - docs/models/operations/unmatchglobals.md + - docs/models/operations/unmatchrequest.md + - docs/models/operations/unmatchresponse.md + - docs/models/operations/unscrobbleglobals.md + - docs/models/operations/unscrobblerequest.md + - docs/models/operations/unscrobbleresponse.md + - docs/models/operations/unshuffleglobals.md + - docs/models/operations/unshufflerequest.md + - docs/models/operations/unshuffleresponse.md + - docs/models/operations/updatehubvisibilityglobals.md + - docs/models/operations/updatehubvisibilityrequest.md + - docs/models/operations/updatehubvisibilityresponse.md + - docs/models/operations/updateitemartworkglobals.md + - docs/models/operations/updateitemartworkrequest.md + - docs/models/operations/updateitemartworkresponse.md + - docs/models/operations/updateitemsglobals.md + - docs/models/operations/updateitemsrequest.md + - docs/models/operations/updateitemsresponse.md + - docs/models/operations/updateplaylistglobals.md - docs/models/operations/updateplaylistrequest.md - docs/models/operations/updateplaylistresponse.md - - docs/models/operations/updateplayprogressrequest.md - - docs/models/operations/updateplayprogressresponse.md + - docs/models/operations/uploadplaylistglobals.md - docs/models/operations/uploadplaylistrequest.md - docs/models/operations/uploadplaylistresponse.md - - docs/models/operations/upscale.md - - docs/models/operations/user.md - - docs/models/operations/userprofile.md - - docs/models/operations/watchedindicator.md - - docs/models/operations/writer.md + - docs/models/operations/voicesearchhubsglobals.md + - docs/models/operations/voicesearchhubsmediacontainer.md + - docs/models/operations/voicesearchhubsrequest.md + - docs/models/operations/voicesearchhubsresponse.md + - docs/models/operations/voicesearchhubsresponsebody.md + - docs/models/operations/writelogresponse.md + - docs/models/operations/writemessageglobals.md + - docs/models/operations/writemessagerequest.md + - docs/models/operations/writemessageresponse.md - docs/models/utils/retryconfig.md - docs/sdks/activities/README.md - - docs/sdks/authentication/README.md - docs/sdks/butler/README.md + - docs/sdks/collections/README.md + - docs/sdks/content/README.md + - docs/sdks/devices/README.md + - docs/sdks/downloadqueue/README.md + - docs/sdks/dvrs/README.md + - docs/sdks/epg/README.md + - docs/sdks/events/README.md + - docs/sdks/general/README.md - docs/sdks/hubs/README.md - docs/sdks/library/README.md + - docs/sdks/librarycollections/README.md + - docs/sdks/libraryplaylists/README.md + - docs/sdks/livetv/README.md - docs/sdks/log/README.md - - docs/sdks/media/README.md - - docs/sdks/playlists/README.md - - docs/sdks/plex/README.md - - docs/sdks/plexapi/README.md + - docs/sdks/playlist/README.md + - docs/sdks/playqueue/README.md + - docs/sdks/preferences/README.md + - docs/sdks/provider/README.md + - docs/sdks/rate/README.md - docs/sdks/search/README.md - - docs/sdks/server/README.md - - docs/sdks/sessions/README.md - - docs/sdks/statistics/README.md + - docs/sdks/status/README.md + - docs/sdks/subscriptions/README.md + - docs/sdks/timeline/README.md + - docs/sdks/transcoder/README.md + - docs/sdks/ultrablur/README.md - docs/sdks/updater/README.md - - docs/sdks/users/README.md - - docs/sdks/video/README.md - - docs/sdks/watchlist/README.md - poetry.toml - py.typed - pylintrc @@ -983,199 +1090,338 @@ generatedFiles: - src/plex_api_client/_hooks/types.py - src/plex_api_client/_version.py - src/plex_api_client/activities.py - - src/plex_api_client/authentication.py - src/plex_api_client/basesdk.py - src/plex_api_client/butler.py + - src/plex_api_client/collections.py + - src/plex_api_client/content.py + - src/plex_api_client/devices.py + - src/plex_api_client/download_queue.py + - src/plex_api_client/dvrs.py + - src/plex_api_client/epg.py + - src/plex_api_client/events.py + - src/plex_api_client/general.py - src/plex_api_client/httpclient.py - src/plex_api_client/hubs.py - src/plex_api_client/library.py + - src/plex_api_client/library_collections.py + - src/plex_api_client/library_playlists.py + - src/plex_api_client/live_tv.py - src/plex_api_client/log.py - - src/plex_api_client/media.py - src/plex_api_client/models/__init__.py - src/plex_api_client/models/components/__init__.py + - src/plex_api_client/models/components/accepts.py + - src/plex_api_client/models/components/advancedsubtitles.py + - src/plex_api_client/models/components/boolint.py + - src/plex_api_client/models/components/channel.py + - src/plex_api_client/models/components/channelmapping.py + - src/plex_api_client/models/components/composite.py + - src/plex_api_client/models/components/device.py + - src/plex_api_client/models/components/directory.py + - src/plex_api_client/models/components/dvrrequesthandler_slash_get_responses_200.py + - src/plex_api_client/models/components/filter_.py + - src/plex_api_client/models/components/get_responses_200.py + - src/plex_api_client/models/components/historyall_get_responses_200.py + - src/plex_api_client/models/components/hub.py + - src/plex_api_client/models/components/image.py + - src/plex_api_client/models/components/items.py + - src/plex_api_client/models/components/librarysection.py + - src/plex_api_client/models/components/lineup.py + - src/plex_api_client/models/components/location.py + - src/plex_api_client/models/components/media.py + - src/plex_api_client/models/components/mediacontainer.py + - src/plex_api_client/models/components/mediacontainerwithartwork.py + - src/plex_api_client/models/components/mediacontainerwithdecision.py + - src/plex_api_client/models/components/mediacontainerwithdevice.py + - src/plex_api_client/models/components/mediacontainerwithdirectory.py + - src/plex_api_client/models/components/mediacontainerwithhubs.py + - src/plex_api_client/models/components/mediacontainerwithlineup.py + - src/plex_api_client/models/components/mediacontainerwithmetadata.py + - src/plex_api_client/models/components/mediacontainerwithnestedmetadata.py + - src/plex_api_client/models/components/mediacontainerwithplaylistmetadata.py + - src/plex_api_client/models/components/mediacontainerwithsettings.py + - src/plex_api_client/models/components/mediacontainerwithsubscription.py + - src/plex_api_client/models/components/mediagraboperation.py + - src/plex_api_client/models/components/mediaquery.py + - src/plex_api_client/models/components/mediasubscription.py + - src/plex_api_client/models/components/metadata.py + - src/plex_api_client/models/components/part.py + - src/plex_api_client/models/components/player.py + - src/plex_api_client/models/components/post_responses_200.py + - src/plex_api_client/models/components/protocol.py + - src/plex_api_client/models/components/requesthandler_slash_get_responses_200.py - src/plex_api_client/models/components/security.py + - src/plex_api_client/models/components/session.py + - src/plex_api_client/models/components/setting.py + - src/plex_api_client/models/components/slash_get_responses_200.py + - src/plex_api_client/models/components/sort.py + - src/plex_api_client/models/components/stream.py + - src/plex_api_client/models/components/subtitles.py + - src/plex_api_client/models/components/tag.py + - src/plex_api_client/models/components/transcodesession.py + - src/plex_api_client/models/components/transcodetype.py + - src/plex_api_client/models/components/user.py - src/plex_api_client/models/errors/__init__.py - - src/plex_api_client/models/errors/addplaylistcontents.py - - src/plex_api_client/models/errors/applyupdates.py - - src/plex_api_client/models/errors/cancelserveractivities.py - - src/plex_api_client/models/errors/checkforupdates.py - - src/plex_api_client/models/errors/clearplaylistcontents.py - - src/plex_api_client/models/errors/createplaylist.py - - src/plex_api_client/models/errors/deletelibrary.py - - src/plex_api_client/models/errors/deleteplaylist.py - - src/plex_api_client/models/errors/enablepapertrail.py - - src/plex_api_client/models/errors/get_actors_library.py - - src/plex_api_client/models/errors/get_all_libraries.py - - src/plex_api_client/models/errors/get_banner_image.py - - src/plex_api_client/models/errors/get_countries_library.py - - src/plex_api_client/models/errors/get_genres_library.py - - src/plex_api_client/models/errors/get_library_details.py - - src/plex_api_client/models/errors/get_library_items.py - - src/plex_api_client/models/errors/get_library_sections_all.py - - src/plex_api_client/models/errors/get_media_meta_data.py - - src/plex_api_client/models/errors/get_media_providers.py - - src/plex_api_client/models/errors/get_recently_added_library.py - - src/plex_api_client/models/errors/get_refresh_library_metadata.py - - src/plex_api_client/models/errors/get_search_all_libraries.py - - src/plex_api_client/models/errors/get_search_library.py - - src/plex_api_client/models/errors/get_server_identity.py - - src/plex_api_client/models/errors/get_server_resources.py - - src/plex_api_client/models/errors/get_thumb_image.py - - src/plex_api_client/models/errors/get_users.py - - src/plex_api_client/models/errors/get_watch_list.py - - src/plex_api_client/models/errors/getavailableclients.py - - src/plex_api_client/models/errors/getbandwidthstatistics.py - - src/plex_api_client/models/errors/getbutlertasks.py - - src/plex_api_client/models/errors/getcompanionsdata.py - - src/plex_api_client/models/errors/getdevices.py - - src/plex_api_client/models/errors/getfilehash.py - - src/plex_api_client/models/errors/getgeodata.py - - src/plex_api_client/models/errors/getglobalhubs.py - - src/plex_api_client/models/errors/gethomedata.py - - src/plex_api_client/models/errors/getlibraryhubs.py - - src/plex_api_client/models/errors/getmetadatachildren.py - - src/plex_api_client/models/errors/getmyplexaccount.py - - src/plex_api_client/models/errors/getpin.py - - src/plex_api_client/models/errors/getplaylist.py - - src/plex_api_client/models/errors/getplaylistcontents.py - - src/plex_api_client/models/errors/getplaylists.py - - src/plex_api_client/models/errors/getresizedphoto.py - - src/plex_api_client/models/errors/getresourcesstatistics.py - - src/plex_api_client/models/errors/getsearchresults.py - - src/plex_api_client/models/errors/getserveractivities.py - - src/plex_api_client/models/errors/getservercapabilities.py - - src/plex_api_client/models/errors/getserverlist.py - - src/plex_api_client/models/errors/getserverpreferences.py - - src/plex_api_client/models/errors/getsessionhistory.py - - src/plex_api_client/models/errors/getsessions.py - - src/plex_api_client/models/errors/getsourceconnectioninformation.py - - src/plex_api_client/models/errors/getstatistics.py - - src/plex_api_client/models/errors/gettimeline.py - - src/plex_api_client/models/errors/gettokenbypinid.py - - src/plex_api_client/models/errors/gettokendetails.py - - src/plex_api_client/models/errors/gettopwatchedcontent.py - - src/plex_api_client/models/errors/gettranscodesessions.py - - src/plex_api_client/models/errors/gettransienttoken.py - - src/plex_api_client/models/errors/getupdatestatus.py - - src/plex_api_client/models/errors/getuserfriends.py - - src/plex_api_client/models/errors/logline.py - - src/plex_api_client/models/errors/logmultiline.py - - src/plex_api_client/models/errors/markplayed.py - - src/plex_api_client/models/errors/markunplayed.py - src/plex_api_client/models/errors/no_response_error.py - - src/plex_api_client/models/errors/performsearch.py - - src/plex_api_client/models/errors/performvoicesearch.py - src/plex_api_client/models/errors/plexapierror.py - - src/plex_api_client/models/errors/post_users_sign_in_data.py - src/plex_api_client/models/errors/responsevalidationerror.py - src/plex_api_client/models/errors/sdkerror.py - - src/plex_api_client/models/errors/startalltasks.py - - src/plex_api_client/models/errors/starttask.py - - src/plex_api_client/models/errors/startuniversaltranscode.py - - src/plex_api_client/models/errors/stopalltasks.py - - src/plex_api_client/models/errors/stoptask.py - - src/plex_api_client/models/errors/stoptranscodesession.py - - src/plex_api_client/models/errors/updateplaylist.py - - src/plex_api_client/models/errors/updateplayprogress.py - - src/plex_api_client/models/errors/uploadplaylist.py + - src/plex_api_client/models/internal/__init__.py + - src/plex_api_client/models/internal/globals.py - src/plex_api_client/models/operations/__init__.py - - src/plex_api_client/models/operations/addplaylistcontents.py + - src/plex_api_client/models/operations/addcollectionitems.py + - src/plex_api_client/models/operations/adddevice.py + - src/plex_api_client/models/operations/adddevicetodvr.py + - src/plex_api_client/models/operations/adddownloadqueueitems.py + - src/plex_api_client/models/operations/addextras.py + - src/plex_api_client/models/operations/addlineup.py + - src/plex_api_client/models/operations/addplaylistitems.py + - src/plex_api_client/models/operations/addprovider.py + - src/plex_api_client/models/operations/addsection.py + - src/plex_api_client/models/operations/addsubtitles.py + - src/plex_api_client/models/operations/addtoplayqueue.py + - src/plex_api_client/models/operations/analyzemetadata.py - src/plex_api_client/models/operations/applyupdates.py - - src/plex_api_client/models/operations/cancelserveractivities.py - - src/plex_api_client/models/operations/checkforupdates.py - - src/plex_api_client/models/operations/clearplaylistcontents.py + - src/plex_api_client/models/operations/autocomplete.py + - src/plex_api_client/models/operations/cancelactivity.py + - src/plex_api_client/models/operations/cancelgrab.py + - src/plex_api_client/models/operations/cancelrefresh.py + - src/plex_api_client/models/operations/checkupdates.py + - src/plex_api_client/models/operations/cleanbundles.py + - src/plex_api_client/models/operations/clearplaylistitems.py + - src/plex_api_client/models/operations/clearplayqueue.py + - src/plex_api_client/models/operations/computechannelmap.py + - src/plex_api_client/models/operations/connectwebsocket.py + - src/plex_api_client/models/operations/createcollection.py + - src/plex_api_client/models/operations/createcustomhub.py + - src/plex_api_client/models/operations/createdownloadqueue.py + - src/plex_api_client/models/operations/createdvr.py + - src/plex_api_client/models/operations/createmarker.py - src/plex_api_client/models/operations/createplaylist.py - - src/plex_api_client/models/operations/deletelibrary.py + - src/plex_api_client/models/operations/createplayqueue.py + - src/plex_api_client/models/operations/createsubscription.py + - src/plex_api_client/models/operations/deletecaches.py + - src/plex_api_client/models/operations/deletecollection.py + - src/plex_api_client/models/operations/deletecollectionitem.py + - src/plex_api_client/models/operations/deletecustomhub.py + - src/plex_api_client/models/operations/deletedvr.py + - src/plex_api_client/models/operations/deletehistory.py + - src/plex_api_client/models/operations/deleteindexes.py + - src/plex_api_client/models/operations/deleteintros.py + - src/plex_api_client/models/operations/deletelibrarysection.py + - src/plex_api_client/models/operations/deletelineup.py + - src/plex_api_client/models/operations/deletemarker.py + - src/plex_api_client/models/operations/deletemediaitem.py + - src/plex_api_client/models/operations/deletemediaprovider.py + - src/plex_api_client/models/operations/deletemetadataitem.py - src/plex_api_client/models/operations/deleteplaylist.py + - src/plex_api_client/models/operations/deleteplaylistitem.py + - src/plex_api_client/models/operations/deleteplayqueueitem.py + - src/plex_api_client/models/operations/deletestream.py + - src/plex_api_client/models/operations/deletesubscription.py + - src/plex_api_client/models/operations/detectads.py + - src/plex_api_client/models/operations/detectcredits.py + - src/plex_api_client/models/operations/detectintros.py + - src/plex_api_client/models/operations/detectvoiceactivity.py + - src/plex_api_client/models/operations/discoverdevices.py + - src/plex_api_client/models/operations/editmarker.py + - src/plex_api_client/models/operations/editmetadataitem.py + - src/plex_api_client/models/operations/editsection.py + - src/plex_api_client/models/operations/editsubscriptionpreferences.py + - src/plex_api_client/models/operations/emptytrash.py - src/plex_api_client/models/operations/enablepapertrail.py - - src/plex_api_client/models/operations/get_actors_library.py - - src/plex_api_client/models/operations/get_all_libraries.py - - src/plex_api_client/models/operations/get_banner_image.py - - src/plex_api_client/models/operations/get_countries_library.py - - src/plex_api_client/models/operations/get_genres_library.py - - src/plex_api_client/models/operations/get_library_details.py - - src/plex_api_client/models/operations/get_library_items.py - - src/plex_api_client/models/operations/get_library_sections_all.py - - src/plex_api_client/models/operations/get_media_arts.py - - src/plex_api_client/models/operations/get_media_meta_data.py - - src/plex_api_client/models/operations/get_media_posters.py - - src/plex_api_client/models/operations/get_media_providers.py - - src/plex_api_client/models/operations/get_recently_added.py - - src/plex_api_client/models/operations/get_recently_added_library.py - - src/plex_api_client/models/operations/get_refresh_library_metadata.py - - src/plex_api_client/models/operations/get_search_all_libraries.py - - src/plex_api_client/models/operations/get_search_library.py - - src/plex_api_client/models/operations/get_server_identity.py - - src/plex_api_client/models/operations/get_server_resources.py - - src/plex_api_client/models/operations/get_thumb_image.py - - src/plex_api_client/models/operations/get_users.py - - src/plex_api_client/models/operations/get_watch_list.py - - src/plex_api_client/models/operations/getavailableclients.py - - src/plex_api_client/models/operations/getbandwidthstatistics.py - - src/plex_api_client/models/operations/getbutlertasks.py - - src/plex_api_client/models/operations/getcompanionsdata.py - - src/plex_api_client/models/operations/getdevices.py - - src/plex_api_client/models/operations/getfilehash.py - - src/plex_api_client/models/operations/getgeodata.py - - src/plex_api_client/models/operations/getglobalhubs.py - - src/plex_api_client/models/operations/gethomedata.py - - src/plex_api_client/models/operations/getlibraryhubs.py - - src/plex_api_client/models/operations/getmetadatachildren.py - - src/plex_api_client/models/operations/getmyplexaccount.py - - src/plex_api_client/models/operations/getpin.py + - src/plex_api_client/models/operations/generatethumbs.py + - src/plex_api_client/models/operations/getalbums.py + - src/plex_api_client/models/operations/getallhubs.py + - src/plex_api_client/models/operations/getallitemleaves.py + - src/plex_api_client/models/operations/getalllanguages.py + - src/plex_api_client/models/operations/getallleaves.py + - src/plex_api_client/models/operations/getallpreferences.py + - src/plex_api_client/models/operations/getallsubscriptions.py + - src/plex_api_client/models/operations/getarts.py + - src/plex_api_client/models/operations/getaugmentationstatus.py + - src/plex_api_client/models/operations/getavailablegrabbers.py + - src/plex_api_client/models/operations/getavailablesorts.py + - src/plex_api_client/models/operations/getbackgroundtasks.py + - src/plex_api_client/models/operations/getcategories.py + - src/plex_api_client/models/operations/getchannels.py + - src/plex_api_client/models/operations/getchapterimage.py + - src/plex_api_client/models/operations/getcluster.py + - src/plex_api_client/models/operations/getcollectionimage.py + - src/plex_api_client/models/operations/getcollectionitems.py + - src/plex_api_client/models/operations/getcollections.py + - src/plex_api_client/models/operations/getcolors.py + - src/plex_api_client/models/operations/getcommon.py + - src/plex_api_client/models/operations/getcontinuewatching.py + - src/plex_api_client/models/operations/getcountries.py + - src/plex_api_client/models/operations/getcountrieslineups.py + - src/plex_api_client/models/operations/getcountryregions.py + - src/plex_api_client/models/operations/getdevicedetails.py + - src/plex_api_client/models/operations/getdeviceschannels.py + - src/plex_api_client/models/operations/getdownloadqueue.py + - src/plex_api_client/models/operations/getdownloadqueueitems.py + - src/plex_api_client/models/operations/getdownloadqueuemedia.py + - src/plex_api_client/models/operations/getdvr.py + - src/plex_api_client/models/operations/getextras.py + - src/plex_api_client/models/operations/getfile.py + - src/plex_api_client/models/operations/getfirstcharacters.py + - src/plex_api_client/models/operations/getfolders.py + - src/plex_api_client/models/operations/gethistoryitem.py + - src/plex_api_client/models/operations/gethubitems.py + - src/plex_api_client/models/operations/getidentity.py + - src/plex_api_client/models/operations/getimage.py + - src/plex_api_client/models/operations/getimagefrombif.py + - src/plex_api_client/models/operations/getitemartwork.py + - src/plex_api_client/models/operations/getitemdecision.py + - src/plex_api_client/models/operations/getitemtree.py + - src/plex_api_client/models/operations/getlibrarydetails.py + - src/plex_api_client/models/operations/getlibraryitems.py + - src/plex_api_client/models/operations/getlibrarymatches.py + - src/plex_api_client/models/operations/getlineup.py + - src/plex_api_client/models/operations/getlineupchannels.py + - src/plex_api_client/models/operations/getlivetvsession.py + - src/plex_api_client/models/operations/getmediapart.py + - src/plex_api_client/models/operations/getmetadatahubs.py + - src/plex_api_client/models/operations/getmetadataitem.py + - src/plex_api_client/models/operations/getnotifications.py + - src/plex_api_client/models/operations/getpartindex.py + - src/plex_api_client/models/operations/getperson.py - src/plex_api_client/models/operations/getplaylist.py - - src/plex_api_client/models/operations/getplaylistcontents.py - - src/plex_api_client/models/operations/getplaylists.py - - src/plex_api_client/models/operations/getresizedphoto.py - - src/plex_api_client/models/operations/getresourcesstatistics.py - - src/plex_api_client/models/operations/getsearchresults.py - - src/plex_api_client/models/operations/getserveractivities.py - - src/plex_api_client/models/operations/getservercapabilities.py - - src/plex_api_client/models/operations/getserverlist.py - - src/plex_api_client/models/operations/getserverpreferences.py - - src/plex_api_client/models/operations/getsessionhistory.py + - src/plex_api_client/models/operations/getplaylistgenerator.py + - src/plex_api_client/models/operations/getplaylistgeneratoritems.py + - src/plex_api_client/models/operations/getplaylistgenerators.py + - src/plex_api_client/models/operations/getplaylistitems.py + - src/plex_api_client/models/operations/getplayqueue.py + - src/plex_api_client/models/operations/getpostplayhubs.py + - src/plex_api_client/models/operations/getpreference.py + - src/plex_api_client/models/operations/getpromotedhubs.py + - src/plex_api_client/models/operations/getrandomartwork.py + - src/plex_api_client/models/operations/getrelatedhubs.py + - src/plex_api_client/models/operations/getrelateditems.py + - src/plex_api_client/models/operations/getscheduledrecordings.py + - src/plex_api_client/models/operations/getsectionfilters.py + - src/plex_api_client/models/operations/getsectionhubs.py + - src/plex_api_client/models/operations/getsectionimage.py + - src/plex_api_client/models/operations/getsectionpreferences.py + - src/plex_api_client/models/operations/getsections.py + - src/plex_api_client/models/operations/getsectionsprefs.py + - src/plex_api_client/models/operations/getserverinfo.py + - src/plex_api_client/models/operations/getsessionplaylistindex.py - src/plex_api_client/models/operations/getsessions.py + - src/plex_api_client/models/operations/getsessionsegment.py + - src/plex_api_client/models/operations/getsonicallysimilar.py + - src/plex_api_client/models/operations/getsonicpath.py - src/plex_api_client/models/operations/getsourceconnectioninformation.py - - src/plex_api_client/models/operations/getstatistics.py - - src/plex_api_client/models/operations/gettimeline.py - - src/plex_api_client/models/operations/gettokenbypinid.py - - src/plex_api_client/models/operations/gettokendetails.py - - src/plex_api_client/models/operations/gettopwatchedcontent.py - - src/plex_api_client/models/operations/gettranscodesessions.py + - src/plex_api_client/models/operations/getstream.py + - src/plex_api_client/models/operations/getstreamlevels.py + - src/plex_api_client/models/operations/getstreamloudness.py + - src/plex_api_client/models/operations/getsubscription.py + - src/plex_api_client/models/operations/gettags.py + - src/plex_api_client/models/operations/gettasks.py + - src/plex_api_client/models/operations/gettemplate.py + - src/plex_api_client/models/operations/getthumb.py - src/plex_api_client/models/operations/gettransienttoken.py - - src/plex_api_client/models/operations/getupdatestatus.py - - src/plex_api_client/models/operations/getuserfriends.py - - src/plex_api_client/models/operations/logline.py - - src/plex_api_client/models/operations/logmultiline.py + - src/plex_api_client/models/operations/getupdatesstatus.py + - src/plex_api_client/models/operations/ingesttransientitem.py + - src/plex_api_client/models/operations/listactivities.py + - src/plex_api_client/models/operations/listcontent.py + - src/plex_api_client/models/operations/listdevices.py + - src/plex_api_client/models/operations/listdownloadqueueitems.py + - src/plex_api_client/models/operations/listdvrs.py + - src/plex_api_client/models/operations/listhubs.py + - src/plex_api_client/models/operations/listlineups.py + - src/plex_api_client/models/operations/listmatches.py + - src/plex_api_client/models/operations/listmoments.py + - src/plex_api_client/models/operations/listpersonmedia.py + - src/plex_api_client/models/operations/listplaybackhistory.py + - src/plex_api_client/models/operations/listplaylists.py + - src/plex_api_client/models/operations/listproviders.py + - src/plex_api_client/models/operations/listsessions.py + - src/plex_api_client/models/operations/listsimilar.py + - src/plex_api_client/models/operations/listsonicallysimilar.py + - src/plex_api_client/models/operations/listtopusers.py + - src/plex_api_client/models/operations/makedecision.py - src/plex_api_client/models/operations/markplayed.py - - src/plex_api_client/models/operations/markunplayed.py - - src/plex_api_client/models/operations/performsearch.py - - src/plex_api_client/models/operations/performvoicesearch.py - - src/plex_api_client/models/operations/post_media_arts.py - - src/plex_api_client/models/operations/post_media_poster.py - - src/plex_api_client/models/operations/post_users_sign_in_data.py - - src/plex_api_client/models/operations/startalltasks.py + - src/plex_api_client/models/operations/matchitem.py + - src/plex_api_client/models/operations/mergeitems.py + - src/plex_api_client/models/operations/modifydevice.py + - src/plex_api_client/models/operations/modifyplaylistgenerator.py + - src/plex_api_client/models/operations/movecollectionitem.py + - src/plex_api_client/models/operations/movehub.py + - src/plex_api_client/models/operations/moveplaylistitem.py + - src/plex_api_client/models/operations/moveplayqueueitem.py + - src/plex_api_client/models/operations/optimizedatabase.py + - src/plex_api_client/models/operations/processsubscriptions.py + - src/plex_api_client/models/operations/refreshitemsmetadata.py + - src/plex_api_client/models/operations/refreshplaylist.py + - src/plex_api_client/models/operations/refreshproviders.py + - src/plex_api_client/models/operations/refreshsection.py + - src/plex_api_client/models/operations/refreshsectionsmetadata.py + - src/plex_api_client/models/operations/reloadguide.py + - src/plex_api_client/models/operations/removedevice.py + - src/plex_api_client/models/operations/removedevicefromdvr.py + - src/plex_api_client/models/operations/removedownloadqueueitems.py + - src/plex_api_client/models/operations/reordersubscription.py + - src/plex_api_client/models/operations/report.py + - src/plex_api_client/models/operations/resetplayqueue.py + - src/plex_api_client/models/operations/resetsectiondefaults.py + - src/plex_api_client/models/operations/restartprocessingdownloadqueueitems.py + - src/plex_api_client/models/operations/scan.py + - src/plex_api_client/models/operations/searchhubs.py + - src/plex_api_client/models/operations/setchannelmap.py + - src/plex_api_client/models/operations/setdevicepreferences.py + - src/plex_api_client/models/operations/setdvrpreferences.py + - src/plex_api_client/models/operations/setitemartwork.py + - src/plex_api_client/models/operations/setitempreferences.py + - src/plex_api_client/models/operations/setpreferences.py + - src/plex_api_client/models/operations/setrating.py + - src/plex_api_client/models/operations/setsectionpreferences.py + - src/plex_api_client/models/operations/setstreamoffset.py + - src/plex_api_client/models/operations/setstreamselection.py + - src/plex_api_client/models/operations/shuffle.py + - src/plex_api_client/models/operations/splititem.py + - src/plex_api_client/models/operations/startanalysis.py + - src/plex_api_client/models/operations/startbifgeneration.py - src/plex_api_client/models/operations/starttask.py - - src/plex_api_client/models/operations/startuniversaltranscode.py - - src/plex_api_client/models/operations/stopalltasks.py + - src/plex_api_client/models/operations/starttasks.py + - src/plex_api_client/models/operations/starttranscodesession.py + - src/plex_api_client/models/operations/stopallrefreshes.py + - src/plex_api_client/models/operations/stopdvrreload.py + - src/plex_api_client/models/operations/stopscan.py - src/plex_api_client/models/operations/stoptask.py - - src/plex_api_client/models/operations/stoptranscodesession.py + - src/plex_api_client/models/operations/stoptasks.py + - src/plex_api_client/models/operations/terminatesession.py + - src/plex_api_client/models/operations/transcodeimage.py + - src/plex_api_client/models/operations/transcodesubtitles.py + - src/plex_api_client/models/operations/triggerfallback.py + - src/plex_api_client/models/operations/tunechannel.py + - src/plex_api_client/models/operations/unmatch.py + - src/plex_api_client/models/operations/unscrobble.py + - src/plex_api_client/models/operations/unshuffle.py + - src/plex_api_client/models/operations/updatehubvisibility.py + - src/plex_api_client/models/operations/updateitemartwork.py + - src/plex_api_client/models/operations/updateitems.py - src/plex_api_client/models/operations/updateplaylist.py - - src/plex_api_client/models/operations/updateplayprogress.py - src/plex_api_client/models/operations/uploadplaylist.py - - src/plex_api_client/playlists.py - - src/plex_api_client/plex.py + - src/plex_api_client/models/operations/voicesearchhubs.py + - src/plex_api_client/models/operations/writelog.py + - src/plex_api_client/models/operations/writemessage.py + - src/plex_api_client/play_queue.py + - src/plex_api_client/playlist.py + - src/plex_api_client/preferences.py + - src/plex_api_client/provider.py - src/plex_api_client/py.typed + - src/plex_api_client/rate.py - src/plex_api_client/sdk.py - src/plex_api_client/sdkconfiguration.py - src/plex_api_client/search.py - - src/plex_api_client/server.py - - src/plex_api_client/sessions.py - - src/plex_api_client/statistics.py + - src/plex_api_client/status.py + - src/plex_api_client/subscriptions.py + - src/plex_api_client/timeline.py + - src/plex_api_client/transcoder.py - src/plex_api_client/types/__init__.py - src/plex_api_client/types/basemodel.py + - src/plex_api_client/ultrablur.py - src/plex_api_client/updater.py - - src/plex_api_client/users.py - src/plex_api_client/utils/__init__.py - src/plex_api_client/utils/annotations.py - src/plex_api_client/utils/datetimes.py @@ -1193,8 +1439,6 @@ generatedFiles: - src/plex_api_client/utils/unmarshal_json_response.py - src/plex_api_client/utils/url.py - src/plex_api_client/utils/values.py - - src/plex_api_client/video.py - - src/plex_api_client/watchlist.py examples: getServerCapabilities: speakeasy-default-get-server-capabilities: @@ -1290,6 +1534,19 @@ examples: parameters: query: key: 59398 + identifier: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} @@ -1508,6 +1765,19 @@ examples: parameters: path: taskName: "RefreshPeriodicMetadata" + task: "RefreshLocalMedia" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} @@ -1518,6 +1788,19 @@ examples: parameters: path: taskName: "CleanOldCacheFiles" + task: "CleanOldBundles" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} @@ -2096,9 +2379,21 @@ examples: type: "audio" smart: 1 uri: "https://short-term-disconnection.name/" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "200": - application/json: {"MediaContainer": {"size": 7, "Metadata": [{"ratingKey": "96", "key": "/playlists/96/items", "guid": "com.plexapp.agents.none://a2f92937-1408-40e2-b022-63a8a9377e55", "type": "playlist", "title": "A Great Playlist", "summary": "What a great playlist", "smart": false, "playlistType": "video", "icon": "playlist://image.smart", "viewCount": 1, "lastViewedAt": 1705719589, "leafCount": 1, "addedAt": 1705719589, "updatedAt": 1705724593, "composite": "/playlists/96/composite/1705724593", "duration": 141000}]}} + application/json: {"MediaContainer": {"Metadata": [{"composite": "/playlists/96/composite/1705724593", "duration": 141000, "key": "/playlists/96/items", "leafCount": 1, "playlistType": "video", "smart": false, "title": "A Great Playlist", "type": "playlist", "addedAt": 1705719589, "lastViewedAt": 1705719589, "ratingKey": "96", "summary": "What a great playlist", "updatedAt": 1705724593, "viewCount": 1, "guid": "com.plexapp.agents.none://a2f92937-1408-40e2-b022-63a8a9377e55", "icon": "playlist://image.smart"}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -2117,9 +2412,22 @@ examples: parameters: path: playlistID: 8419.53 + playlistId: 841953 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "200": - application/json: {"MediaContainer": {"size": 1, "Metadata": [{"content": "library://x/directory/%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1%26push%3D1%26title%3D2%26or%3D1%26title%3DSerenity%26pop%3D1", "ratingKey": "95", "key": "/playlists/95/items", "guid": "com.plexapp.agents.none://87425529-380f-44b8-a689-9a0537e7ec91", "type": "playlist", "title": "Smart Movie Playlist", "summary": "", "smart": true, "playlistType": "video", "composite": "/playlists/95/composite/1705717387", "icon": "playlist://image.smart", "duration": 282000, "leafCount": 2, "addedAt": 1705716493, "updatedAt": 1705717387}]}} + application/json: {"MediaContainer": {"Metadata": [{"composite": "/playlists/95/composite/1705717387", "duration": 282000, "key": "/playlists/95/items", "leafCount": 2, "playlistType": "video", "smart": true, "title": "Smart Movie Playlist", "type": "playlist", "addedAt": 1705716493, "ratingKey": "95", "summary": "", "updatedAt": 1705717387, "content": "library://x/directory/%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1%26push%3D1%26title%3D2%26or%3D1%26title%3DSerenity%26pop%3D1", "guid": "com.plexapp.agents.none://87425529-380f-44b8-a689-9a0537e7ec91", "icon": "playlist://image.smart"}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -2129,6 +2437,19 @@ examples: parameters: path: playlistID: 3432.93 + playlistId: 343293 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} @@ -2139,6 +2460,19 @@ examples: parameters: path: playlistID: 1579.66 + playlistId: 157966 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} @@ -2190,6 +2524,18 @@ examples: path: "/home/barkley/playlist.m3u" force: 1 sectionID: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} @@ -2201,21 +2547,50 @@ examples: query: type: "delegation" scope: "all" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} + "200": + application/json: {} getSourceConnectionInformation: speakeasy-default-get-source-connection-information: parameters: query: source: "server://client-identifier" + refresh: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}, {"code": 1001, "message": "User could not be authenticated", "status": 401}]} + "200": + application/json: {} getTokenDetails: speakeasy-default-get-token-details: responses: @@ -2333,7 +2708,7 @@ examples: speakeasy-default-get-sessions: responses: "200": - application/json: {"MediaContainer": {"size": 1, "Metadata": [{"addedAt": 1705543312, "art": "/library/metadata/39904/art/1705310687", "duration": 186240, "grandparentArt": "/library/metadata/39904/art/1705310687", "grandparentGuid": "plex://artist/5d07bbfd403c6402904a6480", "grandparentKey": "/library/metadata/39904", "grandparentRatingKey": "39904", "grandparentThumb": "/library/metadata/39904/thumb/1705310687", "grandparentTitle": "Green Day", "guid": "plex://track/6535834f71f22f36f71a8e8f", "index": 1, "key": "/library/metadata/67085", "librarySectionID": "3", "librarySectionKey": "/library/sections/3", "librarySectionTitle": "Music", "musicAnalysisVersion": "1", "originalTitle": "The American Dream Is Killing Me", "parentGuid": "plex://album/65394d6d472b8ab03ef47f12", "parentIndex": 1, "parentKey": "/library/metadata/67084", "parentRatingKey": "67084", "parentStudio": "Reprise Records", "parentThumb": "/library/metadata/67084/thumb/1705543314", "parentTitle": "Saviors", "parentYear": 2024, "ratingCount": 45885, "ratingKey": "67085", "sessionKey": "203", "thumb": "/library/metadata/67084/thumb/1705543314", "title": "The American Dream Is Killing Me", "titleSort": "American Dream Is Killing Me", "type": "track", "updatedAt": 1705543314, "viewOffset": 1000, "Media": [{"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": "130355", "selected": true, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}]}, {"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": "130355", "selected": true, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}]}], "User": {"id": "1", "thumb": "https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661", "title": "Blindkitty38"}, "Player": {"address": "10.10.10.171", "machineIdentifier": "3tsdzir85m2onc3qyr255aq1", "model": "standalone", "platform": "windows", "platformVersion": "10.0.22621", "product": "Plex for Windows", "profile": "Plex Desktop", "remotePublicAddress": "68.248.140.20", "state": "playing", "title": "DESKTOP-BL80MTD", "version": "1.85.0.4071-21128b56", "local": true, "relayed": false, "secure": true, "userID": 1}, "Session": {"id": "93h7e00ncblxncqw9lkfaoxi", "bandwidth": 1050, "location": "lan"}}, {"addedAt": 1705543312, "art": "/library/metadata/39904/art/1705310687", "duration": 186240, "grandparentArt": "/library/metadata/39904/art/1705310687", "grandparentGuid": "plex://artist/5d07bbfd403c6402904a6480", "grandparentKey": "/library/metadata/39904", "grandparentRatingKey": "39904", "grandparentThumb": "/library/metadata/39904/thumb/1705310687", "grandparentTitle": "Green Day", "guid": "plex://track/6535834f71f22f36f71a8e8f", "index": 1, "key": "/library/metadata/67085", "librarySectionID": "3", "librarySectionKey": "/library/sections/3", "librarySectionTitle": "Music", "musicAnalysisVersion": "1", "originalTitle": "The American Dream Is Killing Me", "parentGuid": "plex://album/65394d6d472b8ab03ef47f12", "parentIndex": 1, "parentKey": "/library/metadata/67084", "parentRatingKey": "67084", "parentStudio": "Reprise Records", "parentThumb": "/library/metadata/67084/thumb/1705543314", "parentTitle": "Saviors", "parentYear": 2024, "ratingCount": 45885, "ratingKey": "67085", "sessionKey": "203", "thumb": "/library/metadata/67084/thumb/1705543314", "title": "The American Dream Is Killing Me", "titleSort": "American Dream Is Killing Me", "type": "track", "updatedAt": 1705543314, "viewOffset": 1000, "Media": [{"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": "130355", "selected": true, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}]}, {"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": "130355", "selected": true, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}]}], "User": {"id": "1", "thumb": "https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661", "title": "Blindkitty38"}, "Player": {"address": "10.10.10.171", "machineIdentifier": "3tsdzir85m2onc3qyr255aq1", "model": "standalone", "platform": "windows", "platformVersion": "10.0.22621", "product": "Plex for Windows", "profile": "Plex Desktop", "remotePublicAddress": "68.248.140.20", "state": "playing", "title": "DESKTOP-BL80MTD", "version": "1.85.0.4071-21128b56", "local": true, "relayed": false, "secure": true, "userID": 1}, "Session": {"id": "93h7e00ncblxncqw9lkfaoxi", "bandwidth": 1050, "location": "lan"}}, {"addedAt": 1705543312, "art": "/library/metadata/39904/art/1705310687", "duration": 186240, "grandparentArt": "/library/metadata/39904/art/1705310687", "grandparentGuid": "plex://artist/5d07bbfd403c6402904a6480", "grandparentKey": "/library/metadata/39904", "grandparentRatingKey": "39904", "grandparentThumb": "/library/metadata/39904/thumb/1705310687", "grandparentTitle": "Green Day", "guid": "plex://track/6535834f71f22f36f71a8e8f", "index": 1, "key": "/library/metadata/67085", "librarySectionID": "3", "librarySectionKey": "/library/sections/3", "librarySectionTitle": "Music", "musicAnalysisVersion": "1", "originalTitle": "The American Dream Is Killing Me", "parentGuid": "plex://album/65394d6d472b8ab03ef47f12", "parentIndex": 1, "parentKey": "/library/metadata/67084", "parentRatingKey": "67084", "parentStudio": "Reprise Records", "parentThumb": "/library/metadata/67084/thumb/1705543314", "parentTitle": "Saviors", "parentYear": 2024, "ratingCount": 45885, "ratingKey": "67085", "sessionKey": "203", "thumb": "/library/metadata/67084/thumb/1705543314", "title": "The American Dream Is Killing Me", "titleSort": "American Dream Is Killing Me", "type": "track", "updatedAt": 1705543314, "viewOffset": 1000, "Media": [{"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": "130355", "selected": true, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}]}, {"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": "130355", "selected": true, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "hasThumbnail": "1", "id": "130625", "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "decision": "directplay", "selected": true, "Stream": [{"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}, {"albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "channels": 2, "codec": "flac", "displayTitle": "FLAC (Stereo)", "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "id": "352487", "index": 0, "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "samplingRate": 44100, "selected": true, "streamType": 2, "location": "direct"}]}]}], "User": {"id": "1", "thumb": "https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661", "title": "Blindkitty38"}, "Player": {"address": "10.10.10.171", "machineIdentifier": "3tsdzir85m2onc3qyr255aq1", "model": "standalone", "platform": "windows", "platformVersion": "10.0.22621", "product": "Plex for Windows", "profile": "Plex Desktop", "remotePublicAddress": "68.248.140.20", "state": "playing", "title": "DESKTOP-BL80MTD", "version": "1.85.0.4071-21128b56", "local": true, "relayed": false, "secure": true, "userID": 1}, "Session": {"id": "93h7e00ncblxncqw9lkfaoxi", "bandwidth": 1050, "location": "lan"}}]}} + application/json: {"MediaContainer": {"Metadata": [{"title": "The American Dream Is Killing Me", "type": "track", "addedAt": 1705543312, "art": "/library/metadata/39904/art/1705310687", "duration": 186240, "grandparentArt": "/library/metadata/39904/art/1705310687", "grandparentKey": "/library/metadata/39904", "grandparentRatingKey": "39904", "grandparentThumb": "/library/metadata/39904/thumb/1705310687", "grandparentTitle": "Green Day", "index": 1, "key": "/library/metadata/67085", "Media": [{"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": 130355, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}], "selected": true}, {"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": 130355, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}], "selected": true}], "originalTitle": "The American Dream Is Killing Me", "parentIndex": 1, "parentKey": "/library/metadata/67084", "parentRatingKey": "67084", "parentThumb": "/library/metadata/67084/thumb/1705543314", "parentTitle": "Saviors", "ratingCount": 45885, "ratingKey": "67085", "thumb": "/library/metadata/67084/thumb/1705543314", "titleSort": "American Dream Is Killing Me", "updatedAt": 1705543314, "viewOffset": 1000, "grandparentGuid": "plex://artist/5d07bbfd403c6402904a6480", "guid": "plex://track/6535834f71f22f36f71a8e8f", "librarySectionID": "3", "librarySectionKey": "/library/sections/3", "librarySectionTitle": "Music", "musicAnalysisVersion": "1", "parentGuid": "plex://album/65394d6d472b8ab03ef47f12", "parentStudio": "Reprise Records", "parentYear": 2024, "sessionKey": "203", "User": {"id": "1", "thumb": "https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661", "title": "Blindkitty38"}, "Player": {"address": "10.10.10.171", "machineIdentifier": "3tsdzir85m2onc3qyr255aq1", "model": "standalone", "platform": "windows", "platformVersion": "10.0.22621", "product": "Plex for Windows", "profile": "Plex Desktop", "remotePublicAddress": "68.248.140.20", "state": "playing", "title": "DESKTOP-BL80MTD", "version": "1.85.0.4071-21128b56", "local": true, "relayed": false, "secure": true, "userID": 1}, "Session": {"id": "93h7e00ncblxncqw9lkfaoxi", "bandwidth": 1050, "location": "lan"}}, {"title": "The American Dream Is Killing Me", "type": "track", "addedAt": 1705543312, "art": "/library/metadata/39904/art/1705310687", "duration": 186240, "grandparentArt": "/library/metadata/39904/art/1705310687", "grandparentKey": "/library/metadata/39904", "grandparentRatingKey": "39904", "grandparentThumb": "/library/metadata/39904/thumb/1705310687", "grandparentTitle": "Green Day", "index": 1, "key": "/library/metadata/67085", "Media": [{"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": 130355, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}], "selected": true}, {"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": 130355, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}], "selected": true}], "originalTitle": "The American Dream Is Killing Me", "parentIndex": 1, "parentKey": "/library/metadata/67084", "parentRatingKey": "67084", "parentThumb": "/library/metadata/67084/thumb/1705543314", "parentTitle": "Saviors", "ratingCount": 45885, "ratingKey": "67085", "thumb": "/library/metadata/67084/thumb/1705543314", "titleSort": "American Dream Is Killing Me", "updatedAt": 1705543314, "viewOffset": 1000, "grandparentGuid": "plex://artist/5d07bbfd403c6402904a6480", "guid": "plex://track/6535834f71f22f36f71a8e8f", "librarySectionID": "3", "librarySectionKey": "/library/sections/3", "librarySectionTitle": "Music", "musicAnalysisVersion": "1", "parentGuid": "plex://album/65394d6d472b8ab03ef47f12", "parentStudio": "Reprise Records", "parentYear": 2024, "sessionKey": "203", "User": {"id": "1", "thumb": "https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661", "title": "Blindkitty38"}, "Player": {"address": "10.10.10.171", "machineIdentifier": "3tsdzir85m2onc3qyr255aq1", "model": "standalone", "platform": "windows", "platformVersion": "10.0.22621", "product": "Plex for Windows", "profile": "Plex Desktop", "remotePublicAddress": "68.248.140.20", "state": "playing", "title": "DESKTOP-BL80MTD", "version": "1.85.0.4071-21128b56", "local": true, "relayed": false, "secure": true, "userID": 1}, "Session": {"id": "93h7e00ncblxncqw9lkfaoxi", "bandwidth": 1050, "location": "lan"}}, {"title": "The American Dream Is Killing Me", "type": "track", "addedAt": 1705543312, "art": "/library/metadata/39904/art/1705310687", "duration": 186240, "grandparentArt": "/library/metadata/39904/art/1705310687", "grandparentKey": "/library/metadata/39904", "grandparentRatingKey": "39904", "grandparentThumb": "/library/metadata/39904/thumb/1705310687", "grandparentTitle": "Green Day", "index": 1, "key": "/library/metadata/67085", "Media": [{"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": 130355, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}], "selected": true}, {"audioChannels": 2, "audioCodec": "flac", "bitrate": 1014, "container": "flac", "duration": 186240, "id": 130355, "Part": [{"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}, {"container": "flac", "duration": 186240, "file": "/music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac", "id": 130625, "key": "/library/parts/130625/1705543268/file.flac", "size": 23644000, "Stream": [{"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}, {"audioChannelLayout": "stereo", "bitDepth": 16, "bitrate": 1014, "codec": "flac", "displayTitle": "FLAC (Stereo)", "id": 352487, "index": 0, "samplingRate": 44100, "selected": true, "streamType": 2, "albumGain": "-12.94", "albumPeak": "1.000000", "albumRange": "4.751014", "channels": 2, "extendedDisplayTitle": "FLAC (Stereo)", "gain": "-12.94", "loudness": "-5.94", "lra": "1.74", "peak": "1.000000", "location": "direct"}], "hasThumbnail": "1", "decision": "directplay", "selected": true}], "selected": true}], "originalTitle": "The American Dream Is Killing Me", "parentIndex": 1, "parentKey": "/library/metadata/67084", "parentRatingKey": "67084", "parentThumb": "/library/metadata/67084/thumb/1705543314", "parentTitle": "Saviors", "ratingCount": 45885, "ratingKey": "67085", "thumb": "/library/metadata/67084/thumb/1705543314", "titleSort": "American Dream Is Killing Me", "updatedAt": 1705543314, "viewOffset": 1000, "grandparentGuid": "plex://artist/5d07bbfd403c6402904a6480", "guid": "plex://track/6535834f71f22f36f71a8e8f", "librarySectionID": "3", "librarySectionKey": "/library/sections/3", "librarySectionTitle": "Music", "musicAnalysisVersion": "1", "parentGuid": "plex://album/65394d6d472b8ab03ef47f12", "parentStudio": "Reprise Records", "parentYear": 2024, "sessionKey": "203", "User": {"id": "1", "thumb": "https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661", "title": "Blindkitty38"}, "Player": {"address": "10.10.10.171", "machineIdentifier": "3tsdzir85m2onc3qyr255aq1", "model": "standalone", "platform": "windows", "platformVersion": "10.0.22621", "product": "Plex for Windows", "profile": "Plex Desktop", "remotePublicAddress": "68.248.140.20", "state": "playing", "title": "DESKTOP-BL80MTD", "version": "1.85.0.4071-21128b56", "local": true, "relayed": false, "secure": true, "userID": 1}, "Session": {"id": "93h7e00ncblxncqw9lkfaoxi", "bandwidth": 1050, "location": "lan"}}]}} "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}, {"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": @@ -2497,6 +2872,18 @@ examples: query: tonight: 1 skip: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" responses: "400": application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} @@ -2570,5 +2957,4223 @@ examples: application/json: {"errors": [{"code": 1000, "message": "X-Plex-Client-Identifier is missing", "status": 400}]} "401": application/json: {"errors": [{"code": 1001, "message": "User could not be authenticated", "status": 401}]} + getServerInfo: + speakeasy-default-get-server-info: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getIdentity: + speakeasy-default-get-identity: + responses: + "200": + application/json: {} + getNotifications: + speakeasy-default-get-notifications: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/octet-stream: "x-file: example.file" + connectWebSocket: + speakeasy-default-connect-web-socket: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/octet-stream: "x-file: example.file" + getAllPreferences: + speakeasy-default-get-all-preferences: + responses: + "200": + application/json: {} + setPreferences: + speakeasy-default-set-preferences: + parameters: + query: + prefs: {} + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getPreference: + speakeasy-default-get-preference: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + setRating: + speakeasy-default-set-rating: + parameters: + query: + identifier: "" + key: "" + rating: 8722.46 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + report: + speakeasy-default-report: + parameters: + query: + key: "/foo" + ratingKey: "xyz" + state: "playing" + playQueueItemID: "123" + time: 0 + duration: 10000 + continuing: 1 + updated: 14200000 + offline: 1 + timeToFirstFrame: 1000 + timeStalled: 1000 + bandwidth: 100 + bufferedTime: 100 + bufferedSize: 1024 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"livetv": 7, "machineIdentifier": "0123456789abcdef0123456789abcdef012345678", "musicAnalysis": 2, "myPlexMappingState": "mapped", "myPlexSigninState": "ok", "offlineTranscode": 1}} + unscrobble: + speakeasy-default-unscrobble: + parameters: + query: + identifier: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + listActivities: + speakeasy-default-list-activities: + responses: + "200": + application/json: {} + cancelActivity: + speakeasy-default-cancel-activity: + parameters: + path: + activityId: "d6199ba1-fb5e-4cae-bf17-1a5369c1cf1e" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + stopTasks: {} + getTasks: + speakeasy-default-get-tasks: + responses: + "200": + application/json: {} + startTasks: {} + createDownloadQueue: + speakeasy-default-create-download-queue: + responses: + "200": + application/json: {} + getDownloadQueue: + speakeasy-default-get-download-queue: + parameters: + path: + queueId: 922802 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + addDownloadQueueItems: + speakeasy-default-add-download-queue-items: + parameters: + path: + queueId: 984925 + query: + keys: ["/library/metadata/3", "/library/metadata/6"] + advancedSubtitles: "burn" + audioBoost: 50 + audioChannelCount: 5 + autoAdjustQuality: 1 + autoAdjustSubtitle: 1 + directPlay: 1 + directStream: 1 + directStreamAudio: 1 + disableResolutionRotation: 1 + hasMDE: 1 + location: "wan" + mediaBufferSize: 102400 + mediaIndex: 0 + musicBitrate: 5000 + offset: 90.5 + partIndex: 0 + path: "/library/metadata/151671" + peakBitrate: 12000 + photoResolution: "1080x1080" + protocol: "dash" + secondsPerSegment: 5 + subtitleSize: 50 + subtitles: "segmented" + videoBitrate: 12000 + videoQuality: 50 + videoResolution: "1080x1080" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + listDownloadQueueItems: + speakeasy-default-list-download-queue-items: + parameters: + path: + queueId: 524138 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getItemDecision: + speakeasy-default-get-item-decision: + parameters: + path: + queueId: 231605 + itemId: 32 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getDownloadQueueMedia: + speakeasy-default-get-download-queue-media: + parameters: + path: + queueId: 663184 + itemId: 32 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + removeDownloadQueueItems: + speakeasy-default-remove-download-queue-items: + parameters: + path: + queueId: 946275 + itemId: [32, 345, 23] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getDownloadQueueItems: + speakeasy-default-get-download-queue-items: + parameters: + path: + queueId: 809886 + itemId: [32, 345, 23] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + restartProcessingDownloadQueueItems: + speakeasy-default-restart-processing-download-queue-items: + parameters: + path: + queueId: 713001 + itemId: [32, 345, 23] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getAllHubs: + speakeasy-default-get-all-hubs: + parameters: + query: + onlyTransient: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + getContinueWatching: + speakeasy-default-get-continue-watching: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + getHubItems: + speakeasy-default-get-hub-items: + parameters: + query: + identifier: ["", "", ""] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getPromotedHubs: + speakeasy-default-get-promoted-hubs: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + getMetadataHubs: + speakeasy-default-get-metadata-hubs: + parameters: + path: + metadataId: 605482 + query: + onlyTransient: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + getPostplayHubs: + speakeasy-default-get-postplay-hubs: + parameters: + path: + metadataId: 441419 + query: + onlyTransient: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + getRelatedHubs: + speakeasy-default-get-related-hubs: + parameters: + path: + metadataId: 8858 + query: + onlyTransient: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + getSectionHubs: + speakeasy-default-get-section-hubs: + parameters: + path: + sectionId: 336924 + query: + onlyTransient: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + resetSectionDefaults: + speakeasy-default-reset-section-defaults: + parameters: + path: + sectionId: 383022 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + listHubs: + speakeasy-default-list-hubs: + parameters: + path: + sectionId: 442546 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + createCustomHub: + speakeasy-default-create-custom-hub: + parameters: + path: + sectionId: 869922 + query: + metadataItemId: 703843 + promotedToRecommended: 1 + promotedToOwnHome: 1 + promotedToSharedHome: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + moveHub: + speakeasy-default-move-hub: + parameters: + path: + sectionId: 755710 + query: + identifier: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + deleteCustomHub: + speakeasy-default-delete-custom-hub: + parameters: + path: + sectionId: 625677 + identifier: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + updateHubVisibility: + speakeasy-default-update-hub-visibility: + parameters: + path: + sectionId: 341650 + identifier: "" + query: + promotedToRecommended: 1 + promotedToOwnHome: 1 + promotedToSharedHome: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + searchHubs: + speakeasy-default-search-hubs: + parameters: + query: + query: "" + sectionId: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + voiceSearchHubs: + speakeasy-default-voice-search-hubs: + parameters: + query: + query: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + getLibraryItems: + speakeasy-default-get-library-items: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + deleteCaches: {} + cleanBundles: {} + ingestTransientItem: + speakeasy-default-ingest-transient-item: + parameters: + query: + url: "file:///storage%2Femulated%2F0%2FArcher-S01E01.mkv" + virtualFilePath: "/Avatar.mkv" + computeHashes: 1 + ingestNonMatches: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getLibraryMatches: + speakeasy-default-get-library-matches: + parameters: + query: + includeFullMetadata: 1 + includeAncestorMetadata: 1 + includeAlternateMetadataSources: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + optimizeDatabase: + speakeasy-default-optimize-database: + parameters: + query: + async: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getRandomArtwork: + speakeasy-default-get-random-artwork: + parameters: + query: + sections: [5, 6] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getSections: + speakeasy-default-get-sections: + responses: + "200": + application/json: {} + addSection: + speakeasy-default-add-section: + parameters: + query: + name: "" + type: 39544 + agent: "" + language: "" + locations: ["O:\\fatboy\\Media\\Ripped\\Music", "O:\\fatboy\\Media\\My Music"] + prefs: {} + relative: 1 + importFromiTunes: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Directory": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + stopAllRefreshes: + speakeasy-default-stop-all-refreshes: + responses: + "200": + application/json: {"MediaContainer": {"livetv": 7, "machineIdentifier": "0123456789abcdef0123456789abcdef012345678", "musicAnalysis": 2, "myPlexMappingState": "mapped", "myPlexSigninState": "ok", "offlineTranscode": 1}} + getSectionsPrefs: + speakeasy-default-get-sections-prefs: + parameters: + query: + type: 460221 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"livetv": 7, "machineIdentifier": "0123456789abcdef0123456789abcdef012345678", "musicAnalysis": 2, "myPlexMappingState": "mapped", "myPlexSigninState": "ok", "offlineTranscode": 1}} + refreshSectionsMetadata: + speakeasy-default-refresh-sections-metadata: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getTags: + speakeasy-default-get-tags: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + deleteMetadataItem: + speakeasy-default-delete-metadata-item: + parameters: + path: + ids: "" + query: + proxy: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + editMetadataItem: + speakeasy-default-edit-metadata-item: + parameters: + path: + ids: ["", ""] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + detectAds: + speakeasy-default-detect-ads: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getAllItemLeaves: + speakeasy-default-get-all-item-leaves: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + analyzeMetadata: + speakeasy-default-analyze-metadata: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + generateThumbs: + speakeasy-default-generate-thumbs: + parameters: + path: + ids: "" + query: + force: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + detectCredits: + speakeasy-default-detect-credits: + parameters: + path: + ids: "" + query: + force: 1 + manual: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getExtras: + speakeasy-default-get-extras: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + addExtras: + speakeasy-default-add-extras: + parameters: + path: + ids: "" + query: + url: "https://super-mortise.biz/" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getFile: + speakeasy-default-get-file: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + audio/mpeg3: "x-file: example.file" + image/jpeg: "x-file: example.file" + startBifGeneration: + speakeasy-default-start-bif-generation: + parameters: + path: + ids: "" + query: + force: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + detectIntros: + speakeasy-default-detect-intros: + parameters: + path: + ids: "" + query: + force: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + createMarker: + speakeasy-default-create-marker: + parameters: + path: + ids: "" + query: + type: 248391 + startTimeOffset: 535191 + attributes: {} + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + matchItem: + speakeasy-default-match-item: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + listMatches: + speakeasy-default-list-matches: + parameters: + path: + ids: "" + query: + manual: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + mergeItems: + speakeasy-default-merge-items: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + listSonicallySimilar: + speakeasy-default-list-sonically-similar: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + setItemPreferences: + speakeasy-default-set-item-preferences: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + refreshItemsMetadata: + speakeasy-default-refresh-items-metadata: + parameters: + path: + ids: "" + query: + markUpdated: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getRelatedItems: + speakeasy-default-get-related-items: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Hub": [{"type": "track", "context": "hub.home.onDeck", "hubIdentifier": "home.onDeck", "key": "/hubs/sections/home/onDeck", "Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}], "size": 1, "subtype": "podcast", "totalSize": 8}]}} + listSimilar: + speakeasy-default-list-similar: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + splitItem: + speakeasy-default-split-item: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + addSubtitles: + speakeasy-default-add-subtitles: + parameters: + path: + ids: "" + query: + forced: 1 + hearingImpaired: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getItemTree: + speakeasy-default-get-item-tree: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"MetadataItem": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "MetadataItem": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}]}} + unmatch: + speakeasy-default-unmatch: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + listTopUsers: + speakeasy-default-list-top-users: + parameters: + path: + ids: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + detectVoiceActivity: + speakeasy-default-detect-voice-activity: + parameters: + path: + ids: "" + query: + force: 1 + manual: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getAugmentationStatus: + speakeasy-default-get-augmentation-status: + parameters: + path: + augmentationId: "" + query: + wait: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + setStreamSelection: + speakeasy-default-set-stream-selection: + parameters: + path: + partId: 360489 + query: + allParts: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getPerson: + speakeasy-default-get-person: + parameters: + path: + personId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Directory": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}} + listPersonMedia: + speakeasy-default-list-person-media: + parameters: + path: + personId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + deleteLibrarySection: + speakeasy-default-delete-library-section: + parameters: + path: + sectionId: "" + query: + async: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getLibraryDetails: + speakeasy-default-get-library-details: + parameters: + path: + sectionId: "" + query: + includeDetails: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Directory": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + editSection: + speakeasy-default-edit-section: + parameters: + path: + sectionId: "" + query: + agent: "" + locations: ["O:\\fatboy\\Media\\Ripped\\Music", "O:\\fatboy\\Media\\My Music"] + prefs: {} + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + updateItems: + speakeasy-default-update-items: + parameters: + path: + sectionId: "" + query: + field.locked: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + startAnalysis: + speakeasy-default-start-analysis: + parameters: + path: + sectionId: 158829 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + autocomplete: + speakeasy-default-autocomplete: + parameters: + path: + sectionId: 942007 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getCollections: + speakeasy-default-get-collections: + parameters: + path: + sectionId: 348838 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getCommon: + speakeasy-default-get-common: + parameters: + path: + sectionId: 298154 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + emptyTrash: + speakeasy-default-empty-trash: + parameters: + path: + sectionId: 30052 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getSectionFilters: + speakeasy-default-get-section-filters: + parameters: + path: + sectionId: 380557 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getFirstCharacters: + speakeasy-default-get-first-characters: + parameters: + path: + sectionId: 3947 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + deleteIndexes: + speakeasy-default-delete-indexes: + parameters: + path: + sectionId: 588437 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + deleteIntros: + speakeasy-default-delete-intros: + parameters: + path: + sectionId: 498656 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getSectionPreferences: + speakeasy-default-get-section-preferences: + parameters: + path: + sectionId: 754869 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + setSectionPreferences: + speakeasy-default-set-section-preferences: + parameters: + path: + sectionId: 349936 + query: + prefs: {} + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + cancelRefresh: + speakeasy-default-cancel-refresh: + parameters: + path: + sectionId: 326852 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + refreshSection: + speakeasy-default-refresh-section: + parameters: + path: + sectionId: 450300 + query: + force: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getAvailableSorts: + speakeasy-default-get-available-sorts: + parameters: + path: + sectionId: 212498 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getStreamLevels: + speakeasy-default-get-stream-levels: + parameters: + path: + streamId: 447611 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getStreamLoudness: + speakeasy-default-get-stream-loudness: + parameters: + path: + streamId: 277271 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + text/plain: "" + getChapterImage: + speakeasy-default-get-chapter-image: + parameters: + path: + mediaId: 892563 + chapter: 48348 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + image/jpeg: "x-file: example.file" + setItemArtwork: + speakeasy-default-set-item-artwork: + parameters: + path: + ids: "" + element: "banner" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + updateItemArtwork: + speakeasy-default-update-item-artwork: + parameters: + path: + ids: "" + element: "clearLogo" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + deleteMarker: + speakeasy-default-delete-marker: + parameters: + path: + ids: "" + marker: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + editMarker: + speakeasy-default-edit-marker: + parameters: + path: + ids: "" + marker: "" + query: + type: 884347 + startTimeOffset: 517251 + attributes: {} + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + deleteMediaItem: + speakeasy-default-delete-media-item: + parameters: + path: + ids: "" + mediaItem: "" + query: + proxy: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getPartIndex: + speakeasy-default-get-part-index: + parameters: + path: + partId: 724750 + index: "sd" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/octet-stream: "x-file: example.file" + deleteCollection: + speakeasy-default-delete-collection: + parameters: + path: + sectionId: 283619 + collectionId: 680895 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getSectionImage: + speakeasy-default-get-section-image: + parameters: + path: + sectionId: 925611 + updatedAt: 117413 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + deleteStream: + speakeasy-default-delete-stream: + parameters: + path: + streamId: 841510 + ext: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getStream: + speakeasy-default-get-stream: + parameters: + path: + streamId: 314506 + ext: "" + query: + autoAdjustSubtitle: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + setStreamOffset: + speakeasy-default-set-stream-offset: + parameters: + path: + streamId: 606295 + ext: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getItemArtwork: + speakeasy-default-get-item-artwork: + parameters: + path: + ids: "" + element: "poster" + timestamp: 999555 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + audio/mpeg3: "x-file: example.file" + image/jpeg: "x-file: example.file" + getMediaPart: + speakeasy-default-get-media-part: + parameters: + path: + partId: 877105 + changestamp: 970622 + filename: "example.file" + query: + download: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getImageFromBif: + speakeasy-default-get-image-from-bif: + parameters: + path: + partId: 304273 + index: "sd" + offset: 939569 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + image/jpeg: "x-file: example.file" + createCollection: + speakeasy-default-create-collection: + parameters: + query: + sectionId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + listDVRs: + speakeasy-default-list-DV-rs: + responses: + "200": + application/json: {} + createDVR: + speakeasy-default-create-DVR: + parameters: + query: + lineup: "lineup://tv.plex.providers.epg.onconnect/USA-HI51418-DEFAULT" + device: ["device[]=device://tv.plex.grabbers.hdhomerun/1053C0CA"] + language: "eng" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + deleteDVR: + speakeasy-default-delete-DVR: + parameters: + path: + dvrId: 855088 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getDVR: + speakeasy-default-get-DVR: + parameters: + path: + dvrId: 973518 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + deleteLineup: + speakeasy-default-delete-lineup: + parameters: + path: + dvrId: 454470 + query: + lineup: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + addLineup: + speakeasy-default-add-lineup: + parameters: + path: + dvrId: 945235 + query: + lineup: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + setDVRPreferences: + speakeasy-default-set-DVR-preferences: + parameters: + path: + dvrId: 116357 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + stopDVRReload: + speakeasy-default-stop-DVR-reload: + parameters: + path: + dvrId: 348053 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + reloadGuide: + speakeasy-default-reload-guide: + parameters: + path: + dvrId: 140753 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + tuneChannel: + speakeasy-default-tune-channel: + parameters: + path: + dvrId: 834281 + channel: "2.1" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + removeDeviceFromDVR: + speakeasy-default-remove-device-from-DVR: + parameters: + path: + dvrId: 945416 + deviceId: 260761 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + addDeviceToDVR: + speakeasy-default-add-device-to-DVR: + parameters: + path: + dvrId: 334755 + deviceId: 852930 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + computeChannelMap: + speakeasy-default-compute-channel-map: + parameters: + query: + device: "" + lineup: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getChannels: + speakeasy-default-get-channels: + parameters: + query: + lineup: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getCountries: + speakeasy-default-get-countries: + responses: + "200": + application/json: {} + getAllLanguages: + speakeasy-default-get-all-languages: + responses: + "200": + application/json: {} + getLineup: + speakeasy-default-get-lineup: + parameters: + query: + device: "" + lineupGroup: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getLineupChannels: + speakeasy-default-get-lineup-channels: + parameters: + query: + lineup: ["", ""] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getCountriesLineups: + speakeasy-default-get-countries-lineups: + parameters: + path: + country: "Malawi" + epgId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getCountryRegions: + speakeasy-default-get-country-regions: + parameters: + path: + country: "Morocco" + epgId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + listLineups: + speakeasy-default-list-lineups: + parameters: + path: + country: "Vanuatu" + epgId: "" + region: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getLiveTVSession: + speakeasy-default-get-live-TV-session: + parameters: + path: + sessionId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getSessionPlaylistIndex: + speakeasy-default-get-session-playlist-index: + parameters: + path: + sessionId: "" + consumerId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getSessionSegment: + speakeasy-default-get-session-segment: + parameters: + path: + sessionId: "" + consumerId: "" + segmentId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + writeLog: + speakeasy-default-write-log: + requestBody: + text/plain: "x-file: example.file" + writeMessage: + speakeasy-default-write-message: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + enablePapertrail: + speakeasy-default-enable-papertrail: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getAvailableGrabbers: + speakeasy-default-get-available-grabbers: + parameters: + query: + protocol: "livetv" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + listDevices: + speakeasy-default-list-devices: + responses: + "200": + application/json: {} + addDevice: + speakeasy-default-add-device: + parameters: + query: + uri: "http://10.0.0.5" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + discoverDevices: + speakeasy-default-discover-devices: + responses: + "200": + application/json: {} + removeDevice: + speakeasy-default-remove-device: + parameters: + path: + deviceId: 685908 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getDeviceDetails: + speakeasy-default-get-device-details: + parameters: + path: + deviceId: 170949 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + modifyDevice: + speakeasy-default-modify-device: + parameters: + path: + deviceId: 879135 + query: + enabled: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + setChannelmap: + speakeasy-default-set-channelmap: + parameters: + path: + deviceId: 937661 + query: + channelMapping: {} + channelMappingByKey: {} + channelsEnabled: ["46.1,44.1,45.1"] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getDevicesChannels: + speakeasy-default-get-devices-channels: + parameters: + path: + deviceId: 517209 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + setDevicePreferences: + speakeasy-default-set-device-preferences: + parameters: + path: + deviceId: 420973 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + stopScan: + speakeasy-default-stop-scan: + parameters: + path: + deviceId: 576494 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + scan: + speakeasy-default-scan: + parameters: + path: + deviceId: 57391 + query: + source: "Cable" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getThumb: + speakeasy-default-get-thumb: + parameters: + path: + deviceId: 960617 + version: 1025 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + listProviders: + speakeasy-default-list-providers: + responses: + "200": + application/json: {"MediaContainer": {"livetv": 7, "machineIdentifier": "0123456789abcdef0123456789abcdef012345678", "musicAnalysis": 2, "myPlexMappingState": "mapped", "myPlexSigninState": "ok", "offlineTranscode": 1}} + addProvider: + speakeasy-default-add-provider: + parameters: + query: + url: "https://steep-obedience.name/" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + refreshProviders: {} + deleteMediaProvider: + speakeasy-default-delete-media-provider: + parameters: + path: + provider: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getAllSubscriptions: + speakeasy-default-get-all-subscriptions: + parameters: + query: + includeGrabs: 1 + includeStorage: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + createSubscription: + speakeasy-default-create-subscription: + parameters: + query: + targetLibrarySectionID: 1 + targetSectionLocationID: 3 + type: 2 + hints: {} + prefs: {} + params: {} + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + processSubscriptions: {} + getScheduledRecordings: + speakeasy-default-get-scheduled-recordings: + responses: + "200": + application/json: {"MediaContainer": {"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}} + getTemplate: + speakeasy-default-get-template: + parameters: + query: + guid: "plex://episode/5fc70265c40548002d539d23" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"SubscriptionTemplate": [{"MediaSubscription": [{"title": "This Episode", "MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}]}} + cancelGrab: + speakeasy-default-cancel-grab: + parameters: + path: + operationId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + deleteSubscription: + speakeasy-default-delete-subscription: + parameters: + path: + subscriptionId: 974618 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getSubscription: + speakeasy-default-get-subscription: + parameters: + path: + subscriptionId: 186713 + query: + includeGrabs: 1 + includeStorage: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + editSubscriptionPreferences: + speakeasy-default-edit-subscription-preferences: + parameters: + path: + subscriptionId: 673918 + query: + prefs: {} + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + reorderSubscription: + speakeasy-default-reorder-subscription: + parameters: + path: + subscriptionId: 440634 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"MediaSubscription": [{"MediaGrabOperation": [{"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}]}]}} + transcodeImage: + speakeasy-default-transcode-image: + parameters: + query: + url: "/library/metadata/265/thumb/1715112705" + background: "#ff5522" + upscale: 1 + minSize: 1 + rotate: 1 + blendColor: "#ff5522" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + image/jpeg: "x-file: example.file" + image/png: "x-file: example.file" + image/x-portable-pixmap: "x-file: example.file" + makeDecision: + speakeasy-default-make-decision: + parameters: + path: + transcodeType: "music" + query: + advancedSubtitles: "burn" + audioBoost: 50 + audioChannelCount: 5 + autoAdjustQuality: 1 + autoAdjustSubtitle: 1 + directPlay: 1 + directStream: 1 + directStreamAudio: 1 + disableResolutionRotation: 1 + hasMDE: 1 + location: "wan" + mediaBufferSize: 102400 + mediaIndex: 0 + musicBitrate: 5000 + offset: 90.5 + partIndex: 0 + path: "/library/metadata/151671" + peakBitrate: 12000 + photoResolution: "1080x1080" + protocol: "dash" + secondsPerSegment: 5 + subtitleSize: 50 + subtitles: "none" + videoBitrate: 12000 + videoQuality: 50 + videoResolution: "1080x1080" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + X-Plex-Client-Profile-Extra: "add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)" + X-Plex-Client-Profile-Name: "generic" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + triggerFallback: + speakeasy-default-trigger-fallback: + parameters: + path: + transcodeType: "audio" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + transcodeSubtitles: + speakeasy-default-transcode-subtitles: + parameters: + path: + transcodeType: "audio" + query: + advancedSubtitles: "burn" + audioBoost: 50 + audioChannelCount: 5 + autoAdjustQuality: 1 + autoAdjustSubtitle: 1 + directPlay: 1 + directStream: 1 + directStreamAudio: 1 + disableResolutionRotation: 1 + hasMDE: 1 + location: "wan" + mediaBufferSize: 102400 + mediaIndex: 0 + musicBitrate: 5000 + offset: 90.5 + partIndex: 0 + path: "/library/metadata/151671" + peakBitrate: 12000 + photoResolution: "1080x1080" + protocol: "dash" + secondsPerSegment: 5 + subtitleSize: 50 + subtitles: "embedded" + videoBitrate: 12000 + videoQuality: 50 + videoResolution: "1080x1080" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + X-Plex-Client-Profile-Extra: "add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)" + X-Plex-Client-Profile-Name: "generic" + startTranscodeSession: + speakeasy-default-start-transcode-session: + parameters: + path: + transcodeType: "music" + extension: "mpd" + query: + advancedSubtitles: "burn" + audioBoost: 50 + audioChannelCount: 5 + autoAdjustQuality: 1 + autoAdjustSubtitle: 1 + directPlay: 1 + directStream: 1 + directStreamAudio: 1 + disableResolutionRotation: 1 + hasMDE: 1 + location: "wan" + mediaBufferSize: 102400 + mediaIndex: 0 + musicBitrate: 5000 + offset: 90.5 + partIndex: 0 + path: "/library/metadata/151671" + peakBitrate: 12000 + photoResolution: "1080x1080" + protocol: "dash" + secondsPerSegment: 5 + subtitleSize: 50 + subtitles: "none" + videoBitrate: 12000 + videoQuality: 50 + videoResolution: "1080x1080" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + X-Plex-Client-Profile-Extra: "add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)" + X-Plex-Client-Profile-Name: "generic" + responses: + "200": + video/x-matroska: "x-file: example.file" + listPlaylists: + speakeasy-default-list-playlists: + parameters: + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getPlaylistItems: + speakeasy-default-get-playlist-items: + parameters: + path: + playlistId: 118195 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getPlaylistGenerators: + speakeasy-default-get-playlist-generators: + parameters: + path: + playlistId: 162342 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + clearPlaylistItems: + speakeasy-default-clear-playlist-items: + parameters: + path: + playlistId: 552140 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + addPlaylistItems: + speakeasy-default-add-playlist-items: + parameters: + path: + playlistId: 533723 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + deletePlaylistItem: + speakeasy-default-delete-playlist-item: + parameters: + path: + playlistId: 981646 + generatorId: 194010 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getPlaylistGenerator: + speakeasy-default-get-playlist-generator: + parameters: + path: + playlistId: 744880 + generatorId: 322168 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + modifyPlaylistGenerator: + speakeasy-default-modify-playlist-generator: + parameters: + path: + playlistId: 972007 + generatorId: 208334 + query: + Item: {"Location": {"uri": "library://82503060-0d68-4603-b594-8b071d54819e/item/%2Flibrary%2Fmetadata%2F146"}, "locationID": -1, "Policy": {"value": null, "scope": "all", "unwatched": 0}, "target": "", "targetTagID": 1, "title": "Jack-Jack Attack", "type": 42} + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getPlaylistGeneratorItems: + speakeasy-default-get-playlist-generator-items: + parameters: + path: + playlistId: 77230 + generatorId: 979714 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": {"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}}} + movePlaylistItem: + speakeasy-default-move-playlist-item: + parameters: + path: + playlistId: 940298 + playlistItemId: 375626 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + refreshPlaylist: + speakeasy-default-refresh-playlist: + parameters: + path: + playlistId: 895314 + generatorId: 629742 + metadataId: 724422 + action: "disable" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + createPlayQueue: + speakeasy-default-create-play-queue: + parameters: + query: + type: "audio" + shuffle: 1 + repeat: 1 + continuous: 1 + recursive: 1 + onDeck: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getPlayQueue: + speakeasy-default-get-play-queue: + parameters: + path: + playQueueId: 210646 + query: + own: 1 + includeBefore: 1 + includeAfter: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + addToPlayQueue: + speakeasy-default-add-to-play-queue: + parameters: + path: + playQueueId: 919248 + query: + next: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + clearPlayQueue: + speakeasy-default-clear-play-queue: + parameters: + path: + playQueueId: 86357 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + resetPlayQueue: + speakeasy-default-reset-play-queue: + parameters: + path: + playQueueId: 581891 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + shuffle: + speakeasy-default-shuffle: + parameters: + path: + playQueueId: 316150 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + unshuffle: + speakeasy-default-unshuffle: + parameters: + path: + playQueueId: 484388 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + deletePlayQueueItem: + speakeasy-default-delete-play-queue-item: + parameters: + path: + playQueueId: 285738 + playQueueItemId: 464354 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + movePlayQueueItem: + speakeasy-default-move-play-queue-item: + parameters: + path: + playQueueId: 31341 + playQueueItemId: 495865 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getColors: + speakeasy-default-get-colors: + parameters: + query: + url: "/library/metadata/217745/art/1718931408" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getImage: + speakeasy-default-get-image: + parameters: + query: + topLeft: "3f280a" + topRight: "6b4713" + bottomRight: "0f2a43" + bottomLeft: "1c425d" + width: 1920 + height: 1080 + noise: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + image/png: "x-file: example.file" + listSessions: + speakeasy-default-list-sessions: + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getBackgroundTasks: + speakeasy-default-get-background-tasks: + responses: + "200": + application/json: {} + listPlaybackHistory: + speakeasy-default-list-playback-history: + parameters: + query: + sort: ["viewedAt:desc,accountID"] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + terminateSession: + speakeasy-default-terminate-session: + parameters: + query: + sessionId: "cdefghijklmnopqrstuvwxyz" + reason: "Stop Playing" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + deleteHistory: + speakeasy-default-delete-history: + parameters: + path: + historyId: 953579 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getHistoryItem: + speakeasy-default-get-history-item: + parameters: + path: + historyId: 832213 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + checkUpdates: + speakeasy-default-check-updates: + parameters: + query: + download: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + getUpdatesStatus: + speakeasy-default-get-updates-status: + responses: + "200": + application/json: {} + getCollectionItems: + speakeasy-default-get-collection-items: + parameters: + path: + collectionId: 314585 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getMetadataItem: + speakeasy-default-get-metadata-item: + parameters: + path: + ids: [] + query: + asyncCheckFiles: 1 + asyncRefreshLocalMediaAgent: 1 + asyncRefreshAnalysis: 1 + checkFiles: 1 + skipRefresh: 1 + checkFileAvailability: 1 + asyncAugmentMetadata: 1 + augmentCount: 1 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getAlbums: + speakeasy-default-get-albums: + parameters: + path: + sectionId: 817133 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + listContent: + speakeasy-default-list-content: + parameters: + path: + sectionId: "" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getAllLeaves: + speakeasy-default-get-all-leaves: + parameters: + path: + sectionId: 633197 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getArts: + speakeasy-default-get-arts: + parameters: + path: + sectionId: 859200 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getCategories: + speakeasy-default-get-categories: + parameters: + path: + sectionId: 21841 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getCluster: + speakeasy-default-get-cluster: + parameters: + path: + sectionId: 138560 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getSonicPath: + speakeasy-default-get-sonic-path: + parameters: + path: + sectionId: 914549 + query: + startID: 629990 + endID: 687740 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getFolders: + speakeasy-default-get-folders: + parameters: + path: + sectionId: 892532 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + listMoments: + speakeasy-default-list-moments: + parameters: + path: + sectionId: 403239 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {} + getSonicallySimilar: + speakeasy-default-get-sonically-similar: + parameters: + path: + sectionId: 525956 + query: + values: [] + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + getCollectionImage: + speakeasy-default-get-collection-image: + parameters: + path: + collectionId: 474227 + updatedAt: 759379 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + image/jpeg: "x-file: example.file" + addCollectionItems: + speakeasy-default-add-collection-items: + parameters: + path: + collectionId: 338144 + query: + uri: "https://expensive-bakeware.com" + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + deleteCollectionItem: + speakeasy-default-delete-collection-item: + parameters: + path: + collectionId: 320928 + itemId: 406983 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} + moveCollectionItem: + speakeasy-default-move-collection-item: + parameters: + path: + collectionId: 239532 + itemId: 513864 + header: + accepts: "application/xml" + X-Plex-Client-Identifier: "abc123" + X-Plex-Product: "Plex for Roku" + X-Plex-Version: "2.4.1" + X-Plex-Platform: "Roku" + X-Plex-Platform-Version: "4.3 build 1057" + X-Plex-Device: "Roku 3" + X-Plex-Model: "4200X" + X-Plex-Device-Vendor: "Roku" + X-Plex-Device-Name: "Living Room TV" + X-Plex-Marketplace: "googlePlay" + responses: + "200": + application/json: {"MediaContainer": {"Metadata": [{"Autotag": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Country": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Director": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Genre": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Guid": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Media": [{"aspectRatio": 2.35, "audioChannels": 2, "audioCodec": "aac", "audioProfile": "lc", "bitrate": 5612, "container": "mov", "duration": 150192, "has64bitOffsets": false, "hasVoiceActivity": true, "height": 544, "id": 1, "optimizedForStreaming": false, "Part": [{"audioProfile": "lc", "container": "mov", "duration": 150192, "file": "/home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov", "has64bitOffsets": false, "id": 1, "key": "/library/parts/1/1531779263/file.mov", "optimizedForStreaming": false, "size": 105355654, "Stream": [{"default": true, "audioChannelLayout": "stereo", "bitDepth": 8, "bitrate": 5466, "canAutoSync": true, "chromaLocation": "topleft", "chromaSubsampling": "4:2:0", "codec": "h264", "colorPrimaries": "bt709", "colorRange": "tv", "colorSpace": "bt709", "colorTrc": "bt709", "displayTitle": "English (H.264 Main)", "frameRate": 23.976, "hasScalingMatrix": false, "height": 544, "id": 1, "index": 0, "key": "/library/streams/1", "language": "English", "languageCode": "eng", "level": 31, "profile": "main", "refFrames": 2, "samplingRate": 48000, "streamIdentifier": 1, "streamType": 1, "width": 1280}], "videoProfile": "main"}], "videoCodec": "h264", "videoFrameRate": "24p", "videoProfile": "main", "videoResolution": "720", "width": 1280}], "Rating": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Role": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}], "Writer": [{"filter": "actor=49", "role": "Secretary", "tag": "Shaun Lawton", "tagKey": "5d3ee12c4cde6a001c3e0b27", "thumb": "http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg"}]}]}} examplesVersion: 1.0.2 generatedTests: {} +releaseNotes: "## Python SDK Changes Detected:\n* `plex_api.butler.start_task()`: \n * `request` **Changed** **Breaking** :warning:\n * `error` **Changed** **Breaking** :warning:\n* `plex_api.butler.stop_task()`: \n * `request` **Changed** **Breaking** :warning:\n * `error` **Changed** **Breaking** :warning:\n* `plex_api.updater.apply_updates()`: \n * `request` **Changed** **Breaking** :warning:\n * `error` **Changed** **Breaking** :warning:\n* `plex_api.general.get_server_info()`: **Added**\n* `plex_api.general.get_identity()`: **Added**\n* `plex_api.general.get_source_connection_information()`: **Added**\n* `plex_api.general.get_transient_token()`: **Added**\n* `plex_api.events.get_notifications()`: **Added**\n* `plex_api.events.connect_web_socket()`: **Added**\n* `plex_api.preferences.get_all_preferences()`: **Added**\n* `plex_api.preferences.set_preferences()`: **Added**\n* `plex_api.preferences.get_preference()`: **Added**\n* `plex_api.rate.set_rating()`: **Added**\n* `plex_api.timeline.mark_played()`: **Added**\n* `plex_api.timeline.report()`: **Added**\n* `plex_api.timeline.unscrobble()`: **Added**\n* `plex_api.activities.list_activities()`: **Added**\n* `plex_api.activities.cancel_activity()`: **Added**\n* `plex_api.butler.stop_tasks()`: **Added**\n* `plex_api.butler.get_tasks()`: **Added**\n* `plex_api.butler.start_tasks()`: **Added**\n* `plex_api.download_queue.create_download_queue()`: **Added**\n* `plex_api.download_queue.get_download_queue()`: **Added**\n* `plex_api.download_queue.add_download_queue_items()`: **Added**\n* `plex_api.download_queue.list_download_queue_items()`: **Added**\n* `plex_api.download_queue.get_item_decision()`: **Added**\n* `plex_api.download_queue.get_download_queue_media()`: **Added**\n* `plex_api.download_queue.remove_download_queue_items()`: **Added**\n* `plex_api.download_queue.get_download_queue_items()`: **Added**\n* `plex_api.download_queue.restart_processing_download_queue_items()`: **Added**\n* `plex_api.hubs.get_all_hubs()`: **Added**\n* `plex_api.hubs.get_continue_watching()`: **Added**\n* `plex_api.hubs.get_hub_items()`: **Added**\n* `plex_api.hubs.get_promoted_hubs()`: **Added**\n* `plex_api.hubs.get_metadata_hubs()`: **Added**\n* `plex_api.hubs.get_postplay_hubs()`: **Added**\n* `plex_api.hubs.get_related_hubs()`: **Added**\n* `plex_api.hubs.get_section_hubs()`: **Added**\n* `plex_api.hubs.reset_section_defaults()`: **Added**\n* `plex_api.hubs.list_hubs()`: **Added**\n* `plex_api.hubs.create_custom_hub()`: **Added**\n* `plex_api.hubs.move_hub()`: **Added**\n* `plex_api.hubs.delete_custom_hub()`: **Added**\n* `plex_api.hubs.update_hub_visibility()`: **Added**\n* `plex_api.search.search_hubs()`: **Added**\n* `plex_api.search.voice_search_hubs()`: **Added**\n* `plex_api.library.get_library_items()`: **Added**\n* `plex_api.library.delete_caches()`: **Added**\n* `plex_api.library.clean_bundles()`: **Added**\n* `plex_api.library.ingest_transient_item()`: **Added**\n* `plex_api.library.get_library_matches()`: **Added**\n* `plex_api.library.optimize_database()`: **Added**\n* `plex_api.library.get_random_artwork()`: **Added**\n* `plex_api.library.get_sections()`: **Added**\n* `plex_api.library.add_section()`: **Added**\n* `plex_api.library.stop_all_refreshes()`: **Added**\n* `plex_api.library.get_sections_prefs()`: **Added**\n* `plex_api.library.refresh_sections_metadata()`: **Added**\n* `plex_api.library.get_tags()`: **Added**\n* `plex_api.library.delete_metadata_item()`: **Added**\n* `plex_api.library.edit_metadata_item()`: **Added**\n* `plex_api.library.detect_ads()`: **Added**\n* `plex_api.library.get_all_item_leaves()`: **Added**\n* `plex_api.library.analyze_metadata()`: **Added**\n* `plex_api.library.generate_thumbs()`: **Added**\n* `plex_api.library.detect_credits()`: **Added**\n* `plex_api.library.get_extras()`: **Added**\n* `plex_api.library.add_extras()`: **Added**\n* `plex_api.library.get_file()`: **Added**\n* `plex_api.library.start_bif_generation()`: **Added**\n* `plex_api.library.detect_intros()`: **Added**\n* `plex_api.library.create_marker()`: **Added**\n* `plex_api.library.match_item()`: **Added**\n* `plex_api.library.list_matches()`: **Added**\n* `plex_api.library.merge_items()`: **Added**\n* `plex_api.library.list_sonically_similar()`: **Added**\n* `plex_api.library.set_item_preferences()`: **Added**\n* `plex_api.library.refresh_items_metadata()`: **Added**\n* `plex_api.library.get_related_items()`: **Added**\n* `plex_api.library.list_similar()`: **Added**\n* `plex_api.library.split_item()`: **Added**\n* `plex_api.library.add_subtitles()`: **Added**\n* `plex_api.library.get_item_tree()`: **Added**\n* `plex_api.library.unmatch()`: **Added**\n* `plex_api.library.list_top_users()`: **Added**\n* `plex_api.library.detect_voice_activity()`: **Added**\n* `plex_api.library.get_augmentation_status()`: **Added**\n* `plex_api.library.set_stream_selection()`: **Added**\n* `plex_api.library.get_person()`: **Added**\n* `plex_api.library.list_person_media()`: **Added**\n* `plex_api.library.delete_library_section()`: **Added**\n* `plex_api.library.get_library_details()`: **Added**\n* `plex_api.library.edit_section()`: **Added**\n* `plex_api.library.update_items()`: **Added**\n* `plex_api.library.start_analysis()`: **Added**\n* `plex_api.library.autocomplete()`: **Added**\n* `plex_api.library.get_collections()`: **Added**\n* `plex_api.library.get_common()`: **Added**\n* `plex_api.library.empty_trash()`: **Added**\n* `plex_api.library.get_section_filters()`: **Added**\n* `plex_api.library.get_first_characters()`: **Added**\n* `plex_api.library.delete_indexes()`: **Added**\n* `plex_api.library.delete_intros()`: **Added**\n* `plex_api.library.get_section_preferences()`: **Added**\n* `plex_api.library.set_section_preferences()`: **Added**\n* `plex_api.library.cancel_refresh()`: **Added**\n* `plex_api.library.refresh_section()`: **Added**\n* `plex_api.library.get_available_sorts()`: **Added**\n* `plex_api.library.get_stream_levels()`: **Added**\n* `plex_api.library.get_stream_loudness()`: **Added**\n* `plex_api.library.get_chapter_image()`: **Added**\n* `plex_api.library.set_item_artwork()`: **Added**\n* `plex_api.library.update_item_artwork()`: **Added**\n* `plex_api.library.delete_marker()`: **Added**\n* `plex_api.library.edit_marker()`: **Added**\n* `plex_api.library.delete_media_item()`: **Added**\n* `plex_api.library.get_part_index()`: **Added**\n* `plex_api.library.delete_collection()`: **Added**\n* `plex_api.library.get_section_image()`: **Added**\n* `plex_api.library.delete_stream()`: **Added**\n* `plex_api.library.get_stream()`: **Added**\n* `plex_api.library.set_stream_offset()`: **Added**\n* `plex_api.library.get_item_artwork()`: **Added**\n* `plex_api.library.get_media_part()`: **Added**\n* `plex_api.library.get_image_from_bif()`: **Added**\n* `plex_api.collections.create_collection()`: **Added**\n* `plex_api.dv_rs.list_dv_rs()`: **Added**\n* `plex_api.dv_rs.create_dvr()`: **Added**\n* `plex_api.dv_rs.delete_dvr()`: **Added**\n* `plex_api.dv_rs.get_dvr()`: **Added**\n* `plex_api.dv_rs.delete_lineup()`: **Added**\n* `plex_api.dv_rs.add_lineup()`: **Added**\n* `plex_api.dv_rs.set_dvr_preferences()`: **Added**\n* `plex_api.dv_rs.stop_dvr_reload()`: **Added**\n* `plex_api.dv_rs.reload_guide()`: **Added**\n* `plex_api.dv_rs.tune_channel()`: **Added**\n* `plex_api.dv_rs.remove_device_from_dvr()`: **Added**\n* `plex_api.dv_rs.add_device_to_dvr()`: **Added**\n* `plex_api.epg.compute_channel_map()`: **Added**\n* `plex_api.epg.get_channels()`: **Added**\n* `plex_api.epg.get_countries()`: **Added**\n* `plex_api.epg.get_all_languages()`: **Added**\n* `plex_api.epg.get_lineup()`: **Added**\n* `plex_api.epg.get_lineup_channels()`: **Added**\n* `plex_api.epg.get_countries_lineups()`: **Added**\n* `plex_api.epg.get_country_regions()`: **Added**\n* `plex_api.epg.list_lineups()`: **Added**\n* `plex_api.live_tv.get_sessions()`: **Added**\n* `plex_api.live_tv.get_live_tv_session()`: **Added**\n* `plex_api.live_tv.get_session_playlist_index()`: **Added**\n* `plex_api.live_tv.get_session_segment()`: **Added**\n* `plex_api.log.write_log()`: **Added**\n* `plex_api.log.write_message()`: **Added**\n* `plex_api.log.enable_papertrail()`: **Added**\n* `plex_api.devices.get_available_grabbers()`: **Added**\n* `plex_api.devices.list_devices()`: **Added**\n* `plex_api.devices.add_device()`: **Added**\n* `plex_api.devices.discover_devices()`: **Added**\n* `plex_api.devices.remove_device()`: **Added**\n* `plex_api.devices.get_device_details()`: **Added**\n* `plex_api.devices.modify_device()`: **Added**\n* `plex_api.devices.set_channelmap()`: **Added**\n* `plex_api.devices.get_devices_channels()`: **Added**\n* `plex_api.devices.set_device_preferences()`: **Added**\n* `plex_api.devices.stop_scan()`: **Added**\n* `plex_api.devices.scan()`: **Added**\n* `plex_api.devices.get_thumb()`: **Added**\n* `plex_api.provider.list_providers()`: **Added**\n* `plex_api.provider.add_provider()`: **Added**\n* `plex_api.provider.refresh_providers()`: **Added**\n* `plex_api.provider.delete_media_provider()`: **Added**\n* `plex_api.subscriptions.get_all_subscriptions()`: **Added**\n* `plex_api.subscriptions.create_subscription()`: **Added**\n* `plex_api.subscriptions.process_subscriptions()`: **Added**\n* `plex_api.subscriptions.get_scheduled_recordings()`: **Added**\n* `plex_api.subscriptions.get_template()`: **Added**\n* `plex_api.subscriptions.cancel_grab()`: **Added**\n* `plex_api.subscriptions.delete_subscription()`: **Added**\n* `plex_api.subscriptions.get_subscription()`: **Added**\n* `plex_api.subscriptions.edit_subscription_preferences()`: **Added**\n* `plex_api.subscriptions.reorder_subscription()`: **Added**\n* `plex_api.transcoder.transcode_image()`: **Added**\n* `plex_api.transcoder.make_decision()`: **Added**\n* `plex_api.transcoder.trigger_fallback()`: **Added**\n* `plex_api.transcoder.transcode_subtitles()`: **Added**\n* `plex_api.transcoder.start_transcode_session()`: **Added**\n* `plex_api.playlist.list_playlists()`: **Added**\n* `plex_api.playlist.get_playlist()`: **Added**\n* `plex_api.playlist.get_playlist_items()`: **Added**\n* `plex_api.library_playlists.create_playlist()`: **Added**\n* `plex_api.library_playlists.upload_playlist()`: **Added**\n* `plex_api.library_playlists.delete_playlist()`: **Added**\n* `plex_api.library_playlists.update_playlist()`: **Added**\n* `plex_api.library_playlists.get_playlist_generators()`: **Added**\n* `plex_api.library_playlists.clear_playlist_items()`: **Added**\n* `plex_api.library_playlists.add_playlist_items()`: **Added**\n* `plex_api.library_playlists.delete_playlist_item()`: **Added**\n* `plex_api.library_playlists.get_playlist_generator()`: **Added**\n* `plex_api.library_playlists.modify_playlist_generator()`: **Added**\n* `plex_api.library_playlists.get_playlist_generator_items()`: **Added**\n* `plex_api.library_playlists.move_playlist_item()`: **Added**\n* `plex_api.library_playlists.refresh_playlist()`: **Added**\n* `plex_api.play_queue.create_play_queue()`: **Added**\n* `plex_api.play_queue.get_play_queue()`: **Added**\n* `plex_api.play_queue.add_to_play_queue()`: **Added**\n* `plex_api.play_queue.clear_play_queue()`: **Added**\n* `plex_api.play_queue.reset_play_queue()`: **Added**\n* `plex_api.play_queue.shuffle()`: **Added**\n* `plex_api.play_queue.unshuffle()`: **Added**\n* `plex_api.play_queue.delete_play_queue_item()`: **Added**\n* `plex_api.play_queue.move_play_queue_item()`: **Added**\n* `plex_api.ultra_blur.get_colors()`: **Added**\n* `plex_api.ultra_blur.get_image()`: **Added**\n* `plex_api.status.list_sessions()`: **Added**\n* `plex_api.status.get_background_tasks()`: **Added**\n* `plex_api.status.list_playback_history()`: **Added**\n* `plex_api.status.terminate_session()`: **Added**\n* `plex_api.status.delete_history()`: **Added**\n* `plex_api.status.get_history_item()`: **Added**\n* `plex_api.updater.check_updates()`: **Added**\n* `plex_api.updater.get_updates_status()`: **Added**\n* `plex_api.content.get_collection_items()`: **Added**\n* `plex_api.content.get_metadata_item()`: **Added**\n* `plex_api.content.get_albums()`: **Added**\n* `plex_api.content.list_content()`: **Added**\n* `plex_api.content.get_all_leaves()`: **Added**\n* `plex_api.content.get_arts()`: **Added**\n* `plex_api.content.get_categories()`: **Added**\n* `plex_api.content.get_cluster()`: **Added**\n* `plex_api.content.get_sonic_path()`: **Added**\n* `plex_api.content.get_folders()`: **Added**\n* `plex_api.content.list_moments()`: **Added**\n* `plex_api.content.get_sonically_similar()`: **Added**\n* `plex_api.content.get_collection_image()`: **Added**\n* `plex_api.library_collections.add_collection_items()`: **Added**\n* `plex_api.library_collections.delete_collection_item()`: **Added**\n* `plex_api.library_collections.move_collection_item()`: **Added**\n* `plex_api.server.get_server_capabilities()`: **Deleted** **Breaking** :warning:\n* `plex_api.server.get_server_preferences()`: **Deleted** **Breaking** :warning:\n* `plex_api.server.get_available_clients()`: **Deleted** **Breaking** :warning:\n* `plex_api.server.get_devices()`: **Deleted** **Breaking** :warning:\n* `plex_api.server.get-server-identity()`: **Deleted** **Breaking** :warning:\n* `plex_api.server.get_my_plex_account()`: **Deleted** **Breaking** :warning:\n* `plex_api.server.get_resized_photo()`: **Deleted** **Breaking** :warning:\n* `plex_api.server.get-media-providers()`: **Deleted** **Breaking** :warning:\n* `plex_api.server.get_server_list()`: **Deleted** **Breaking** :warning:\n* `plex_api.media.mark_played()`: **Deleted** **Breaking** :warning:\n* `plex_api.media.mark_unplayed()`: **Deleted** **Breaking** :warning:\n* `plex_api.media.update_play_progress()`: **Deleted** **Breaking** :warning:\n* `plex_api.media.get-banner-image()`: **Deleted** **Breaking** :warning:\n* `plex_api.media.get-thumb-image()`: **Deleted** **Breaking** :warning:\n* `plex_api.video.get_timeline()`: **Deleted** **Breaking** :warning:\n* `plex_api.video.start_universal_transcode()`: **Deleted** **Breaking** :warning:\n* `plex_api.activities.get_server_activities()`: **Deleted** **Breaking** :warning:\n* `plex_api.activities.cancel_server_activities()`: **Deleted** **Breaking** :warning:\n* `plex_api.butler.get_butler_tasks()`: **Deleted** **Breaking** :warning:\n* `plex_api.butler.start_all_tasks()`: **Deleted** **Breaking** :warning:\n* `plex_api.butler.stop_all_tasks()`: **Deleted** **Breaking** :warning:\n* `plex_api.plex.get_companions_data()`: **Deleted** **Breaking** :warning:\n* `plex_api.plex.get_user_friends()`: **Deleted** **Breaking** :warning:\n* `plex_api.plex.get_geo_data()`: **Deleted** **Breaking** :warning:\n* `plex_api.plex.get_home_data()`: **Deleted** **Breaking** :warning:\n* `plex_api.plex.get-server-resources()`: **Deleted** **Breaking** :warning:\n* `plex_api.plex.get_pin()`: **Deleted** **Breaking** :warning:\n* `plex_api.plex.get_token_by_pin_id()`: **Deleted** **Breaking** :warning:\n* `plex_api.hubs.get_global_hubs()`: **Deleted** **Breaking** :warning:\n* `plex_api.hubs.get-recently-added()`: **Deleted** **Breaking** :warning:\n* `plex_api.hubs.get_library_hubs()`: **Deleted** **Breaking** :warning:\n* `plex_api.search.perform_search()`: **Deleted** **Breaking** :warning:\n* `plex_api.search.perform_voice_search()`: **Deleted** **Breaking** :warning:\n* `plex_api.search.get_search_results()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get_file_hash()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get-recently-added-library()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get-all-libraries()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get-library-details()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.delete_library()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get-library-items()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get-library-sections-all()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get-refresh-library-metadata()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get-search-library()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get-genres-library()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get-countries-library()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get-actors-library()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get-search-all-libraries()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get-media-meta-data()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get-media-arts()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.post-media-arts()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get-media-posters()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.post-media-poster()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get_metadata_children()`: **Deleted** **Breaking** :warning:\n* `plex_api.library.get_top_watched_content()`: **Deleted** **Breaking** :warning:\n* `plex_api.watchlist.get-watch-list()`: **Deleted** **Breaking** :warning:\n* `plex_api.log.log_line()`: **Deleted** **Breaking** :warning:\n* `plex_api.log.log_multi_line()`: **Deleted** **Breaking** :warning:\n* `plex_api.log.enable_paper_trail()`: **Deleted** **Breaking** :warning:\n* `plex_api.playlists.create_playlist()`: **Deleted** **Breaking** :warning:\n* `plex_api.playlists.get_playlists()`: **Deleted** **Breaking** :warning:\n* `plex_api.playlists.get_playlist()`: **Deleted** **Breaking** :warning:\n* `plex_api.playlists.delete_playlist()`: **Deleted** **Breaking** :warning:\n* `plex_api.playlists.update_playlist()`: **Deleted** **Breaking** :warning:\n* `plex_api.playlists.get_playlist_contents()`: **Deleted** **Breaking** :warning:\n* `plex_api.playlists.clear_playlist_contents()`: **Deleted** **Breaking** :warning:\n* `plex_api.playlists.add_playlist_contents()`: **Deleted** **Breaking** :warning:\n* `plex_api.playlists.upload_playlist()`: **Deleted** **Breaking** :warning:\n* `plex_api.authentication.get_transient_token()`: **Deleted** **Breaking** :warning:\n* `plex_api.authentication.get_source_connection_information()`: **Deleted** **Breaking** :warning:\n* `plex_api.authentication.get_token_details()`: **Deleted** **Breaking** :warning:\n* `plex_api.authentication.post-users-sign-in-data()`: **Deleted** **Breaking** :warning:\n* `plex_api.statistics.get_statistics()`: **Deleted** **Breaking** :warning:\n* `plex_api.statistics.get_resources_statistics()`: **Deleted** **Breaking** :warning:\n* `plex_api.statistics.get_bandwidth_statistics()`: **Deleted** **Breaking** :warning:\n* `plex_api.sessions.get_sessions()`: **Deleted** **Breaking** :warning:\n* `plex_api.sessions.get_session_history()`: **Deleted** **Breaking** :warning:\n* `plex_api.sessions.get_transcode_sessions()`: **Deleted** **Breaking** :warning:\n* `plex_api.sessions.stop_transcode_session()`: **Deleted** **Breaking** :warning:\n* `plex_api.updater.get_update_status()`: **Deleted** **Breaking** :warning:\n* `plex_api.updater.check_for_updates()`: **Deleted** **Breaking** :warning:\n* `plex_api.users.get-users()`: **Deleted** **Breaking** :warning:\n" diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index cb99e76..e061694 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -22,13 +22,14 @@ generation: generateNewTests: false skipResponseBodyAssertions: false python: - version: 0.30.0 + version: 0.31.0 additionalDependencies: dev: {} main: {} allowedRedefinedBuiltins: - id - object + asyncMode: both author: LukeHagar authors: - Speakeasy @@ -52,6 +53,7 @@ python: shared: models/components webhooks: models/webhooks inputModelSuffix: input + legacyPyright: true maxMethodParams: 4 methodArguments: require-security-and-request moduleName: "" diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index a66c42f..a481806 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,4 +1,4 @@ -speakeasyVersion: 1.615.2 +speakeasyVersion: 1.636.3 sources: my-source: sourceNamespace: my-source @@ -8,26 +8,29 @@ sources: - latest plexapi: sourceNamespace: plexapi - sourceRevisionDigest: sha256:5125adfea1b0daea399c6ecf755e32795de6b4131465ae6a1f32ad73b3bc7787 - sourceBlobDigest: sha256:95cea18b6e5f7d76d35db0aba5bcb59e72cf204451a2b09a99be0e3e9ec1f4c0 + sourceRevisionDigest: sha256:bc60551015634fd59475cf17983ca3aedcab591426d526ab1e3634b1feedaec1 + sourceBlobDigest: sha256:fc8cd5343a94564b646830738f38e065d61e2ea63e4a1383ce07533586889950 tags: - latest - - speakeasy-sdk-regen-1757980982 + - speakeasy-sdk-regen-1760251608 + - 1.1.1 targets: plexpy: source: plexapi sourceNamespace: plexapi - sourceRevisionDigest: sha256:5125adfea1b0daea399c6ecf755e32795de6b4131465ae6a1f32ad73b3bc7787 - sourceBlobDigest: sha256:95cea18b6e5f7d76d35db0aba5bcb59e72cf204451a2b09a99be0e3e9ec1f4c0 + sourceRevisionDigest: sha256:bc60551015634fd59475cf17983ca3aedcab591426d526ab1e3634b1feedaec1 + sourceBlobDigest: sha256:fc8cd5343a94564b646830738f38e065d61e2ea63e4a1383ce07533586889950 codeSamplesNamespace: code-samples-python-plexpy - codeSamplesRevisionDigest: sha256:92cac100d2c46ee4ed5af2d9b877b2a5c3bcf8b6ad04a475b908adbaa6baab35 + codeSamplesRevisionDigest: sha256:ca94b40bc7e8f4d1efaf6c859f08d6ea17a0d50907c4d0adc7a2e6609f28d0dc workflow: workflowVersion: 1.0.0 speakeasyVersion: latest sources: plexapi: inputs: - - location: registry.speakeasyapi.dev/plexapi/plexapi/plexapi:main + - location: https://raw.githubusercontent.com/LukeHagar/plex-api-spec/refs/heads/main/plex-api-spec.yaml + registry: + location: registry.speakeasyapi.dev/plexapi/plexapi/plexapi targets: plexpy: target: python diff --git a/README.md b/README.md index 6cda43f..7beedb2 100644 --- a/README.md +++ b/README.md @@ -10,41 +10,13 @@ ## Summary -Plex-API: An Open API Spec for interacting with Plex.tv and Plex Media Server -# Plex Media Server OpenAPI Specification - -An Open Source OpenAPI Specification for Plex Media Server - -Automation and SDKs provided by [Speakeasy](https://speakeasyapi.dev/) - -## Documentation - -[API Documentation](https://plexapi.dev) - -## SDKs - -The following SDKs are generated from the OpenAPI Specification. They are automatically generated and may not be fully tested. If you find any issues, please open an issue on the [main specification Repository](https://github.com/LukeHagar/plex-api-spec). - -| Language | Repository | Releases | Other | -| --------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------- | -| Python | [GitHub](https://github.com/LukeHagar/plexpy) | [PyPI](https://pypi.org/project/plex-api-client/) | - | -| JavaScript/TypeScript | [GitHub](https://github.com/LukeHagar/plexjs) | [NPM](https://www.npmjs.com/package/@lukehagar/plexjs) \ [JSR](https://jsr.io/@lukehagar/plexjs) | - | -| Go | [GitHub](https://github.com/LukeHagar/plexgo) | [Releases](https://github.com/LukeHagar/plexgo/releases) | [GoDoc](https://pkg.go.dev/github.com/LukeHagar/plexgo) | -| Ruby | [GitHub](https://github.com/LukeHagar/plexruby) | [Releases](https://github.com/LukeHagar/plexruby/releases) | - | -| Swift | [GitHub](https://github.com/LukeHagar/plexswift) | [Releases](https://github.com/LukeHagar/plexswift/releases) | - | -| PHP | [GitHub](https://github.com/LukeHagar/plexphp) | [Releases](https://github.com/LukeHagar/plexphp/releases) | - | -| Java | [GitHub](https://github.com/LukeHagar/plexjava) | [Releases](https://github.com/LukeHagar/plexjava/releases) | - | -| C# | [GitHub](https://github.com/LukeHagar/plexcsharp) | [Releases](https://github.com/LukeHagar/plexcsharp/releases) | - ## Table of Contents * [plexpy](#plexpy) -* [Plex Media Server OpenAPI Specification](#plex-media-server-openapi-specification) - * [Documentation](#documentation) - * [SDKs](#sdks) * [SDK Installation](#sdk-installation) * [IDE Support](#ide-support) * [SDK Example Usage](#sdk-example-usage) @@ -147,40 +119,125 @@ Generally, the SDK will work well with most IDEs out of the box. However, when u ```python # Synchronous Example from plex_api_client import PlexAPI +from plex_api_client.models import components, operations with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.server.get_server_capabilities() + res = plex_api.transcoder.start_transcode_session(request=operations.StartTranscodeSessionRequest( + transcode_type=components.TranscodeType.MUSIC, + extension=operations.Extension.MPD, + advanced_subtitles=components.AdvancedSubtitles.BURN, + audio_boost=50, + audio_channel_count=5, + auto_adjust_quality=components.BoolInt.ONE, + auto_adjust_subtitle=components.BoolInt.ONE, + direct_play=components.BoolInt.ONE, + direct_stream=components.BoolInt.ONE, + direct_stream_audio=components.BoolInt.ONE, + disable_resolution_rotation=components.BoolInt.ONE, + has_mde=components.BoolInt.ONE, + location=operations.StartTranscodeSessionQueryParamLocation.WAN, + media_buffer_size=102400, + media_index=0, + music_bitrate=5000, + offset=90.5, + part_index=0, + path="/library/metadata/151671", + peak_bitrate=12000, + photo_resolution="1080x1080", + protocol=operations.StartTranscodeSessionQueryParamProtocol.DASH, + seconds_per_segment=5, + subtitle_size=50, + video_bitrate=12000, + video_quality=50, + video_resolution="1080x1080", + x_plex_client_profile_extra="add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + x_plex_client_profile_name="generic", + )) - assert res.object is not None + assert res.response_stream is not None # Handle response - print(res.object) + print(res.response_stream) ```
The same SDK client can also be used to make asynchronous requests by importing asyncio. + ```python # Asynchronous Example import asyncio from plex_api_client import PlexAPI +from plex_api_client.models import components, operations async def main(): async with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = await plex_api.server.get_server_capabilities_async() + res = await plex_api.transcoder.start_transcode_session_async(request=operations.StartTranscodeSessionRequest( + transcode_type=components.TranscodeType.MUSIC, + extension=operations.Extension.MPD, + advanced_subtitles=components.AdvancedSubtitles.BURN, + audio_boost=50, + audio_channel_count=5, + auto_adjust_quality=components.BoolInt.ONE, + auto_adjust_subtitle=components.BoolInt.ONE, + direct_play=components.BoolInt.ONE, + direct_stream=components.BoolInt.ONE, + direct_stream_audio=components.BoolInt.ONE, + disable_resolution_rotation=components.BoolInt.ONE, + has_mde=components.BoolInt.ONE, + location=operations.StartTranscodeSessionQueryParamLocation.WAN, + media_buffer_size=102400, + media_index=0, + music_bitrate=5000, + offset=90.5, + part_index=0, + path="/library/metadata/151671", + peak_bitrate=12000, + photo_resolution="1080x1080", + protocol=operations.StartTranscodeSessionQueryParamProtocol.DASH, + seconds_per_segment=5, + subtitle_size=50, + video_bitrate=12000, + video_quality=50, + video_resolution="1080x1080", + x_plex_client_profile_extra="add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + x_plex_client_profile_name="generic", + )) - assert res.object is not None + assert res.response_stream is not None # Handle response - print(res.object) + print(res.response_stream) asyncio.run(main()) ``` @@ -194,139 +251,324 @@ asyncio.run(main()) ### [activities](docs/sdks/activities/README.md) -* [get_server_activities](docs/sdks/activities/README.md#get_server_activities) - Get Server Activities -* [cancel_server_activities](docs/sdks/activities/README.md#cancel_server_activities) - Cancel Server Activities - -### [authentication](docs/sdks/authentication/README.md) - -* [get_transient_token](docs/sdks/authentication/README.md#get_transient_token) - Get a Transient Token -* [get_source_connection_information](docs/sdks/authentication/README.md#get_source_connection_information) - Get Source Connection Information -* [get_token_details](docs/sdks/authentication/README.md#get_token_details) - Get Token Details -* [post_users_sign_in_data](docs/sdks/authentication/README.md#post_users_sign_in_data) - Get User Sign In Data +* [list_activities](docs/sdks/activities/README.md#list_activities) - Get all activities +* [cancel_activity](docs/sdks/activities/README.md#cancel_activity) - Cancel a running activity ### [butler](docs/sdks/butler/README.md) -* [get_butler_tasks](docs/sdks/butler/README.md#get_butler_tasks) - Get Butler tasks -* [start_all_tasks](docs/sdks/butler/README.md#start_all_tasks) - Start all Butler tasks -* [stop_all_tasks](docs/sdks/butler/README.md#stop_all_tasks) - Stop all Butler tasks -* [start_task](docs/sdks/butler/README.md#start_task) - Start a single Butler task +* [stop_tasks](docs/sdks/butler/README.md#stop_tasks) - Stop all Butler tasks +* [get_tasks](docs/sdks/butler/README.md#get_tasks) - Get all Butler tasks +* [start_tasks](docs/sdks/butler/README.md#start_tasks) - Start all Butler tasks * [stop_task](docs/sdks/butler/README.md#stop_task) - Stop a single Butler task +* [start_task](docs/sdks/butler/README.md#start_task) - Start a single Butler task + +### [collections](docs/sdks/collections/README.md) + +* [create_collection](docs/sdks/collections/README.md#create_collection) - Create collection + +### [content](docs/sdks/content/README.md) + +* [get_collection_items](docs/sdks/content/README.md#get_collection_items) - Get items in a collection +* [get_metadata_item](docs/sdks/content/README.md#get_metadata_item) - Get a metadata item +* [get_albums](docs/sdks/content/README.md#get_albums) - Set section albums +* [list_content](docs/sdks/content/README.md#list_content) - Get items in the section +* [get_all_leaves](docs/sdks/content/README.md#get_all_leaves) - Set section leaves +* [get_arts](docs/sdks/content/README.md#get_arts) - Set section artwork +* [get_categories](docs/sdks/content/README.md#get_categories) - Set section categories +* [get_cluster](docs/sdks/content/README.md#get_cluster) - Set section clusters +* [get_sonic_path](docs/sdks/content/README.md#get_sonic_path) - Similar tracks to transition from one to another +* [get_folders](docs/sdks/content/README.md#get_folders) - Get all folder locations +* [list_moments](docs/sdks/content/README.md#list_moments) - Set section moments +* [get_sonically_similar](docs/sdks/content/README.md#get_sonically_similar) - The nearest audio tracks +* [get_collection_image](docs/sdks/content/README.md#get_collection_image) - Get a collection's image + +### [devices](docs/sdks/devices/README.md) + +* [get_available_grabbers](docs/sdks/devices/README.md#get_available_grabbers) - Get available grabbers +* [list_devices](docs/sdks/devices/README.md#list_devices) - Get all devices +* [add_device](docs/sdks/devices/README.md#add_device) - Add a device +* [discover_devices](docs/sdks/devices/README.md#discover_devices) - Tell grabbers to discover devices +* [remove_device](docs/sdks/devices/README.md#remove_device) - Remove a device +* [get_device_details](docs/sdks/devices/README.md#get_device_details) - Get device details +* [modify_device](docs/sdks/devices/README.md#modify_device) - Enable or disable a device +* [set_channelmap](docs/sdks/devices/README.md#set_channelmap) - Set a device's channel mapping +* [get_devices_channels](docs/sdks/devices/README.md#get_devices_channels) - Get a device's channels +* [set_device_preferences](docs/sdks/devices/README.md#set_device_preferences) - Set device preferences +* [stop_scan](docs/sdks/devices/README.md#stop_scan) - Tell a device to stop scanning for channels +* [scan](docs/sdks/devices/README.md#scan) - Tell a device to scan for channels +* [get_thumb](docs/sdks/devices/README.md#get_thumb) - Get device thumb + +### [download_queue](docs/sdks/downloadqueue/README.md) + +* [create_download_queue](docs/sdks/downloadqueue/README.md#create_download_queue) - Create download queue +* [get_download_queue](docs/sdks/downloadqueue/README.md#get_download_queue) - Get a download queue +* [add_download_queue_items](docs/sdks/downloadqueue/README.md#add_download_queue_items) - Add to download queue +* [list_download_queue_items](docs/sdks/downloadqueue/README.md#list_download_queue_items) - Get download queue items +* [get_item_decision](docs/sdks/downloadqueue/README.md#get_item_decision) - Grab download queue item decision +* [get_download_queue_media](docs/sdks/downloadqueue/README.md#get_download_queue_media) - Grab download queue media +* [remove_download_queue_items](docs/sdks/downloadqueue/README.md#remove_download_queue_items) - Delete download queue items +* [get_download_queue_items](docs/sdks/downloadqueue/README.md#get_download_queue_items) - Get download queue items +* [restart_processing_download_queue_items](docs/sdks/downloadqueue/README.md#restart_processing_download_queue_items) - Restart processing of items from the decision + +### [dv_rs](docs/sdks/dvrs/README.md) + +* [list_dv_rs](docs/sdks/dvrs/README.md#list_dv_rs) - Get DVRs +* [create_dvr](docs/sdks/dvrs/README.md#create_dvr) - Create a DVR +* [delete_dvr](docs/sdks/dvrs/README.md#delete_dvr) - Delete a single DVR +* [get_dvr](docs/sdks/dvrs/README.md#get_dvr) - Get a single DVR +* [delete_lineup](docs/sdks/dvrs/README.md#delete_lineup) - Delete a DVR Lineup +* [add_lineup](docs/sdks/dvrs/README.md#add_lineup) - Add a DVR Lineup +* [set_dvr_preferences](docs/sdks/dvrs/README.md#set_dvr_preferences) - Set DVR preferences +* [stop_dvr_reload](docs/sdks/dvrs/README.md#stop_dvr_reload) - Tell a DVR to stop reloading program guide +* [reload_guide](docs/sdks/dvrs/README.md#reload_guide) - Tell a DVR to reload program guide +* [tune_channel](docs/sdks/dvrs/README.md#tune_channel) - Tune a channel on a DVR +* [remove_device_from_dvr](docs/sdks/dvrs/README.md#remove_device_from_dvr) - Remove a device from an existing DVR +* [add_device_to_dvr](docs/sdks/dvrs/README.md#add_device_to_dvr) - Add a device to an existing DVR + +### [epg](docs/sdks/epg/README.md) + +* [compute_channel_map](docs/sdks/epg/README.md#compute_channel_map) - Compute the best channel map +* [get_channels](docs/sdks/epg/README.md#get_channels) - Get channels for a lineup +* [get_countries](docs/sdks/epg/README.md#get_countries) - Get all countries +* [get_all_languages](docs/sdks/epg/README.md#get_all_languages) - Get all languages +* [get_lineup](docs/sdks/epg/README.md#get_lineup) - Compute the best lineup +* [get_lineup_channels](docs/sdks/epg/README.md#get_lineup_channels) - Get the channels for mulitple lineups +* [get_countries_lineups](docs/sdks/epg/README.md#get_countries_lineups) - Get lineups for a country via postal code +* [get_country_regions](docs/sdks/epg/README.md#get_country_regions) - Get regions for a country +* [list_lineups](docs/sdks/epg/README.md#list_lineups) - Get lineups for a region + +### [events](docs/sdks/events/README.md) + +* [get_notifications](docs/sdks/events/README.md#get_notifications) - Connect to Eventsource +* [connect_web_socket](docs/sdks/events/README.md#connect_web_socket) - Connect to WebSocket + +### [general](docs/sdks/general/README.md) + +* [get_server_info](docs/sdks/general/README.md#get_server_info) - Get PMS info +* [get_identity](docs/sdks/general/README.md#get_identity) - Get PMS identity +* [get_source_connection_information](docs/sdks/general/README.md#get_source_connection_information) - Get Source Connection Information +* [get_transient_token](docs/sdks/general/README.md#get_transient_token) - Get Transient Tokens ### [hubs](docs/sdks/hubs/README.md) -* [get_global_hubs](docs/sdks/hubs/README.md#get_global_hubs) - Get Global Hubs -* [get_recently_added](docs/sdks/hubs/README.md#get_recently_added) - Get Recently Added -* [get_library_hubs](docs/sdks/hubs/README.md#get_library_hubs) - Get library specific hubs +* [get_all_hubs](docs/sdks/hubs/README.md#get_all_hubs) - Get global hubs +* [get_continue_watching](docs/sdks/hubs/README.md#get_continue_watching) - Get the continue watching hub +* [get_hub_items](docs/sdks/hubs/README.md#get_hub_items) - Get a hub's items +* [get_promoted_hubs](docs/sdks/hubs/README.md#get_promoted_hubs) - Get the hubs which are promoted +* [get_metadata_hubs](docs/sdks/hubs/README.md#get_metadata_hubs) - Get hubs for section by metadata item +* [get_postplay_hubs](docs/sdks/hubs/README.md#get_postplay_hubs) - Get postplay hubs +* [get_related_hubs](docs/sdks/hubs/README.md#get_related_hubs) - Get related hubs +* [get_section_hubs](docs/sdks/hubs/README.md#get_section_hubs) - Get section hubs +* [reset_section_defaults](docs/sdks/hubs/README.md#reset_section_defaults) - Reset hubs to defaults +* [list_hubs](docs/sdks/hubs/README.md#list_hubs) - Get hubs +* [create_custom_hub](docs/sdks/hubs/README.md#create_custom_hub) - Create a custom hub +* [move_hub](docs/sdks/hubs/README.md#move_hub) - Move Hub +* [delete_custom_hub](docs/sdks/hubs/README.md#delete_custom_hub) - Delete a custom hub +* [update_hub_visibility](docs/sdks/hubs/README.md#update_hub_visibility) - Change hub visibility ### [library](docs/sdks/library/README.md) -* [get_file_hash](docs/sdks/library/README.md#get_file_hash) - Get Hash Value -* [get_recently_added_library](docs/sdks/library/README.md#get_recently_added_library) - Get Recently Added -* [get_all_libraries](docs/sdks/library/README.md#get_all_libraries) - Get All Libraries -* [get_library_details](docs/sdks/library/README.md#get_library_details) - Get Library Details -* [delete_library](docs/sdks/library/README.md#delete_library) - Delete Library Section -* [get_library_items](docs/sdks/library/README.md#get_library_items) - Get Library Items -* [get_library_sections_all](docs/sdks/library/README.md#get_library_sections_all) - Get Library section media by tag ALL -* [get_refresh_library_metadata](docs/sdks/library/README.md#get_refresh_library_metadata) - Refresh Metadata Of The Library -* [get_search_library](docs/sdks/library/README.md#get_search_library) - Search Library -* [get_genres_library](docs/sdks/library/README.md#get_genres_library) - Get Genres of library media -* [get_countries_library](docs/sdks/library/README.md#get_countries_library) - Get Countries of library media -* [get_actors_library](docs/sdks/library/README.md#get_actors_library) - Get Actors of library media -* [get_search_all_libraries](docs/sdks/library/README.md#get_search_all_libraries) - Search All Libraries -* [get_media_meta_data](docs/sdks/library/README.md#get_media_meta_data) - Get Media Metadata -* [get_media_arts](docs/sdks/library/README.md#get_media_arts) - Get Media Background Artwork -* [post_media_arts](docs/sdks/library/README.md#post_media_arts) - Upload Media Background Artwork -* [get_media_posters](docs/sdks/library/README.md#get_media_posters) - Get Media Posters -* [post_media_poster](docs/sdks/library/README.md#post_media_poster) - Upload Media Poster -* [get_metadata_children](docs/sdks/library/README.md#get_metadata_children) - Get Items Children -* [get_top_watched_content](docs/sdks/library/README.md#get_top_watched_content) - Get Top Watched Content +* [get_library_items](docs/sdks/library/README.md#get_library_items) - Get all items in library +* [delete_caches](docs/sdks/library/README.md#delete_caches) - Delete library caches +* [clean_bundles](docs/sdks/library/README.md#clean_bundles) - Clean bundles +* [ingest_transient_item](docs/sdks/library/README.md#ingest_transient_item) - Ingest a transient item +* [get_library_matches](docs/sdks/library/README.md#get_library_matches) - Get library matches +* [optimize_database](docs/sdks/library/README.md#optimize_database) - Optimize the Database +* [get_random_artwork](docs/sdks/library/README.md#get_random_artwork) - Get random artwork +* [get_sections](docs/sdks/library/README.md#get_sections) - Get library sections (main Media Provider Only) +* [add_section](docs/sdks/library/README.md#add_section) - Add a library section +* [stop_all_refreshes](docs/sdks/library/README.md#stop_all_refreshes) - Stop refresh +* [get_sections_prefs](docs/sdks/library/README.md#get_sections_prefs) - Get section prefs +* [refresh_sections_metadata](docs/sdks/library/README.md#refresh_sections_metadata) - Refresh all sections +* [get_tags](docs/sdks/library/README.md#get_tags) - Get all library tags of a type +* [delete_metadata_item](docs/sdks/library/README.md#delete_metadata_item) - Delete a metadata item +* [edit_metadata_item](docs/sdks/library/README.md#edit_metadata_item) - Edit a metadata item +* [detect_ads](docs/sdks/library/README.md#detect_ads) - Ad-detect an item +* [get_all_item_leaves](docs/sdks/library/README.md#get_all_item_leaves) - Get the leaves of an item +* [analyze_metadata](docs/sdks/library/README.md#analyze_metadata) - Analyze an item +* [generate_thumbs](docs/sdks/library/README.md#generate_thumbs) - Generate thumbs of chapters for an item +* [detect_credits](docs/sdks/library/README.md#detect_credits) - Credit detect a metadata item +* [get_extras](docs/sdks/library/README.md#get_extras) - Get an item's extras +* [add_extras](docs/sdks/library/README.md#add_extras) - Add to an item's extras +* [get_file](docs/sdks/library/README.md#get_file) - Get a file from a metadata or media bundle +* [start_bif_generation](docs/sdks/library/README.md#start_bif_generation) - Start BIF generation of an item +* [detect_intros](docs/sdks/library/README.md#detect_intros) - Intro detect an item +* [create_marker](docs/sdks/library/README.md#create_marker) - Create a marker +* [match_item](docs/sdks/library/README.md#match_item) - Match a metadata item +* [list_matches](docs/sdks/library/README.md#list_matches) - Get metadata matches for an item +* [merge_items](docs/sdks/library/README.md#merge_items) - Merge a metadata item +* [list_sonically_similar](docs/sdks/library/README.md#list_sonically_similar) - Get nearest tracks to metadata item +* [set_item_preferences](docs/sdks/library/README.md#set_item_preferences) - Set metadata preferences +* [refresh_items_metadata](docs/sdks/library/README.md#refresh_items_metadata) - Refresh a metadata item +* [get_related_items](docs/sdks/library/README.md#get_related_items) - Get related items +* [list_similar](docs/sdks/library/README.md#list_similar) - Get similar items +* [split_item](docs/sdks/library/README.md#split_item) - Split a metadata item +* [add_subtitles](docs/sdks/library/README.md#add_subtitles) - Add subtitles +* [get_item_tree](docs/sdks/library/README.md#get_item_tree) - Get metadata items as a tree +* [unmatch](docs/sdks/library/README.md#unmatch) - Unmatch a metadata item +* [list_top_users](docs/sdks/library/README.md#list_top_users) - Get metadata top users +* [detect_voice_activity](docs/sdks/library/README.md#detect_voice_activity) - Detect voice activity +* [get_augmentation_status](docs/sdks/library/README.md#get_augmentation_status) - Get augmentation status +* [set_stream_selection](docs/sdks/library/README.md#set_stream_selection) - Set stream selection +* [get_person](docs/sdks/library/README.md#get_person) - Get person details +* [list_person_media](docs/sdks/library/README.md#list_person_media) - Get media for a person +* [delete_library_section](docs/sdks/library/README.md#delete_library_section) - Delete a library section +* [get_library_details](docs/sdks/library/README.md#get_library_details) - Get a library section by id +* [edit_section](docs/sdks/library/README.md#edit_section) - Edit a library section +* [update_items](docs/sdks/library/README.md#update_items) - Set the fields of the filtered items +* [start_analysis](docs/sdks/library/README.md#start_analysis) - Analyze a section +* [autocomplete](docs/sdks/library/README.md#autocomplete) - Get autocompletions for search +* [get_collections](docs/sdks/library/README.md#get_collections) - Get collections in a section +* [get_common](docs/sdks/library/README.md#get_common) - Get common fields for items +* [empty_trash](docs/sdks/library/README.md#empty_trash) - Empty section trash +* [get_section_filters](docs/sdks/library/README.md#get_section_filters) - Get section filters +* [get_first_characters](docs/sdks/library/README.md#get_first_characters) - Get list of first characters +* [delete_indexes](docs/sdks/library/README.md#delete_indexes) - Delete section indexes +* [delete_intros](docs/sdks/library/README.md#delete_intros) - Delete section intro markers +* [get_section_preferences](docs/sdks/library/README.md#get_section_preferences) - Get section prefs +* [set_section_preferences](docs/sdks/library/README.md#set_section_preferences) - Set section prefs +* [cancel_refresh](docs/sdks/library/README.md#cancel_refresh) - Cancel section refresh +* [refresh_section](docs/sdks/library/README.md#refresh_section) - Refresh section +* [get_available_sorts](docs/sdks/library/README.md#get_available_sorts) - Get a section sorts +* [get_stream_levels](docs/sdks/library/README.md#get_stream_levels) - Get loudness about a stream in json +* [get_stream_loudness](docs/sdks/library/README.md#get_stream_loudness) - Get loudness about a stream +* [get_chapter_image](docs/sdks/library/README.md#get_chapter_image) - Get a chapter image +* [set_item_artwork](docs/sdks/library/README.md#set_item_artwork) - Set an item's artwork, theme, etc +* [update_item_artwork](docs/sdks/library/README.md#update_item_artwork) - Set an item's artwork, theme, etc +* [delete_marker](docs/sdks/library/README.md#delete_marker) - Delete a marker +* [edit_marker](docs/sdks/library/README.md#edit_marker) - Edit a marker +* [delete_media_item](docs/sdks/library/README.md#delete_media_item) - Delete a media item +* [get_part_index](docs/sdks/library/README.md#get_part_index) - Get BIF index for a part +* [delete_collection](docs/sdks/library/README.md#delete_collection) - Delete a collection +* [get_section_image](docs/sdks/library/README.md#get_section_image) - Get a section composite image +* [delete_stream](docs/sdks/library/README.md#delete_stream) - Delete a stream +* [get_stream](docs/sdks/library/README.md#get_stream) - Get a stream +* [set_stream_offset](docs/sdks/library/README.md#set_stream_offset) - Set a stream offset +* [get_item_artwork](docs/sdks/library/README.md#get_item_artwork) - Get an item's artwork, theme, etc +* [get_media_part](docs/sdks/library/README.md#get_media_part) - Get a media part +* [get_image_from_bif](docs/sdks/library/README.md#get_image_from_bif) - Get an image from part BIF + +### [library_collections](docs/sdks/librarycollections/README.md) + +* [add_collection_items](docs/sdks/librarycollections/README.md#add_collection_items) - Add items to a collection +* [delete_collection_item](docs/sdks/librarycollections/README.md#delete_collection_item) - Delete an item from a collection +* [move_collection_item](docs/sdks/librarycollections/README.md#move_collection_item) - Reorder an item in the collection + +### [library_playlists](docs/sdks/libraryplaylists/README.md) + +* [create_playlist](docs/sdks/libraryplaylists/README.md#create_playlist) - Create a Playlist +* [upload_playlist](docs/sdks/libraryplaylists/README.md#upload_playlist) - Upload +* [delete_playlist](docs/sdks/libraryplaylists/README.md#delete_playlist) - Delete a Playlist +* [update_playlist](docs/sdks/libraryplaylists/README.md#update_playlist) - Editing a Playlist +* [get_playlist_generators](docs/sdks/libraryplaylists/README.md#get_playlist_generators) - Get a playlist's generators +* [clear_playlist_items](docs/sdks/libraryplaylists/README.md#clear_playlist_items) - Clearing a playlist +* [add_playlist_items](docs/sdks/libraryplaylists/README.md#add_playlist_items) - Adding to a Playlist +* [delete_playlist_item](docs/sdks/libraryplaylists/README.md#delete_playlist_item) - Delete a Generator +* [get_playlist_generator](docs/sdks/libraryplaylists/README.md#get_playlist_generator) - Get a playlist generator +* [modify_playlist_generator](docs/sdks/libraryplaylists/README.md#modify_playlist_generator) - Modify a Generator +* [get_playlist_generator_items](docs/sdks/libraryplaylists/README.md#get_playlist_generator_items) - Get a playlist generator's items +* [move_playlist_item](docs/sdks/libraryplaylists/README.md#move_playlist_item) - Moving items in a playlist +* [refresh_playlist](docs/sdks/libraryplaylists/README.md#refresh_playlist) - Reprocess a generator + +### [live_tv](docs/sdks/livetv/README.md) + +* [get_sessions](docs/sdks/livetv/README.md#get_sessions) - Get all sessions +* [get_live_tv_session](docs/sdks/livetv/README.md#get_live_tv_session) - Get a single session +* [get_session_playlist_index](docs/sdks/livetv/README.md#get_session_playlist_index) - Get a session playlist index +* [get_session_segment](docs/sdks/livetv/README.md#get_session_segment) - Get a single session segment ### [log](docs/sdks/log/README.md) -* [log_line](docs/sdks/log/README.md#log_line) - Logging a single line message. -* [log_multi_line](docs/sdks/log/README.md#log_multi_line) - Logging a multi-line message -* [enable_paper_trail](docs/sdks/log/README.md#enable_paper_trail) - Enabling Papertrail +* [write_log](docs/sdks/log/README.md#write_log) - Logging a multi-line message to the Plex Media Server log +* [write_message](docs/sdks/log/README.md#write_message) - Logging a single-line message to the Plex Media Server log +* [enable_papertrail](docs/sdks/log/README.md#enable_papertrail) - Enabling Papertrail -### [media](docs/sdks/media/README.md) +### [play_queue](docs/sdks/playqueue/README.md) -* [mark_played](docs/sdks/media/README.md#mark_played) - Mark Media Played -* [mark_unplayed](docs/sdks/media/README.md#mark_unplayed) - Mark Media Unplayed -* [update_play_progress](docs/sdks/media/README.md#update_play_progress) - Update Media Play Progress -* [get_banner_image](docs/sdks/media/README.md#get_banner_image) - Get Banner Image -* [get_thumb_image](docs/sdks/media/README.md#get_thumb_image) - Get Thumb Image +* [create_play_queue](docs/sdks/playqueue/README.md#create_play_queue) - Create a play queue +* [get_play_queue](docs/sdks/playqueue/README.md#get_play_queue) - Retrieve a play queue +* [add_to_play_queue](docs/sdks/playqueue/README.md#add_to_play_queue) - Add a generator or playlist to a play queue +* [clear_play_queue](docs/sdks/playqueue/README.md#clear_play_queue) - Clear a play queue +* [reset_play_queue](docs/sdks/playqueue/README.md#reset_play_queue) - Reset a play queue +* [shuffle](docs/sdks/playqueue/README.md#shuffle) - Shuffle a play queue +* [unshuffle](docs/sdks/playqueue/README.md#unshuffle) - Unshuffle a play queue +* [delete_play_queue_item](docs/sdks/playqueue/README.md#delete_play_queue_item) - Delete an item from a play queue +* [move_play_queue_item](docs/sdks/playqueue/README.md#move_play_queue_item) - Move an item in a play queue -### [playlists](docs/sdks/playlists/README.md) +### [playlist](docs/sdks/playlist/README.md) -* [create_playlist](docs/sdks/playlists/README.md#create_playlist) - Create a Playlist -* [get_playlists](docs/sdks/playlists/README.md#get_playlists) - Get All Playlists -* [get_playlist](docs/sdks/playlists/README.md#get_playlist) - Retrieve Playlist -* [delete_playlist](docs/sdks/playlists/README.md#delete_playlist) - Deletes a Playlist -* [update_playlist](docs/sdks/playlists/README.md#update_playlist) - Update a Playlist -* [get_playlist_contents](docs/sdks/playlists/README.md#get_playlist_contents) - Retrieve Playlist Contents -* [clear_playlist_contents](docs/sdks/playlists/README.md#clear_playlist_contents) - Delete Playlist Contents -* [add_playlist_contents](docs/sdks/playlists/README.md#add_playlist_contents) - Adding to a Playlist -* [upload_playlist](docs/sdks/playlists/README.md#upload_playlist) - Upload Playlist +* [list_playlists](docs/sdks/playlist/README.md#list_playlists) - List playlists +* [get_playlist](docs/sdks/playlist/README.md#get_playlist) - Retrieve Playlist +* [get_playlist_items](docs/sdks/playlist/README.md#get_playlist_items) - Retrieve Playlist Contents -### [plex](docs/sdks/plex/README.md) +### [preferences](docs/sdks/preferences/README.md) -* [get_companions_data](docs/sdks/plex/README.md#get_companions_data) - Get Companions Data -* [get_user_friends](docs/sdks/plex/README.md#get_user_friends) - Get list of friends of the user logged in -* [get_geo_data](docs/sdks/plex/README.md#get_geo_data) - Get Geo Data -* [get_home_data](docs/sdks/plex/README.md#get_home_data) - Get Plex Home Data -* [get_server_resources](docs/sdks/plex/README.md#get_server_resources) - Get Server Resources -* [get_pin](docs/sdks/plex/README.md#get_pin) - Get a Pin -* [get_token_by_pin_id](docs/sdks/plex/README.md#get_token_by_pin_id) - Get Access Token by PinId +* [get_all_preferences](docs/sdks/preferences/README.md#get_all_preferences) - Get all preferences +* [set_preferences](docs/sdks/preferences/README.md#set_preferences) - Set preferences +* [get_preference](docs/sdks/preferences/README.md#get_preference) - Get a preferences +### [provider](docs/sdks/provider/README.md) + +* [list_providers](docs/sdks/provider/README.md#list_providers) - Get the list of available media providers +* [add_provider](docs/sdks/provider/README.md#add_provider) - Add a media provider +* [refresh_providers](docs/sdks/provider/README.md#refresh_providers) - Refresh media providers +* [delete_media_provider](docs/sdks/provider/README.md#delete_media_provider) - Delete a media provider + +### [rate](docs/sdks/rate/README.md) + +* [set_rating](docs/sdks/rate/README.md#set_rating) - Rate an item ### [search](docs/sdks/search/README.md) -* [perform_search](docs/sdks/search/README.md#perform_search) - Perform a search -* [perform_voice_search](docs/sdks/search/README.md#perform_voice_search) - Perform a voice search -* [get_search_results](docs/sdks/search/README.md#get_search_results) - Get Search Results +* [search_hubs](docs/sdks/search/README.md#search_hubs) - Search Hub +* [voice_search_hubs](docs/sdks/search/README.md#voice_search_hubs) - Voice Search Hub -### [server](docs/sdks/server/README.md) +### [status](docs/sdks/status/README.md) -* [get_server_capabilities](docs/sdks/server/README.md#get_server_capabilities) - Get Server Capabilities -* [get_server_preferences](docs/sdks/server/README.md#get_server_preferences) - Get Server Preferences -* [get_available_clients](docs/sdks/server/README.md#get_available_clients) - Get Available Clients -* [get_devices](docs/sdks/server/README.md#get_devices) - Get Devices -* [get_server_identity](docs/sdks/server/README.md#get_server_identity) - Get Server Identity -* [get_my_plex_account](docs/sdks/server/README.md#get_my_plex_account) - Get MyPlex Account -* [get_resized_photo](docs/sdks/server/README.md#get_resized_photo) - Get a Resized Photo -* [get_media_providers](docs/sdks/server/README.md#get_media_providers) - Get Media Providers -* [get_server_list](docs/sdks/server/README.md#get_server_list) - Get Server List +* [list_sessions](docs/sdks/status/README.md#list_sessions) - List Sessions +* [get_background_tasks](docs/sdks/status/README.md#get_background_tasks) - Get background tasks +* [list_playback_history](docs/sdks/status/README.md#list_playback_history) - List Playback History +* [terminate_session](docs/sdks/status/README.md#terminate_session) - Terminate a session +* [delete_history](docs/sdks/status/README.md#delete_history) - Delete Single History Item +* [get_history_item](docs/sdks/status/README.md#get_history_item) - Get Single History Item -### [sessions](docs/sdks/sessions/README.md) +### [subscriptions](docs/sdks/subscriptions/README.md) -* [get_sessions](docs/sdks/sessions/README.md#get_sessions) - Get Active Sessions -* [get_session_history](docs/sdks/sessions/README.md#get_session_history) - Get Session History -* [get_transcode_sessions](docs/sdks/sessions/README.md#get_transcode_sessions) - Get Transcode Sessions -* [stop_transcode_session](docs/sdks/sessions/README.md#stop_transcode_session) - Stop a Transcode Session +* [get_all_subscriptions](docs/sdks/subscriptions/README.md#get_all_subscriptions) - Get all subscriptions +* [create_subscription](docs/sdks/subscriptions/README.md#create_subscription) - Create a subscription +* [process_subscriptions](docs/sdks/subscriptions/README.md#process_subscriptions) - Process all subscriptions +* [get_scheduled_recordings](docs/sdks/subscriptions/README.md#get_scheduled_recordings) - Get all scheduled recordings +* [get_template](docs/sdks/subscriptions/README.md#get_template) - Get the subscription template +* [cancel_grab](docs/sdks/subscriptions/README.md#cancel_grab) - Cancel an existing grab +* [delete_subscription](docs/sdks/subscriptions/README.md#delete_subscription) - Delete a subscription +* [get_subscription](docs/sdks/subscriptions/README.md#get_subscription) - Get a single subscription +* [edit_subscription_preferences](docs/sdks/subscriptions/README.md#edit_subscription_preferences) - Edit a subscription +* [reorder_subscription](docs/sdks/subscriptions/README.md#reorder_subscription) - Re-order a subscription -### [statistics](docs/sdks/statistics/README.md) +### [timeline](docs/sdks/timeline/README.md) -* [get_statistics](docs/sdks/statistics/README.md#get_statistics) - Get Media Statistics -* [get_resources_statistics](docs/sdks/statistics/README.md#get_resources_statistics) - Get Resources Statistics -* [get_bandwidth_statistics](docs/sdks/statistics/README.md#get_bandwidth_statistics) - Get Bandwidth Statistics +* [mark_played](docs/sdks/timeline/README.md#mark_played) - Mark an item as played +* [report](docs/sdks/timeline/README.md#report) - Report media timeline +* [unscrobble](docs/sdks/timeline/README.md#unscrobble) - Mark an item as unplayed + +### [transcoder](docs/sdks/transcoder/README.md) + +* [transcode_image](docs/sdks/transcoder/README.md#transcode_image) - Transcode an image +* [make_decision](docs/sdks/transcoder/README.md#make_decision) - Make a decision on media playback +* [trigger_fallback](docs/sdks/transcoder/README.md#trigger_fallback) - Manually trigger a transcoder fallback +* [transcode_subtitles](docs/sdks/transcoder/README.md#transcode_subtitles) - Transcode subtitles +* [start_transcode_session](docs/sdks/transcoder/README.md#start_transcode_session) - Start A Transcoding Session + +### [ultra_blur](docs/sdks/ultrablur/README.md) + +* [get_colors](docs/sdks/ultrablur/README.md#get_colors) - Get UltraBlur Colors +* [get_image](docs/sdks/ultrablur/README.md#get_image) - Get UltraBlur Image ### [updater](docs/sdks/updater/README.md) -* [get_update_status](docs/sdks/updater/README.md#get_update_status) - Querying status of updates -* [check_for_updates](docs/sdks/updater/README.md#check_for_updates) - Checking for updates -* [apply_updates](docs/sdks/updater/README.md#apply_updates) - Apply Updates - -### [users](docs/sdks/users/README.md) - -* [get_users](docs/sdks/users/README.md#get_users) - Get list of all connected users - -### [video](docs/sdks/video/README.md) - -* [get_timeline](docs/sdks/video/README.md#get_timeline) - Get the timeline for a media item -* [start_universal_transcode](docs/sdks/video/README.md#start_universal_transcode) - Start Universal Transcode - -### [watchlist](docs/sdks/watchlist/README.md) - -* [get_watch_list](docs/sdks/watchlist/README.md#get_watch_list) - Get User Watchlist +* [apply_updates](docs/sdks/updater/README.md#apply_updates) - Applying updates +* [check_updates](docs/sdks/updater/README.md#check_updates) - Checking for updates +* [get_updates_status](docs/sdks/updater/README.md#get_updates_status) - Querying status of updates @@ -346,10 +588,10 @@ from plex_api_client import PlexAPI with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.library.post_media_arts(rating_key=2268, url="https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b") + res = plex_api.log.write_log(request=open("example.file", "rb")) assert res is not None @@ -367,40 +609,64 @@ Some of the endpoints in this SDK support retries. If you use the SDK without an To change the default retry strategy for a single API call, simply provide a `RetryConfig` object to the call: ```python from plex_api_client import PlexAPI +from plex_api_client.models import components from plex_api_client.utils import BackoffStrategy, RetryConfig with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.server.get_server_capabilities(, + res = plex_api.general.get_server_info(request={}, RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False)) - assert res.object is not None + assert res.media_container_with_directory is not None # Handle response - print(res.object) + print(res.media_container_with_directory) ``` If you'd like to override the default retry strategy for all operations that support retries, you can use the `retry_config` optional parameter when initializing the SDK: ```python from plex_api_client import PlexAPI +from plex_api_client.models import components from plex_api_client.utils import BackoffStrategy, RetryConfig with PlexAPI( retry_config=RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False), - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.server.get_server_capabilities() + res = plex_api.general.get_server_info(request={}) - assert res.object is not None + assert res.media_container_with_directory is not None # Handle response - print(res.object) + print(res.media_container_with_directory) ``` @@ -410,33 +676,43 @@ with PlexAPI( [`PlexAPIError`](./src/plex_api_client/models/errors/plexapierror.py) is the base class for all HTTP error responses. It has the following properties: -| Property | Type | Description | -| ------------------ | ---------------- | --------------------------------------------------------------------------------------- | -| `err.message` | `str` | Error message | -| `err.status_code` | `int` | HTTP response status code eg `404` | -| `err.headers` | `httpx.Headers` | HTTP response headers | -| `err.body` | `str` | HTTP body. Can be empty string if no body is returned. | -| `err.raw_response` | `httpx.Response` | Raw HTTP response | -| `err.data` | | Optional. Some errors may contain structured data. [See Error Classes](#error-classes). | +| Property | Type | Description | +| ------------------ | ---------------- | ------------------------------------------------------ | +| `err.message` | `str` | Error message | +| `err.status_code` | `int` | HTTP response status code eg `404` | +| `err.headers` | `httpx.Headers` | HTTP response headers | +| `err.body` | `str` | HTTP body. Can be empty string if no body is returned. | +| `err.raw_response` | `httpx.Response` | Raw HTTP response | ### Example ```python from plex_api_client import PlexAPI -from plex_api_client.models import errors +from plex_api_client.models import components, errors with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: res = None try: - res = plex_api.server.get_server_capabilities() + res = plex_api.general.get_server_info(request={}) - assert res.object is not None + assert res.media_container_with_directory is not None # Handle response - print(res.object) + print(res.media_container_with_directory) except errors.PlexAPIError as e: @@ -447,17 +723,13 @@ with PlexAPI( print(e.headers) print(e.raw_response) - # Depending on the method different errors may be thrown - if isinstance(e, errors.GetServerCapabilitiesBadRequest): - print(e.data.errors) # Optional[List[errors.Errors]] - print(e.data.raw_response) # Optional[httpx.Response] ``` ### Error Classes **Primary error:** * [`PlexAPIError`](./src/plex_api_client/models/errors/plexapierror.py): The base class for HTTP error responses. -
Less common errors (161) +
Less common errors (5)
@@ -468,242 +740,100 @@ with PlexAPI( **Inherit from [`PlexAPIError`](./src/plex_api_client/models/errors/plexapierror.py)**: -* [`GetServerCapabilitiesBadRequest`](./src/plex_api_client/models/errors/getservercapabilitiesbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetServerPreferencesBadRequest`](./src/plex_api_client/models/errors/getserverpreferencesbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetAvailableClientsBadRequest`](./src/plex_api_client/models/errors/getavailableclientsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetDevicesBadRequest`](./src/plex_api_client/models/errors/getdevicesbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetMyPlexAccountBadRequest`](./src/plex_api_client/models/errors/getmyplexaccountbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetResizedPhotoBadRequest`](./src/plex_api_client/models/errors/getresizedphotobadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetMediaProvidersBadRequest`](./src/plex_api_client/models/errors/getmediaprovidersbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetServerListBadRequest`](./src/plex_api_client/models/errors/getserverlistbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`MarkPlayedBadRequest`](./src/plex_api_client/models/errors/markplayedbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`MarkUnplayedBadRequest`](./src/plex_api_client/models/errors/markunplayedbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`UpdatePlayProgressBadRequest`](./src/plex_api_client/models/errors/updateplayprogressbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetBannerImageBadRequest`](./src/plex_api_client/models/errors/getbannerimagebadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetThumbImageBadRequest`](./src/plex_api_client/models/errors/getthumbimagebadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetTimelineBadRequest`](./src/plex_api_client/models/errors/gettimelinebadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`StartUniversalTranscodeBadRequest`](./src/plex_api_client/models/errors/startuniversaltranscodebadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetServerActivitiesBadRequest`](./src/plex_api_client/models/errors/getserveractivitiesbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`CancelServerActivitiesBadRequest`](./src/plex_api_client/models/errors/cancelserveractivitiesbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetButlerTasksBadRequest`](./src/plex_api_client/models/errors/getbutlertasksbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`StartAllTasksBadRequest`](./src/plex_api_client/models/errors/startalltasksbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`StopAllTasksBadRequest`](./src/plex_api_client/models/errors/stopalltasksbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`StartTaskBadRequest`](./src/plex_api_client/models/errors/starttaskbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`StopTaskBadRequest`](./src/plex_api_client/models/errors/stoptaskbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetCompanionsDataBadRequest`](./src/plex_api_client/models/errors/getcompanionsdatabadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetUserFriendsBadRequest`](./src/plex_api_client/models/errors/getuserfriendsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetGeoDataBadRequest`](./src/plex_api_client/models/errors/getgeodatabadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetHomeDataBadRequest`](./src/plex_api_client/models/errors/gethomedatabadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetServerResourcesBadRequest`](./src/plex_api_client/models/errors/getserverresourcesbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetPinBadRequest`](./src/plex_api_client/models/errors/getpinbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetTokenByPinIDBadRequest`](./src/plex_api_client/models/errors/gettokenbypinidbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetGlobalHubsBadRequest`](./src/plex_api_client/models/errors/getglobalhubsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetLibraryHubsBadRequest`](./src/plex_api_client/models/errors/getlibraryhubsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`PerformSearchBadRequest`](./src/plex_api_client/models/errors/performsearchbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`PerformVoiceSearchBadRequest`](./src/plex_api_client/models/errors/performvoicesearchbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetSearchResultsBadRequest`](./src/plex_api_client/models/errors/getsearchresultsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetFileHashBadRequest`](./src/plex_api_client/models/errors/getfilehashbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetRecentlyAddedLibraryBadRequest`](./src/plex_api_client/models/errors/getrecentlyaddedlibrarybadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetAllLibrariesBadRequest`](./src/plex_api_client/models/errors/getalllibrariesbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetLibraryDetailsBadRequest`](./src/plex_api_client/models/errors/getlibrarydetailsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`DeleteLibraryBadRequest`](./src/plex_api_client/models/errors/deletelibrarybadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetLibraryItemsBadRequest`](./src/plex_api_client/models/errors/getlibraryitemsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetLibrarySectionsAllBadRequest`](./src/plex_api_client/models/errors/getlibrarysectionsallbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetRefreshLibraryMetadataBadRequest`](./src/plex_api_client/models/errors/getrefreshlibrarymetadatabadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetSearchLibraryBadRequest`](./src/plex_api_client/models/errors/getsearchlibrarybadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetGenresLibraryBadRequest`](./src/plex_api_client/models/errors/getgenreslibrarybadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetCountriesLibraryBadRequest`](./src/plex_api_client/models/errors/getcountrieslibrarybadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetActorsLibraryBadRequest`](./src/plex_api_client/models/errors/getactorslibrarybadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetSearchAllLibrariesBadRequest`](./src/plex_api_client/models/errors/getsearchalllibrariesbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetMediaMetaDataBadRequest`](./src/plex_api_client/models/errors/getmediametadatabadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetMetadataChildrenBadRequest`](./src/plex_api_client/models/errors/getmetadatachildrenbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetTopWatchedContentBadRequest`](./src/plex_api_client/models/errors/gettopwatchedcontentbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetWatchListBadRequest`](./src/plex_api_client/models/errors/getwatchlistbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`LogLineBadRequest`](./src/plex_api_client/models/errors/loglinebadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`LogMultiLineBadRequest`](./src/plex_api_client/models/errors/logmultilinebadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`EnablePaperTrailBadRequest`](./src/plex_api_client/models/errors/enablepapertrailbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`CreatePlaylistBadRequest`](./src/plex_api_client/models/errors/createplaylistbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetPlaylistsBadRequest`](./src/plex_api_client/models/errors/getplaylistsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetPlaylistBadRequest`](./src/plex_api_client/models/errors/getplaylistbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`DeletePlaylistBadRequest`](./src/plex_api_client/models/errors/deleteplaylistbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`UpdatePlaylistBadRequest`](./src/plex_api_client/models/errors/updateplaylistbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetPlaylistContentsBadRequest`](./src/plex_api_client/models/errors/getplaylistcontentsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`ClearPlaylistContentsBadRequest`](./src/plex_api_client/models/errors/clearplaylistcontentsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`AddPlaylistContentsBadRequest`](./src/plex_api_client/models/errors/addplaylistcontentsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`UploadPlaylistBadRequest`](./src/plex_api_client/models/errors/uploadplaylistbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetTransientTokenBadRequest`](./src/plex_api_client/models/errors/gettransienttokenbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetSourceConnectionInformationBadRequest`](./src/plex_api_client/models/errors/getsourceconnectioninformationbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetTokenDetailsBadRequest`](./src/plex_api_client/models/errors/gettokendetailsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`PostUsersSignInDataBadRequest`](./src/plex_api_client/models/errors/postuserssignindatabadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetStatisticsBadRequest`](./src/plex_api_client/models/errors/getstatisticsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetResourcesStatisticsBadRequest`](./src/plex_api_client/models/errors/getresourcesstatisticsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetBandwidthStatisticsBadRequest`](./src/plex_api_client/models/errors/getbandwidthstatisticsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetSessionsBadRequest`](./src/plex_api_client/models/errors/getsessionsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetSessionHistoryBadRequest`](./src/plex_api_client/models/errors/getsessionhistorybadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetTranscodeSessionsBadRequest`](./src/plex_api_client/models/errors/gettranscodesessionsbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`StopTranscodeSessionBadRequest`](./src/plex_api_client/models/errors/stoptranscodesessionbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetUpdateStatusBadRequest`](./src/plex_api_client/models/errors/getupdatestatusbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`CheckForUpdatesBadRequest`](./src/plex_api_client/models/errors/checkforupdatesbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`ApplyUpdatesBadRequest`](./src/plex_api_client/models/errors/applyupdatesbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetUsersBadRequest`](./src/plex_api_client/models/errors/getusersbadrequest.py): Bad Request - A parameter was not specified, or was specified incorrectly. Status code `400`. Applicable to 1 of 84 methods.* -* [`GetServerCapabilitiesUnauthorized`](./src/plex_api_client/models/errors/getservercapabilitiesunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetServerPreferencesUnauthorized`](./src/plex_api_client/models/errors/getserverpreferencesunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetAvailableClientsUnauthorized`](./src/plex_api_client/models/errors/getavailableclientsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetDevicesUnauthorized`](./src/plex_api_client/models/errors/getdevicesunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetMyPlexAccountUnauthorized`](./src/plex_api_client/models/errors/getmyplexaccountunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetResizedPhotoUnauthorized`](./src/plex_api_client/models/errors/getresizedphotounauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetMediaProvidersUnauthorized`](./src/plex_api_client/models/errors/getmediaprovidersunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetServerListUnauthorized`](./src/plex_api_client/models/errors/getserverlistunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`MarkPlayedUnauthorized`](./src/plex_api_client/models/errors/markplayedunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`MarkUnplayedUnauthorized`](./src/plex_api_client/models/errors/markunplayedunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`UpdatePlayProgressUnauthorized`](./src/plex_api_client/models/errors/updateplayprogressunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetBannerImageUnauthorized`](./src/plex_api_client/models/errors/getbannerimageunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetThumbImageUnauthorized`](./src/plex_api_client/models/errors/getthumbimageunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetTimelineUnauthorized`](./src/plex_api_client/models/errors/gettimelineunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`StartUniversalTranscodeUnauthorized`](./src/plex_api_client/models/errors/startuniversaltranscodeunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetServerActivitiesUnauthorized`](./src/plex_api_client/models/errors/getserveractivitiesunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`CancelServerActivitiesUnauthorized`](./src/plex_api_client/models/errors/cancelserveractivitiesunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetButlerTasksUnauthorized`](./src/plex_api_client/models/errors/getbutlertasksunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`StartAllTasksUnauthorized`](./src/plex_api_client/models/errors/startalltasksunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`StopAllTasksUnauthorized`](./src/plex_api_client/models/errors/stopalltasksunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`StartTaskUnauthorized`](./src/plex_api_client/models/errors/starttaskunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`StopTaskUnauthorized`](./src/plex_api_client/models/errors/stoptaskunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetCompanionsDataUnauthorized`](./src/plex_api_client/models/errors/getcompanionsdataunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetUserFriendsUnauthorized`](./src/plex_api_client/models/errors/getuserfriendsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetGeoDataUnauthorized`](./src/plex_api_client/models/errors/getgeodataunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetHomeDataUnauthorized`](./src/plex_api_client/models/errors/gethomedataunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetServerResourcesUnauthorized`](./src/plex_api_client/models/errors/getserverresourcesunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetGlobalHubsUnauthorized`](./src/plex_api_client/models/errors/getglobalhubsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetLibraryHubsUnauthorized`](./src/plex_api_client/models/errors/getlibraryhubsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`PerformSearchUnauthorized`](./src/plex_api_client/models/errors/performsearchunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`PerformVoiceSearchUnauthorized`](./src/plex_api_client/models/errors/performvoicesearchunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetSearchResultsUnauthorized`](./src/plex_api_client/models/errors/getsearchresultsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetFileHashUnauthorized`](./src/plex_api_client/models/errors/getfilehashunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetRecentlyAddedLibraryUnauthorized`](./src/plex_api_client/models/errors/getrecentlyaddedlibraryunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetAllLibrariesUnauthorized`](./src/plex_api_client/models/errors/getalllibrariesunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetLibraryDetailsUnauthorized`](./src/plex_api_client/models/errors/getlibrarydetailsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`DeleteLibraryUnauthorized`](./src/plex_api_client/models/errors/deletelibraryunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetLibraryItemsUnauthorized`](./src/plex_api_client/models/errors/getlibraryitemsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetLibrarySectionsAllUnauthorized`](./src/plex_api_client/models/errors/getlibrarysectionsallunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetRefreshLibraryMetadataUnauthorized`](./src/plex_api_client/models/errors/getrefreshlibrarymetadataunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetSearchLibraryUnauthorized`](./src/plex_api_client/models/errors/getsearchlibraryunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetGenresLibraryUnauthorized`](./src/plex_api_client/models/errors/getgenreslibraryunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetCountriesLibraryUnauthorized`](./src/plex_api_client/models/errors/getcountrieslibraryunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetActorsLibraryUnauthorized`](./src/plex_api_client/models/errors/getactorslibraryunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetSearchAllLibrariesUnauthorized`](./src/plex_api_client/models/errors/getsearchalllibrariesunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetMediaMetaDataUnauthorized`](./src/plex_api_client/models/errors/getmediametadataunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetMetadataChildrenUnauthorized`](./src/plex_api_client/models/errors/getmetadatachildrenunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetTopWatchedContentUnauthorized`](./src/plex_api_client/models/errors/gettopwatchedcontentunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetWatchListUnauthorized`](./src/plex_api_client/models/errors/getwatchlistunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`LogLineUnauthorized`](./src/plex_api_client/models/errors/loglineunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`LogMultiLineUnauthorized`](./src/plex_api_client/models/errors/logmultilineunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`EnablePaperTrailUnauthorized`](./src/plex_api_client/models/errors/enablepapertrailunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`CreatePlaylistUnauthorized`](./src/plex_api_client/models/errors/createplaylistunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetPlaylistsUnauthorized`](./src/plex_api_client/models/errors/getplaylistsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetPlaylistUnauthorized`](./src/plex_api_client/models/errors/getplaylistunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`DeletePlaylistUnauthorized`](./src/plex_api_client/models/errors/deleteplaylistunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`UpdatePlaylistUnauthorized`](./src/plex_api_client/models/errors/updateplaylistunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetPlaylistContentsUnauthorized`](./src/plex_api_client/models/errors/getplaylistcontentsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`ClearPlaylistContentsUnauthorized`](./src/plex_api_client/models/errors/clearplaylistcontentsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`AddPlaylistContentsUnauthorized`](./src/plex_api_client/models/errors/addplaylistcontentsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`UploadPlaylistUnauthorized`](./src/plex_api_client/models/errors/uploadplaylistunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetTransientTokenUnauthorized`](./src/plex_api_client/models/errors/gettransienttokenunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetSourceConnectionInformationUnauthorized`](./src/plex_api_client/models/errors/getsourceconnectioninformationunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetTokenDetailsUnauthorized`](./src/plex_api_client/models/errors/gettokendetailsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`PostUsersSignInDataUnauthorized`](./src/plex_api_client/models/errors/postuserssignindataunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetStatisticsUnauthorized`](./src/plex_api_client/models/errors/getstatisticsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetResourcesStatisticsUnauthorized`](./src/plex_api_client/models/errors/getresourcesstatisticsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetBandwidthStatisticsUnauthorized`](./src/plex_api_client/models/errors/getbandwidthstatisticsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetSessionsUnauthorized`](./src/plex_api_client/models/errors/getsessionsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetSessionHistoryUnauthorized`](./src/plex_api_client/models/errors/getsessionhistoryunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetTranscodeSessionsUnauthorized`](./src/plex_api_client/models/errors/gettranscodesessionsunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`StopTranscodeSessionUnauthorized`](./src/plex_api_client/models/errors/stoptranscodesessionunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetUpdateStatusUnauthorized`](./src/plex_api_client/models/errors/getupdatestatusunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`CheckForUpdatesUnauthorized`](./src/plex_api_client/models/errors/checkforupdatesunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`ApplyUpdatesUnauthorized`](./src/plex_api_client/models/errors/applyupdatesunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetUsersUnauthorized`](./src/plex_api_client/models/errors/getusersunauthorized.py): Unauthorized - Returned if the X-Plex-Token is missing from the header or query. Status code `401`. Applicable to 1 of 84 methods.* -* [`GetTokenByPinIDResponseBody`](./src/plex_api_client/models/errors/gettokenbypinidresponsebody.py): Not Found or Expired. Status code `404`. Applicable to 1 of 84 methods.* -* [`GetServerIdentityRequestTimeout`](./src/plex_api_client/models/errors/getserveridentityrequesttimeout.py): Request Timeout. Status code `408`. Applicable to 1 of 84 methods.* * [`ResponseValidationError`](./src/plex_api_client/models/errors/responsevalidationerror.py): Type mismatch between the response data and the expected Pydantic model. Provides access to the Pydantic validation error via the `cause` attribute.
- -\* Check [the method documentation](#available-resources-and-operations) to see if the error is applicable. ## Server Selection -### Server Variables +### Select Server by Index -The default server `{protocol}://{ip}:{port}` contains variables and is set to `https://10.10.10.47:32400` by default. To override default values, the following parameters are available when initializing the SDK client instance: +You can override the default server globally by passing a server index to the `server_idx: int` optional parameter when initializing the SDK client instance. The selected server will then be used as the default on the operations that use it. This table lists the indexes associated with the available servers: -| Variable | Parameter | Supported Values | Default | Description | -| ---------- | --------------------------------- | -------------------------- | --------------- | ---------------------------------------------- | -| `protocol` | `protocol: models.ServerProtocol` | - `"http"`
- `"https"` | `"https"` | The protocol to use for the server connection | -| `ip` | `ip: str` | str | `"10.10.10.47"` | The IP address or hostname of your Plex Server | -| `port` | `port: str` | str | `"32400"` | The port of your Plex Server | +| # | Server | Variables | Description | +| --- | ---------------------------------------------------------- | -------------------------------------------- | ----------- | +| 0 | `https://{IP-description}.{identifier}.plex.direct:{port}` | `identifier`
`IP-description`
`port` | | +| 1 | `{protocol}://{host}:{port}` | `protocol`
`host`
`port` | | +| 2 | `https://{server_url}` | `server_url` | | + +If the selected server has variables, you may override its default values through the additional parameters made available in the SDK constructor: + +| Variable | Parameter | Default | Description | +| ---------------- | ------------------------ | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `identifier` | `identifier: str` | `"0123456789abcdef0123456789abcdef"` | The unique identifier of this particular PMS | +| `IP-description` | `ip_description: str` | `"1-2-3-4"` | A `-` separated string of the IPv4 or IPv6 address components | +| `port` | `port: str` | `"32400"` | The Port number configured on the PMS. Typically (`32400`).
If using a reverse proxy, this would be the port number configured on the proxy.
| +| `protocol` | `protocol: str` | `"http"` | The network protocol to use. Typically (`http` or `https`) | +| `host` | `host: str` | `"localhost"` | The Host of the PMS.
If using on a local network, this is the internal IP address of the server hosting the PMS.
If using on an external network, this is the external IP address for your network, and requires port forwarding.
If using a reverse proxy, this would be the external DNS domain for your network, and requires the proxy handle port forwarding.
| +| `server_url` | `server_url_global: str` | `"http://localhost:32400"` | The full manual URL to access the PMS | #### Example ```python from plex_api_client import PlexAPI +from plex_api_client.models import components with PlexAPI( - protocol="https" - ip="4982:bc2a:b4f8:efb5:2394:5bc3:ab4f:0e6d" - port="44765" - access_token="", + server_idx=1, + protocol="" + host="electric-excess.name" + port="36393" + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.server.get_server_capabilities() + res = plex_api.general.get_server_info(request={}) - assert res.object is not None + assert res.media_container_with_directory is not None # Handle response - print(res.object) + print(res.media_container_with_directory) ``` ### Override Server URL Per-Client -The default server can be overridden globally by passing a URL to the `server_url: str` optional parameter when initializing the SDK client instance. For example: +The default server can also be overridden globally by passing a URL to the `server_url: str` optional parameter when initializing the SDK client instance. For example: ```python from plex_api_client import PlexAPI +from plex_api_client.models import components with PlexAPI( - server_url="https://10.10.10.47:32400", - access_token="", + server_url="https://http://localhost:32400", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.server.get_server_capabilities() + res = plex_api.general.get_server_info(request={}) - assert res.object is not None + assert res.media_container_with_directory is not None # Handle response - print(res.object) - -``` - -### Override Server URL Per-Operation - -The server URL can also be overridden on a per-operation basis, provided a server list was specified for the operation. For example: -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.plex.get_companions_data(server_url="https://plex.tv/api/v2") - - assert res.response_bodies is not None - - # Handle response - print(res.response_bodies) + print(res.media_container_with_directory) ``` @@ -796,25 +926,37 @@ s = PlexAPI(async_client=CustomClient(httpx.AsyncClient())) This SDK supports the following security scheme globally: -| Name | Type | Scheme | -| -------------- | ------ | ------- | -| `access_token` | apiKey | API key | +| Name | Type | Scheme | +| ------- | ------ | ------- | +| `token` | apiKey | API key | -To authenticate with the API the `access_token` parameter must be set when initializing the SDK client instance. For example: +To authenticate with the API the `token` parameter must be set when initializing the SDK client instance. For example: ```python from plex_api_client import PlexAPI +from plex_api_client.models import components with PlexAPI( - access_token="", + token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", ) as plex_api: - res = plex_api.server.get_server_capabilities() + res = plex_api.general.get_server_info(request={}) - assert res.object is not None + assert res.media_container_with_directory is not None # Handle response - print(res.object) + print(res.media_container_with_directory) ``` @@ -828,10 +970,22 @@ The `PlexAPI` class implements the context manager protocol and registers a fina ```python from plex_api_client import PlexAPI +from plex_api_client.models import components def main(): with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: # Rest of application here... @@ -840,7 +994,18 @@ def main(): async def amain(): async with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: # Rest of application here... ``` diff --git a/RELEASES.md b/RELEASES.md index a3302bb..cb9de28 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1098,4 +1098,14 @@ Based on: ### Generated - [python v0.30.0] . ### Releases -- [PyPI v0.30.0] https://pypi.org/project/plex-api-client/0.30.0 - . \ No newline at end of file +- [PyPI v0.30.0] https://pypi.org/project/plex-api-client/0.30.0 - . + +## 2025-10-12 06:46:30 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.636.3 (2.723.11) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.31.0] . +### Releases +- [PyPI v0.31.0] https://pypi.org/project/plex-api-client/0.31.0 - . \ No newline at end of file diff --git a/USAGE.md b/USAGE.md index a95e2bc..b96e2fd 100644 --- a/USAGE.md +++ b/USAGE.md @@ -2,40 +2,125 @@ ```python # Synchronous Example from plex_api_client import PlexAPI +from plex_api_client.models import components, operations with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.server.get_server_capabilities() + res = plex_api.transcoder.start_transcode_session(request=operations.StartTranscodeSessionRequest( + transcode_type=components.TranscodeType.MUSIC, + extension=operations.Extension.MPD, + advanced_subtitles=components.AdvancedSubtitles.BURN, + audio_boost=50, + audio_channel_count=5, + auto_adjust_quality=components.BoolInt.ONE, + auto_adjust_subtitle=components.BoolInt.ONE, + direct_play=components.BoolInt.ONE, + direct_stream=components.BoolInt.ONE, + direct_stream_audio=components.BoolInt.ONE, + disable_resolution_rotation=components.BoolInt.ONE, + has_mde=components.BoolInt.ONE, + location=operations.StartTranscodeSessionQueryParamLocation.WAN, + media_buffer_size=102400, + media_index=0, + music_bitrate=5000, + offset=90.5, + part_index=0, + path="/library/metadata/151671", + peak_bitrate=12000, + photo_resolution="1080x1080", + protocol=operations.StartTranscodeSessionQueryParamProtocol.DASH, + seconds_per_segment=5, + subtitle_size=50, + video_bitrate=12000, + video_quality=50, + video_resolution="1080x1080", + x_plex_client_profile_extra="add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + x_plex_client_profile_name="generic", + )) - assert res.object is not None + assert res.response_stream is not None # Handle response - print(res.object) + print(res.response_stream) ```
The same SDK client can also be used to make asynchronous requests by importing asyncio. + ```python # Asynchronous Example import asyncio from plex_api_client import PlexAPI +from plex_api_client.models import components, operations async def main(): async with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = await plex_api.server.get_server_capabilities_async() + res = await plex_api.transcoder.start_transcode_session_async(request=operations.StartTranscodeSessionRequest( + transcode_type=components.TranscodeType.MUSIC, + extension=operations.Extension.MPD, + advanced_subtitles=components.AdvancedSubtitles.BURN, + audio_boost=50, + audio_channel_count=5, + auto_adjust_quality=components.BoolInt.ONE, + auto_adjust_subtitle=components.BoolInt.ONE, + direct_play=components.BoolInt.ONE, + direct_stream=components.BoolInt.ONE, + direct_stream_audio=components.BoolInt.ONE, + disable_resolution_rotation=components.BoolInt.ONE, + has_mde=components.BoolInt.ONE, + location=operations.StartTranscodeSessionQueryParamLocation.WAN, + media_buffer_size=102400, + media_index=0, + music_bitrate=5000, + offset=90.5, + part_index=0, + path="/library/metadata/151671", + peak_bitrate=12000, + photo_resolution="1080x1080", + protocol=operations.StartTranscodeSessionQueryParamProtocol.DASH, + seconds_per_segment=5, + subtitle_size=50, + video_bitrate=12000, + video_quality=50, + video_resolution="1080x1080", + x_plex_client_profile_extra="add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + x_plex_client_profile_name="generic", + )) - assert res.object is not None + assert res.response_stream is not None # Handle response - print(res.object) + print(res.response_stream) asyncio.run(main()) ``` diff --git a/codeSamples.yaml b/codeSamples.yaml index aa69c33..71efb9e 100644 --- a/codeSamples.yaml +++ b/codeSamples.yaml @@ -10,18 +10,61 @@ actions: label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.server.get_server_capabilities() + res = plex_api.general.get_server_info(request={}) - assert res.object is not None + assert res.media_container_with_directory is not None # Handle response - print(res.object) + print(res.media_container_with_directory) + - target: $["paths"]["/:/eventsource/notifications"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.events.get_notifications(request={}) + + assert res.response_stream is not None + + # Handle response + print(res.response_stream) - target: $["paths"]["/:/prefs"]["get"] update: x-codeSamples: @@ -32,103 +75,257 @@ actions: with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.server.get_server_preferences() + res = plex_api.preferences.get_all_preferences() - assert res.object is not None + assert res.media_container_with_settings is not None # Handle response - print(res.object) - - target: $["paths"]["/:/progress"]["post"] + print(res.media_container_with_settings) + - target: $["paths"]["/:/prefs"]["put"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.media.update_play_progress(key="", time=90000, state="played") - - assert res is not None - - # Handle response - print(res) - - target: $["paths"]["/:/scrobble"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.media.mark_played(key=59398) - - assert res is not None - - # Handle response - print(res) - - target: $["paths"]["/:/timeline"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - from plex_api_client.models import operations - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.video.get_timeline(request={ - "rating_key": 23409, - "key": "/library/metadata/23409", - "state": operations.State.PLAYING, - "has_mde": 1, - "time": 2000, - "duration": 10000, - "context": "home:hub.continueWatching", - "play_queue_item_id": 1, - "play_back_time": 2000, - "row": 1, + res = plex_api.preferences.set_preferences(request={ + "prefs": {}, }) assert res is not None # Handle response print(res) - - target: $["paths"]["/:/unscrobble"]["get"] + - target: $["paths"]["/:/prefs/get"]["get"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.media.mark_unplayed(key=59398) + res = plex_api.preferences.get_preference(request={}) + + assert res.media_container_with_settings is not None + + # Handle response + print(res.media_container_with_settings) + - target: $["paths"]["/:/rate"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.rate.set_rating(request={ + "identifier": "", + "key": "", + "rating": 8722.46, + }) assert res is not None # Handle response print(res) + - target: $["paths"]["/:/scrobble"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.timeline.mark_played(request={ + "identifier": "", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/:/timeline"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.timeline.report(request=operations.ReportRequest( + key="/foo", + rating_key="xyz", + state=operations.State.PLAYING, + play_queue_item_id="123", + time=0, + duration=10000, + continuing=components.BoolInt.ONE, + updated=14200000, + offline=components.BoolInt.ONE, + time_to_first_frame=1000, + time_stalled=1000, + bandwidth=100, + buffered_time=100, + buffered_size=1024, + )) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/:/unscrobble"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.timeline.unscrobble(request={ + "identifier": "", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/:/websocket/notifications"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.events.connect_web_socket(request={}) + + assert res.response_stream is not None + + # Handle response + print(res.response_stream) - target: $["paths"]["/activities"]["get"] update: x-codeSamples: @@ -139,29 +336,43 @@ actions: with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.activities.get_server_activities() + res = plex_api.activities.list_activities() assert res.object is not None # Handle response print(res.object) - - target: $["paths"]["/activities/{activityUUID}"]["delete"] + - target: $["paths"]["/activities/{activityId}"]["delete"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.activities.cancel_server_activities(activity_uuid="25b71ed5-0f9d-461c-baa7-d404e9e10d3e") + res = plex_api.activities.cancel_activity(request={ + "activity_id": "d6199ba1-fb5e-4cae-bf17-1a5369c1cf1e", + }) assert res is not None @@ -177,10 +388,10 @@ actions: with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.butler.stop_all_tasks() + res = plex_api.butler.stop_tasks() assert res is not None @@ -196,10 +407,10 @@ actions: with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.butler.get_butler_tasks() + res = plex_api.butler.get_tasks() assert res.object is not None @@ -215,56 +426,82 @@ actions: with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.butler.start_all_tasks() + res = plex_api.butler.start_tasks() assert res is not None # Handle response print(res) - - target: $["paths"]["/butler/{taskName}"]["delete"] + - target: $["paths"]["/butler/{task}"]["delete"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI - from plex_api_client.models import operations + from plex_api_client.models import components, operations with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.butler.stop_task(task_name=operations.PathParamTaskName.CLEAN_OLD_CACHE_FILES) + res = plex_api.butler.stop_task(request={ + "task": operations.Task.CLEAN_OLD_BUNDLES, + }) assert res is not None # Handle response print(res) - - target: $["paths"]["/butler/{taskName}"]["post"] + - target: $["paths"]["/butler/{task}"]["post"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI - from plex_api_client.models import operations + from plex_api_client.models import components, operations with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.butler.start_task(task_name=operations.TaskName.REFRESH_PERIODIC_METADATA) + res = plex_api.butler.start_task(request={ + "task": operations.PathParamTask.REFRESH_LOCAL_MEDIA, + }) assert res is not None # Handle response print(res) - - target: $["paths"]["/clients"]["get"] + - target: $["paths"]["/downloadQueue"]["post"] update: x-codeSamples: - lang: python @@ -274,108 +511,325 @@ actions: with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.server.get_available_clients() + res = plex_api.download_queue.create_download_queue() assert res.object is not None # Handle response print(res.object) - - target: $["paths"]["/companions"]["get"] + - target: $["paths"]["/downloadQueue/{queueId}"]["get"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.plex.get_companions_data() - - assert res.response_bodies is not None - - # Handle response - print(res.response_bodies) - - target: $["paths"]["/devices"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.server.get_devices() + res = plex_api.download_queue.get_download_queue(request={ + "queue_id": 922802, + }) assert res.object is not None # Handle response print(res.object) - - target: $["paths"]["/friends"]["get"] + - target: $["paths"]["/downloadQueue/{queueId}/add"]["post"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components, operations with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.plex.get_user_friends() - - assert res.friends is not None - - # Handle response - print(res.friends) - - target: $["paths"]["/geoip"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - - - with PlexAPI() as plex_api: - - res = plex_api.plex.get_geo_data() - - assert res.geo_data is not None - - # Handle response - print(res.geo_data) - - target: $["paths"]["/home"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.plex.get_home_data() + res = plex_api.download_queue.add_download_queue_items(request=operations.AddDownloadQueueItemsRequest( + queue_id=984925, + keys=[ + "/library/metadata/3", + "/library/metadata/6", + ], + advanced_subtitles=components.AdvancedSubtitles.BURN, + audio_boost=50, + audio_channel_count=5, + auto_adjust_quality=components.BoolInt.ONE, + auto_adjust_subtitle=components.BoolInt.ONE, + direct_play=components.BoolInt.ONE, + direct_stream=components.BoolInt.ONE, + direct_stream_audio=components.BoolInt.ONE, + disable_resolution_rotation=components.BoolInt.ONE, + has_mde=components.BoolInt.ONE, + location=components.Location.WAN, + media_buffer_size=102400, + media_index=0, + music_bitrate=5000, + offset=90.5, + part_index=0, + path="/library/metadata/151671", + peak_bitrate=12000, + photo_resolution="1080x1080", + protocol=components.Protocol.DASH, + seconds_per_segment=5, + subtitle_size=50, + video_bitrate=12000, + video_quality=50, + video_resolution="1080x1080", + )) assert res.object is not None # Handle response print(res.object) + - target: $["paths"]["/downloadQueue/{queueId}/item/{itemId}/decision"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.download_queue.get_item_decision(request={ + "queue_id": 231605, + "item_id": 32, + }) + + assert res.media_container_with_decision is not None + + # Handle response + print(res.media_container_with_decision) + - target: $["paths"]["/downloadQueue/{queueId}/item/{itemId}/media"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.download_queue.get_download_queue_media(request={ + "queue_id": 663184, + "item_id": 32, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/downloadQueue/{queueId}/items"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.download_queue.list_download_queue_items(request={ + "queue_id": 524138, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/downloadQueue/{queueId}/items/{itemId}"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.download_queue.remove_download_queue_items(request={ + "queue_id": 946275, + "item_id": [ + 32, + 345, + 23, + ], + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/downloadQueue/{queueId}/items/{itemId}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.download_queue.get_download_queue_items(request={ + "queue_id": 809886, + "item_id": [ + 32, + 345, + 23, + ], + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/downloadQueue/{queueId}/items/{itemId}/restart"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.download_queue.restart_processing_download_queue_items(request={ + "queue_id": 713001, + "item_id": [ + 32, + 345, + 23, + ], + }) + + assert res is not None + + # Handle response + print(res) - target: $["paths"]["/hubs"]["get"] update: x-codeSamples: @@ -383,41 +837,231 @@ actions: label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.hubs.get_global_hubs() + res = plex_api.hubs.get_all_hubs(request={ + "only_transient": components.BoolInt.ONE, + }) assert res.object is not None # Handle response print(res.object) - - target: $["paths"]["/hubs/home/recentlyAdded"]["get"] + - target: $["paths"]["/hubs/continueWatching"]["get"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI - from plex_api_client.models import operations + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.hubs.get_recently_added(request={ - "content_directory_id": 39486, - "section_id": 2, - "type": operations.Type.TV_SHOW, - "include_meta": operations.IncludeMeta.ENABLE, + res = plex_api.hubs.get_continue_watching(request={}) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/hubs/items"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.hubs.get_hub_items(request={ + "identifier": [ + "", + "", + "", + ], }) assert res.object is not None + # Handle response + print(res.object) + - target: $["paths"]["/hubs/metadata/{metadataId}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.hubs.get_metadata_hubs(request={ + "metadata_id": 605482, + "only_transient": components.BoolInt.ONE, + }) + + assert res.media_container_with_hubs is not None + + # Handle response + print(res.media_container_with_hubs) + - target: $["paths"]["/hubs/metadata/{metadataId}/postplay"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.hubs.get_postplay_hubs(request={ + "metadata_id": 441419, + "only_transient": components.BoolInt.ONE, + }) + + assert res.media_container_with_hubs is not None + + # Handle response + print(res.media_container_with_hubs) + - target: $["paths"]["/hubs/metadata/{metadataId}/related"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.hubs.get_related_hubs(request={ + "metadata_id": 8858, + "only_transient": components.BoolInt.ONE, + }) + + assert res.media_container_with_hubs is not None + + # Handle response + print(res.media_container_with_hubs) + - target: $["paths"]["/hubs/promoted"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.hubs.get_promoted_hubs(request={}) + + assert res.object is not None + # Handle response print(res.object) - target: $["paths"]["/hubs/search"]["get"] @@ -427,18 +1071,33 @@ actions: label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.search.perform_search(query="arnold", limit=5) + res = plex_api.search.search_hubs(request={ + "query": "", + "section_id": 1, + }) - assert res is not None + assert res.object is not None # Handle response - print(res) + print(res.object) - target: $["paths"]["/hubs/search/voice"]["get"] update: x-codeSamples: @@ -446,18 +1105,32 @@ actions: label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.search.perform_voice_search(query="dead+poop", limit=5) + res = plex_api.search.voice_search_hubs(request={ + "query": "", + }) - assert res is not None + assert res.object is not None # Handle response - print(res) + print(res.object) - target: $["paths"]["/hubs/sections/{sectionId}"]["get"] update: x-codeSamples: @@ -465,18 +1138,241 @@ actions: label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.hubs.get_library_hubs(section_id=492.74) + res = plex_api.hubs.get_section_hubs(request={ + "section_id": 336924, + "only_transient": components.BoolInt.ONE, + }) assert res.object is not None # Handle response print(res.object) + - target: $["paths"]["/hubs/sections/{sectionId}/manage"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.hubs.reset_section_defaults(request={ + "section_id": 383022, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/hubs/sections/{sectionId}/manage"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.hubs.list_hubs(request={ + "section_id": 442546, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/hubs/sections/{sectionId}/manage"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.hubs.create_custom_hub(request=operations.CreateCustomHubRequest( + section_id=869922, + metadata_item_id=703843, + promoted_to_recommended=components.BoolInt.ONE, + promoted_to_own_home=components.BoolInt.ONE, + promoted_to_shared_home=components.BoolInt.ONE, + )) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/hubs/sections/{sectionId}/manage/move"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.hubs.move_hub(request={ + "section_id": 755710, + "identifier": "", + }) + + assert res.get_responses_200 is not None + + # Handle response + print(res.get_responses_200) + - target: $["paths"]["/hubs/sections/{sectionId}/manage/{identifier}"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.hubs.delete_custom_hub(request={ + "section_id": 625677, + "identifier": "", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/hubs/sections/{sectionId}/manage/{identifier}"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.hubs.update_hub_visibility(request=operations.UpdateHubVisibilityRequest( + section_id=341650, + identifier="", + promoted_to_recommended=components.BoolInt.ONE, + promoted_to_own_home=components.BoolInt.ONE, + promoted_to_shared_home=components.BoolInt.ONE, + )) + + assert res is not None + + # Handle response + print(res) - target: $["paths"]["/identity"]["get"] update: x-codeSamples: @@ -488,33 +1384,44 @@ actions: with PlexAPI() as plex_api: - res = plex_api.server.get_server_identity() + res = plex_api.general.get_identity() assert res.object is not None # Handle response print(res.object) - - target: $["paths"]["/library/all/top"]["get"] + - target: $["paths"]["/library/all"]["get"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI - from plex_api_client.models import operations + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.get_top_watched_content(type_=operations.GetTopWatchedContentQueryParamType.TV_SHOW, include_guids=operations.GetTopWatchedContentQueryParamIncludeGuids.ENABLE) + res = plex_api.library.get_library_items(request={}) - assert res.object is not None + assert res.media_container_with_metadata is not None # Handle response - print(res.object) - - target: $["paths"]["/library/hashes"]["get"] + print(res.media_container_with_metadata) + - target: $["paths"]["/library/caches"]["delete"] update: x-codeSamples: - lang: python @@ -524,16 +1431,16 @@ actions: with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.library.get_file_hash(url="file://C:\\Image.png&type=13") + res = plex_api.library.delete_caches() assert res is not None # Handle response print(res) - - target: $["paths"]["/library/metadata/{ratingKey}"]["get"] + - target: $["paths"]["/library/clean/bundles"]["put"] update: x-codeSamples: - lang: python @@ -543,494 +1450,3978 @@ actions: with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.library.get_media_meta_data(request={ - "rating_key": "21119,21617", - "include_concerts": True, - "include_extras": True, - "include_on_deck": True, - "include_popular_leaves": True, - "include_preferences": True, - "include_reviews": True, - "include_chapters": True, - "include_stations": True, - "include_external_media": True, - "async_augment_metadata": True, - "async_check_files": True, - "async_refresh_analysis": True, - "async_refresh_local_media_agent": True, + res = plex_api.library.clean_bundles() + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/collections"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.collections.create_collection(request={ + "section_id": "", }) - assert res.object is not None + assert res.media_container_with_metadata is not None # Handle response - print(res.object) - - target: $["paths"]["/library/metadata/{ratingKey}/arts"]["get"] + print(res.media_container_with_metadata) + - target: $["paths"]["/library/collections/{collectionId}/composite/{updatedAt}"]["get"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.get_media_arts(rating_key=16099) - - assert res.object is not None - - # Handle response - print(res.object) - - target: $["paths"]["/library/metadata/{ratingKey}/arts"]["post"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.library.post_media_arts(rating_key=2268, url="https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b") - - assert res is not None - - # Handle response - print(res) - - target: $["paths"]["/library/metadata/{ratingKey}/banner"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.media.get_banner_image(request={ - "rating_key": 9518, - "width": 396, - "height": 396, - "min_size": 1, - "upscale": 1, - "x_plex_token": "CV5xoxjTpFKUzBTShsaf", + res = plex_api.content.get_collection_image(request={ + "collection_id": 474227, + "updated_at": 759379, }) assert res.response_stream is not None # Handle response print(res.response_stream) - - target: $["paths"]["/library/metadata/{ratingKey}/children"]["get"] + - target: $["paths"]["/library/collections/{collectionId}/items"]["get"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.get_metadata_children(rating_key=2403.67, include_elements="Stream") + res = plex_api.content.get_collection_items(request={ + "collection_id": 314585, + }) - assert res.object is not None + assert res.media_container_with_metadata is not None # Handle response - print(res.object) - - target: $["paths"]["/library/metadata/{ratingKey}/posters"]["get"] + print(res.media_container_with_metadata) + - target: $["paths"]["/library/collections/{collectionId}/items"]["put"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.get_media_posters(rating_key=16099) + res = plex_api.library_collections.add_collection_items(request={ + "collection_id": 338144, + "uri": "https://expensive-bakeware.com", + }) - assert res.object is not None + assert res.media_container_with_metadata is not None # Handle response - print(res.object) - - target: $["paths"]["/library/metadata/{ratingKey}/posters"]["post"] + print(res.media_container_with_metadata) + - target: $["paths"]["/library/collections/{collectionId}/items/{itemId}"]["put"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.post_media_poster(rating_key=2268, url="https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b") + res = plex_api.library_collections.delete_collection_item(request={ + "collection_id": 320928, + "item_id": 406983, + }) - assert res is not None + assert res.media_container_with_metadata is not None # Handle response - print(res) - - target: $["paths"]["/library/metadata/{ratingKey}/thumb"]["get"] + print(res.media_container_with_metadata) + - target: $["paths"]["/library/collections/{collectionId}/items/{itemId}/move"]["put"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.media.get_thumb_image(request={ - "rating_key": 9518, - "width": 396, - "height": 396, - "min_size": 1, - "upscale": 1, - "x_plex_token": "CV5xoxjTpFKUzBTShsaf", + res = plex_api.library_collections.move_collection_item(request={ + "collection_id": 239532, + "item_id": 513864, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/file"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.ingest_transient_item(request=operations.IngestTransientItemRequest( + url="file:///storage%2Femulated%2F0%2FArcher-S01E01.mkv", + virtual_file_path="/Avatar.mkv", + compute_hashes=components.BoolInt.ONE, + ingest_non_matches=components.BoolInt.ONE, + )) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/matches"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_library_matches(request=operations.GetLibraryMatchesRequest( + include_full_metadata=components.BoolInt.ONE, + include_ancestor_metadata=components.BoolInt.ONE, + include_alternate_metadata_sources=components.BoolInt.ONE, + )) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/media/{mediaId}/chapterImages/{chapter}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_chapter_image(request={ + "media_id": 892563, + "chapter": 48348, }) assert res.response_stream is not None # Handle response print(res.response_stream) - - target: $["paths"]["/library/recentlyAdded"]["get"] + - target: $["paths"]["/library/metadata/augmentations/{augmentationId}"]["get"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI - from plex_api_client.models import operations + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.get_recently_added_library(request={ - "content_directory_id": 2, - "pinned_content_directory_id": [ - 3, + res = plex_api.library.get_augmentation_status(request={ + "augmentation_id": "", + "wait": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.delete_metadata_item(request={ + "ids": "", + "proxy": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.content.get_metadata_item(request=operations.GetMetadataItemRequest( + ids=[], + async_check_files=components.BoolInt.ONE, + async_refresh_local_media_agent=components.BoolInt.ONE, + async_refresh_analysis=components.BoolInt.ONE, + check_files=components.BoolInt.ONE, + skip_refresh=components.BoolInt.ONE, + check_file_availability=components.BoolInt.ONE, + async_augment_metadata=components.BoolInt.ONE, + augment_count=components.BoolInt.ONE, + )) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/metadata/{ids}"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.edit_metadata_item(request={ + "ids": [ + "", + "", + ], + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/addetect"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.detect_ads(request={ + "ids": "", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/allLeaves"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_all_item_leaves(request={ + "ids": "", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/metadata/{ids}/analyze"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.analyze_metadata(request={ + "ids": "", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/chapterThumbs"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.generate_thumbs(request={ + "ids": "", + "force": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/credits"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.detect_credits(request=operations.DetectCreditsRequest( + ids="", + force=components.BoolInt.ONE, + manual=components.BoolInt.ONE, + )) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/extras"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_extras(request={ + "ids": "", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/metadata/{ids}/extras"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.add_extras(request={ + "ids": "", + "url": "https://super-mortise.biz/", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/file"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_file(request={ + "ids": "", + }) + + assert res.two_hundred_audio_mpeg3_response_stream is not None + + # Handle response + print(res.two_hundred_audio_mpeg3_response_stream) + - target: $["paths"]["/library/metadata/{ids}/index"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.start_bif_generation(request={ + "ids": "", + "force": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/intro"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.detect_intros(request={ + "ids": "", + "force": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/marker"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.create_marker(request={ + "ids": "", + "type": 248391, + "start_time_offset": 535191, + "attributes": {}, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/library/metadata/{ids}/marker/{marker}"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.delete_marker(request={ + "ids": "", + "marker": "", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/marker/{marker}"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.edit_marker(request={ + "ids": "", + "marker": "", + "type": 884347, + "start_time_offset": 517251, + "attributes": {}, + }) + + assert res.post_responses_200 is not None + + # Handle response + print(res.post_responses_200) + - target: $["paths"]["/library/metadata/{ids}/match"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.match_item(request={ + "ids": "", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/matches"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.list_matches(request={ + "ids": "", + "manual": components.BoolInt.ONE, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/metadata/{ids}/media/{mediaItem}"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.delete_media_item(request={ + "ids": "", + "media_item": "", + "proxy": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/merge"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.merge_items(request={ + "ids_path_parameter": "", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/nearest"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.list_sonically_similar(request={ + "ids": "", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/metadata/{ids}/prefs"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.set_item_preferences(request={ + "ids": "", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/refresh"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.refresh_items_metadata(request={ + "ids": "", + "mark_updated": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/related"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_related_items(request={ + "ids": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/library/metadata/{ids}/similar"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.list_similar(request={ + "ids": "", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/metadata/{ids}/split"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.split_item(request={ + "ids": "", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/subtitles"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.add_subtitles(request=operations.AddSubtitlesRequest( + ids="", + forced=components.BoolInt.ONE, + hearing_impaired=components.BoolInt.ONE, + )) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/tree"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_item_tree(request={ + "ids": "", + }) + + assert res.media_container_with_nested_metadata is not None + + # Handle response + print(res.media_container_with_nested_metadata) + - target: $["paths"]["/library/metadata/{ids}/unmatch"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.unmatch(request={ + "ids": "", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/users/top"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.list_top_users(request={ + "ids": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/library/metadata/{ids}/voiceActivity"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.detect_voice_activity(request=operations.DetectVoiceActivityRequest( + ids="", + force=components.BoolInt.ONE, + manual=components.BoolInt.ONE, + )) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/{element}"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.set_item_artwork(request={ + "ids": "", + "element": operations.Element.BANNER, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/{element}"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.update_item_artwork(request={ + "ids": "", + "element": operations.PathParamElement.CLEAR_LOGO, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/metadata/{ids}/{element}/{timestamp}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_item_artwork(request={ + "ids": "", + "element": operations.GetItemArtworkPathParamElement.POSTER, + "timestamp": 999555, + }) + + assert res.two_hundred_audio_mpeg3_response_stream is not None + + # Handle response + print(res.two_hundred_audio_mpeg3_response_stream) + - target: $["paths"]["/library/optimize"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.optimize_database(request={ + "async_": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/parts/{partId}"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.set_stream_selection(request={ + "part_id": 360489, + "all_parts": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/parts/{partId}/indexes/{index}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_part_index(request={ + "part_id": 724750, + "index": operations.Index.SD, + }) + + assert res.response_stream is not None + + # Handle response + print(res.response_stream) + - target: $["paths"]["/library/parts/{partId}/indexes/{index}/{offset}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_image_from_bif(request={ + "part_id": 304273, + "index": operations.PathParamIndex.SD, + "offset": 939569, + }) + + assert res.response_stream is not None + + # Handle response + print(res.response_stream) + - target: $["paths"]["/library/parts/{partId}/{changestamp}/{filename}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_media_part(request={ + "part_id": 877105, + "changestamp": 970622, + "filename": "example.file", + "download": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/people/{personId}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_person(request={ + "person_id": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/library/people/{personId}/media"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.list_person_media(request={ + "person_id": "", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/randomArtwork"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_random_artwork(request={ + "sections": [ 5, - 7, - 13, - 12, - 1, 6, - 14, - 2, - 10, - 16, - 17, ], - "section_id": 2, - "type": operations.QueryParamType.TV_SHOW, - "include_meta": operations.QueryParamIncludeMeta.ENABLE, }) - assert res.object is not None + assert res.media_container_with_artwork is not None # Handle response - print(res.object) - - target: $["paths"]["/library/search"]["get"] + print(res.media_container_with_artwork) + - target: $["paths"]["/library/sections/all"]["get"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI - from plex_api_client.models import operations with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.library.get_search_all_libraries(request={ - "query": "", - "client_id": "3381b62b-9ab7-4e37-827b-203e9809eb58", - "search_types": [ - operations.SearchTypes.PEOPLE, + res = plex_api.library.get_sections() + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/library/sections/all"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.add_section(request=operations.AddSectionRequest( + name="", + type=39544, + agent="", + language="", + locations=[ + "O:\fatboy\\Media\\Ripped\\Music", + "O:\fatboy\\Media\\My Music", ], - "include_collections": operations.GetSearchAllLibrariesQueryParamIncludeCollections.ENABLE, - "include_external_media": operations.GetSearchAllLibrariesQueryParamIncludeExternalMedia.ENABLE, + prefs=operations.QueryParamPrefs(), + relative=components.BoolInt.ONE, + import_fromi_tunes=components.BoolInt.ONE, + )) + + assert res.slash_get_responses_200 is not None + + # Handle response + print(res.slash_get_responses_200) + - target: $["paths"]["/library/sections/all/refresh"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + + + with PlexAPI( + token="", + ) as plex_api: + + res = plex_api.library.stop_all_refreshes() + + assert res.request_handler_slash_get_responses_200 is not None + + # Handle response + print(res.request_handler_slash_get_responses_200) + - target: $["paths"]["/library/sections/prefs"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_sections_prefs(request={ + "type": 460221, }) - assert res.object is not None + assert res.request_handler_slash_get_responses_200 is not None # Handle response - print(res.object) - - target: $["paths"]["/library/sections"]["get"] + print(res.request_handler_slash_get_responses_200) + - target: $["paths"]["/library/sections/refresh"]["post"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.get_all_libraries() - - assert res.object is not None - - # Handle response - print(res.object) - - target: $["paths"]["/library/sections/watchlist/{filter}"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - from plex_api_client.models import operations - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.watchlist.get_watch_list(request={ - "filter_": operations.Filter.RELEASED, - "x_plex_token": "CV5xoxjTpFKUzBTShsaf", - }) - - assert res.object is not None - - # Handle response - print(res.object) - - target: $["paths"]["/library/sections/{sectionKey}"]["delete"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.library.delete_library(section_key=9518) + res = plex_api.library.refresh_sections_metadata(request={}) assert res is not None # Handle response print(res) - - target: $["paths"]["/library/sections/{sectionKey}"]["get"] + - target: $["paths"]["/library/sections/{sectionId}"]["delete"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI - from plex_api_client.models import operations + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.get_library_details(section_key=9518, include_details=operations.IncludeDetails.ZERO) - - assert res.object is not None - - # Handle response - print(res.object) - - target: $["paths"]["/library/sections/{sectionKey}/actor"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - from plex_api_client.models import operations - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.library.get_actors_library(section_key=9518, type_=operations.GetActorsLibraryQueryParamType.TV_SHOW) - - assert res.object is not None - - # Handle response - print(res.object) - - target: $["paths"]["/library/sections/{sectionKey}/all"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - from plex_api_client.models import operations - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.library.get_library_sections_all(request={ - "section_key": 9518, - "type": operations.GetLibrarySectionsAllQueryParamType.TV_SHOW, - "include_meta": operations.GetLibrarySectionsAllQueryParamIncludeMeta.ENABLE, - "include_guids": operations.QueryParamIncludeGuids.ENABLE, - "include_advanced": operations.IncludeAdvanced.ENABLE, - "include_collections": operations.QueryParamIncludeCollections.ENABLE, - "include_external_media": operations.QueryParamIncludeExternalMedia.ENABLE, + res = plex_api.library.delete_library_section(request={ + "section_id": "", + "async_": components.BoolInt.ONE, }) - assert res.object is not None - - # Handle response - print(res.object) - - target: $["paths"]["/library/sections/{sectionKey}/country"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - from plex_api_client.models import operations - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.library.get_countries_library(section_key=9518, type_=operations.GetCountriesLibraryQueryParamType.TV_SHOW) - - assert res.object is not None - - # Handle response - print(res.object) - - target: $["paths"]["/library/sections/{sectionKey}/genre"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - from plex_api_client.models import operations - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.library.get_genres_library(section_key=9518, type_=operations.GetGenresLibraryQueryParamType.TV_SHOW) - - assert res.object is not None - - # Handle response - print(res.object) - - target: $["paths"]["/library/sections/{sectionKey}/refresh"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - from plex_api_client.models import operations - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.library.get_refresh_library_metadata(section_key=9518, force=operations.Force.ZERO) - assert res is not None # Handle response print(res) - - target: $["paths"]["/library/sections/{sectionKey}/search"]["get"] + - target: $["paths"]["/library/sections/{sectionId}"]["get"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI - from plex_api_client.models import operations + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.get_search_library(section_key=9518, type_=operations.GetSearchLibraryQueryParamType.TV_SHOW) - - assert res.object is not None - - # Handle response - print(res.object) - - target: $["paths"]["/library/sections/{sectionKey}/{tag}"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - from plex_api_client.models import operations - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.library.get_library_items(request={ - "tag": operations.Tag.NEWEST, - "include_guids": operations.IncludeGuids.ENABLE, - "type": operations.GetLibraryItemsQueryParamType.TV_SHOW, - "section_key": 9518, - "include_meta": operations.GetLibraryItemsQueryParamIncludeMeta.ENABLE, + res = plex_api.library.get_library_details(request={ + "section_id": "", + "include_details": components.BoolInt.ONE, }) assert res.object is not None # Handle response print(res.object) - - target: $["paths"]["/log"]["get"] + - target: $["paths"]["/library/sections/{sectionId}"]["put"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI - from plex_api_client.models import operations + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.log.log_line(level=operations.Level.THREE, message="Test log message", source="Postman") + res = plex_api.library.edit_section(request={ + "section_id": "", + "agent": "", + "locations": [ + "O:\fatboy\\Media\\Ripped\\Music", + "O:\fatboy\\Media\\My Music", + ], + "prefs": {}, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/sections/{sectionId}/albums"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.content.get_albums(request={ + "section_id": 817133, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/sections/{sectionId}/all"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.content.list_content(request={ + "section_id": "", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/sections/{sectionId}/all"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.update_items(request={ + "section_id": "", + "field_locked": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/sections/{sectionId}/allLeaves"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.content.get_all_leaves(request={ + "section_id": 633197, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/sections/{sectionId}/analyze"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.start_analysis(request={ + "section_id": 158829, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/sections/{sectionId}/arts"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.content.get_arts(request={ + "section_id": 859200, + }) + + assert res.media_container_with_artwork is not None + + # Handle response + print(res.media_container_with_artwork) + - target: $["paths"]["/library/sections/{sectionId}/autocomplete"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.autocomplete(request={ + "section_id": 942007, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/sections/{sectionId}/categories"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.content.get_categories(request={ + "section_id": 21841, + }) + + assert res.media_container_with_artwork is not None + + # Handle response + print(res.media_container_with_artwork) + - target: $["paths"]["/library/sections/{sectionId}/cluster"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.content.get_cluster(request={ + "section_id": 138560, + }) + + assert res.media_container_with_artwork is not None + + # Handle response + print(res.media_container_with_artwork) + - target: $["paths"]["/library/sections/{sectionId}/collection/{collectionId}"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.delete_collection(request={ + "section_id": 283619, + "collection_id": 680895, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/sections/{sectionId}/collections"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_collections(request={ + "section_id": 348838, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/sections/{sectionId}/common"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_common(request={ + "section_id": 298154, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/sections/{sectionId}/composite/{updatedAt}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_section_image(request={ + "section_id": 925611, + "updated_at": 117413, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/sections/{sectionId}/computePath"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.content.get_sonic_path(request={ + "section_id": 914549, + "start_id": 629990, + "end_id": 687740, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/sections/{sectionId}/emptyTrash"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.empty_trash(request={ + "section_id": 30052, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/sections/{sectionId}/filters"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_section_filters(request={ + "section_id": 380557, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/library/sections/{sectionId}/firstCharacters"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_first_characters(request={ + "section_id": 3947, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/library/sections/{sectionId}/indexes"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.delete_indexes(request={ + "section_id": 588437, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/sections/{sectionId}/intros"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.delete_intros(request={ + "section_id": 498656, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/sections/{sectionId}/location"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.content.get_folders(request={ + "section_id": 892532, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/library/sections/{sectionId}/moment"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.content.list_moments(request={ + "section_id": 403239, + }) + + assert res.media_container_with_artwork is not None + + # Handle response + print(res.media_container_with_artwork) + - target: $["paths"]["/library/sections/{sectionId}/nearest"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.content.get_sonically_similar(request={ + "section_id": 525956, + "values": [], + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/library/sections/{sectionId}/prefs"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_section_preferences(request={ + "section_id": 754869, + }) + + assert res.media_container_with_settings is not None + + # Handle response + print(res.media_container_with_settings) + - target: $["paths"]["/library/sections/{sectionId}/prefs"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.set_section_preferences(request={ + "section_id": 349936, + "prefs": {}, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/sections/{sectionId}/refresh"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.cancel_refresh(request={ + "section_id": 326852, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/sections/{sectionId}/refresh"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.refresh_section(request={ + "section_id": 450300, + "force": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/sections/{sectionId}/sorts"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_available_sorts(request={ + "section_id": 212498, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/library/streams/{streamId}.{ext}"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.delete_stream(request={ + "stream_id": 841510, + "ext": "", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/streams/{streamId}.{ext}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_stream(request={ + "stream_id": 314506, + "ext": "", + "auto_adjust_subtitle": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/streams/{streamId}.{ext}"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.set_stream_offset(request={ + "stream_id": 606295, + "ext": "", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/library/streams/{streamId}/levels"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_stream_levels(request={ + "stream_id": 447611, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/library/streams/{streamId}/loudness"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_stream_loudness(request={ + "stream_id": 277271, + }) + + assert res.res is not None + + # Handle response + print(res.res) + - target: $["paths"]["/library/tags"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library.get_tags(request={}) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/livetv/dvrs"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + + + with PlexAPI( + token="", + ) as plex_api: + + res = plex_api.dv_rs.list_dv_rs() + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/livetv/dvrs"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.dv_rs.create_dvr(request={ + "lineup": "lineup://tv.plex.providers.epg.onconnect/USA-HI51418-DEFAULT", + "device_query_parameter": [ + "d", + "e", + "v", + "i", + "c", + "e", + "[", + "]", + "=", + "d", + "e", + "v", + "i", + "c", + "e", + ":", + "/", + "/", + "t", + "v", + ".", + "p", + "l", + "e", + "x", + ".", + "g", + "r", + "a", + "b", + "b", + "e", + "r", + "s", + ".", + "h", + "d", + "h", + "o", + "m", + "e", + "r", + "u", + "n", + "/", + "1", + "0", + "5", + "3", + "C", + "0", + "C", + "A", + ], + "language": "eng", + }) + + assert res.dvr_request_handler_slash_get_responses_200 is not None + + # Handle response + print(res.dvr_request_handler_slash_get_responses_200) + - target: $["paths"]["/livetv/dvrs/{dvrId}"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.dv_rs.delete_dvr(request={ + "dvr_id": 855088, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/livetv/dvrs/{dvrId}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.dv_rs.get_dvr(request={ + "dvr_id": 973518, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/livetv/dvrs/{dvrId}/channels/{channel}/tune"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.dv_rs.tune_channel(request={ + "dvr_id": 834281, + "channel": "2.1", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/livetv/dvrs/{dvrId}/devices/{deviceId}"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.dv_rs.remove_device_from_dvr(request={ + "dvr_id": 945416, + "device_id": 260761, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/livetv/dvrs/{dvrId}/devices/{deviceId}"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.dv_rs.add_device_to_dvr(request={ + "dvr_id": 334755, + "device_id": 852930, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/livetv/dvrs/{dvrId}/lineups"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.dv_rs.delete_lineup(request={ + "dvr_id": 454470, + "lineup": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/livetv/dvrs/{dvrId}/lineups"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.dv_rs.add_lineup(request={ + "dvr_id": 945235, + "lineup": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/livetv/dvrs/{dvrId}/prefs"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.dv_rs.set_dvr_preferences(request={ + "dvr_id": 116357, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/livetv/dvrs/{dvrId}/reloadGuide"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.dv_rs.stop_dvr_reload(request={ + "dvr_id": 348053, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/livetv/dvrs/{dvrId}/reloadGuide"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.dv_rs.reload_guide(request={ + "dvr_id": 140753, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/livetv/epg/channelmap"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.epg.compute_channel_map(request={ + "device_query_parameter": "", + "lineup": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/livetv/epg/channels"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.epg.get_channels(request={ + "lineup": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/livetv/epg/countries"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + + + with PlexAPI( + token="", + ) as plex_api: + + res = plex_api.epg.get_countries() + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/livetv/epg/countries/{country}/{epgId}/lineups"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.epg.get_countries_lineups(request={ + "country": "Malawi", + "epg_id": "", + }) + + assert res.media_container_with_lineup is not None + + # Handle response + print(res.media_container_with_lineup) + - target: $["paths"]["/livetv/epg/countries/{country}/{epgId}/regions"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.epg.get_country_regions(request={ + "country": "Morocco", + "epg_id": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/livetv/epg/countries/{country}/{epgId}/regions/{region}/lineups"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.epg.list_lineups(request={ + "country": "Vanuatu", + "epg_id": "", + "region": "", + }) + + assert res.media_container_with_lineup is not None + + # Handle response + print(res.media_container_with_lineup) + - target: $["paths"]["/livetv/epg/languages"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + + + with PlexAPI( + token="", + ) as plex_api: + + res = plex_api.epg.get_all_languages() + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/livetv/epg/lineup"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.epg.get_lineup(request={ + "device_query_parameter": "", + "lineup_group": "", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/livetv/epg/lineupchannels"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.epg.get_lineup_channels(request={ + "lineup": [ + "", + "", + ], + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/livetv/sessions"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + + + with PlexAPI( + token="", + ) as plex_api: + + res = plex_api.live_tv.get_sessions() + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/livetv/sessions/{sessionId}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.live_tv.get_live_tv_session(request={ + "session_id": "", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/livetv/sessions/{sessionId}/{consumerId}/index.m3u8"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.live_tv.get_session_playlist_index(request={ + "session_id": "", + "consumer_id": "", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/livetv/sessions/{sessionId}/{consumerId}/{segmentId}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.live_tv.get_session_segment(request={ + "session_id": "", + "consumer_id": "", + "segment_id": "", + }) assert res is not None @@ -1046,18 +5437,111 @@ actions: with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.log.log_multi_line(request=("level=4&message=Test%20message%201&source=postman\n" - "level=3&message=Test%20message%202&source=postman\n" - "level=1&message=Test%20message%203&source=postman")) + res = plex_api.log.write_log(request=open("example.file", "rb")) assert res is not None # Handle response print(res) - - target: $["paths"]["/log/networked"]["get"] + - target: $["paths"]["/log"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.log.write_message(request={}) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/log/networked"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.log.enable_papertrail(request={}) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/media/grabbers"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.devices.get_available_grabbers(request={ + "protocol": "livetv", + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/media/grabbers/devices"]["get"] update: x-codeSamples: - lang: python @@ -1067,10 +5551,413 @@ actions: with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.log.enable_paper_trail() + res = plex_api.devices.list_devices() + + assert res.media_container_with_device is not None + + # Handle response + print(res.media_container_with_device) + - target: $["paths"]["/media/grabbers/devices"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.devices.add_device(request={ + "uri": "http://10.0.0.5", + }) + + assert res.media_container_with_device is not None + + # Handle response + print(res.media_container_with_device) + - target: $["paths"]["/media/grabbers/devices/discover"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + + + with PlexAPI( + token="", + ) as plex_api: + + res = plex_api.devices.discover_devices() + + assert res.media_container_with_device is not None + + # Handle response + print(res.media_container_with_device) + - target: $["paths"]["/media/grabbers/devices/{deviceId}"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.devices.remove_device(request={ + "device_id": 685908, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/media/grabbers/devices/{deviceId}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.devices.get_device_details(request={ + "device_id": 170949, + }) + + assert res.media_container_with_device is not None + + # Handle response + print(res.media_container_with_device) + - target: $["paths"]["/media/grabbers/devices/{deviceId}"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.devices.modify_device(request={ + "device_id": 879135, + "enabled": components.BoolInt.ONE, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/media/grabbers/devices/{deviceId}/channelmap"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.devices.set_channelmap(request={ + "device_id": 937661, + "channel_mapping": {}, + "channel_mapping_by_key": {}, + "channels_enabled": [ + "4", + "6", + ".", + "1", + ",", + "4", + "4", + ".", + "1", + ",", + "4", + "5", + ".", + "1", + ], + }) + + assert res.media_container_with_device is not None + + # Handle response + print(res.media_container_with_device) + - target: $["paths"]["/media/grabbers/devices/{deviceId}/channels"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.devices.get_devices_channels(request={ + "device_id": 517209, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/media/grabbers/devices/{deviceId}/prefs"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.devices.set_device_preferences(request={ + "device_id": 420973, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/media/grabbers/devices/{deviceId}/scan"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.devices.stop_scan(request={ + "device_id": 576494, + }) + + assert res.media_container_with_device is not None + + # Handle response + print(res.media_container_with_device) + - target: $["paths"]["/media/grabbers/devices/{deviceId}/scan"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.devices.scan(request={ + "device_id": 57391, + "source": "Cable", + }) + + assert res.media_container_with_device is not None + + # Handle response + print(res.media_container_with_device) + - target: $["paths"]["/media/grabbers/devices/{deviceId}/thumb/{version}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.devices.get_thumb(request={ + "device_id": 960617, + "version_path_parameter": 1025, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/media/grabbers/operations/{operationId}"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.subscriptions.cancel_grab(request={ + "operation_id": "", + }) assert res is not None @@ -1086,16 +5973,49 @@ actions: with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.server.get_media_providers(x_plex_token="CV5xoxjTpFKUzBTShsaf") + res = plex_api.provider.list_providers() assert res.object is not None # Handle response print(res.object) - - target: $["paths"]["/myplex/account"]["get"] + - target: $["paths"]["/media/providers"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.provider.add_provider(request={ + "url": "https://steep-obedience.name/", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/media/providers/refresh"]["post"] update: x-codeSamples: - lang: python @@ -1105,15 +6025,326 @@ actions: with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.server.get_my_plex_account() + res = plex_api.provider.refresh_providers() + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/media/providers/{provider}"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.provider.delete_media_provider(request={ + "provider": "", + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/media/subscriptions"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.subscriptions.get_all_subscriptions(request=operations.GetAllSubscriptionsRequest( + include_grabs=components.BoolInt.ONE, + include_storage=components.BoolInt.ONE, + )) + + assert res.media_container_with_subscription is not None + + # Handle response + print(res.media_container_with_subscription) + - target: $["paths"]["/media/subscriptions"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.subscriptions.create_subscription(request={ + "target_library_section_id": 1, + "target_section_location_id": 3, + "type": 2, + "hints": {}, + "prefs": {}, + "params": {}, + }) assert res.object is not None # Handle response print(res.object) + - target: $["paths"]["/media/subscriptions/process"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + + + with PlexAPI( + token="", + ) as plex_api: + + res = plex_api.subscriptions.process_subscriptions() + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/media/subscriptions/scheduled"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + + + with PlexAPI( + token="", + ) as plex_api: + + res = plex_api.subscriptions.get_scheduled_recordings() + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/media/subscriptions/template"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.subscriptions.get_template(request={ + "guid": "plex://episode/5fc70265c40548002d539d23", + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/media/subscriptions/{subscriptionId}"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.subscriptions.delete_subscription(request={ + "subscription_id": 974618, + }) + + assert res is not None + + # Handle response + print(res) + - target: $["paths"]["/media/subscriptions/{subscriptionId}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.subscriptions.get_subscription(request=operations.GetSubscriptionRequest( + subscription_id=186713, + include_grabs=components.BoolInt.ONE, + include_storage=components.BoolInt.ONE, + )) + + assert res.media_container_with_subscription is not None + + # Handle response + print(res.media_container_with_subscription) + - target: $["paths"]["/media/subscriptions/{subscriptionId}"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.subscriptions.edit_subscription_preferences(request={ + "subscription_id": 673918, + "prefs": {}, + }) + + assert res.media_container_with_subscription is not None + + # Handle response + print(res.media_container_with_subscription) + - target: $["paths"]["/media/subscriptions/{subscriptionId}/move"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.subscriptions.reorder_subscription(request={ + "subscription_id": 440634, + }) + + assert res.media_container_with_subscription is not None + + # Handle response + print(res.media_container_with_subscription) - target: $["paths"]["/photo/:/transcode"]["get"] update: x-codeSamples: @@ -1121,73 +6352,345 @@ actions: label: PlexPy source: |- from plex_api_client import PlexAPI - from plex_api_client.models import operations + from plex_api_client.models import components, operations with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.server.get_resized_photo(request={ - "width": 110, - "height": 165, - "blur": 0, - "min_size": operations.MinSize.ZERO, - "upscale": operations.Upscale.ZERO, - "url": "/library/metadata/49564/thumb/1654258204", - }) + res = plex_api.transcoder.transcode_image(request=operations.TranscodeImageRequest( + url="/library/metadata/265/thumb/1715112705", + background="#ff5522", + upscale=components.BoolInt.ONE, + min_size=components.BoolInt.ONE, + rotate=components.BoolInt.ONE, + blend_color="#ff5522", + )) - assert res is not None + assert res.two_hundred_image_jpeg_response_stream is not None # Handle response - print(res) - - target: $["paths"]["/pins"]["post"] + print(res.two_hundred_image_jpeg_response_stream) + - target: $["paths"]["/playQueues"]["post"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components, operations - with PlexAPI() as plex_api: + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: - res = plex_api.plex.get_pin(request={ - "client_id": "3381b62b-9ab7-4e37-827b-203e9809eb58", - "client_name": "Plex for Roku", - "device_nickname": "Roku 3", - "client_version": "2.4.1", - "platform": "Roku", - }) + res = plex_api.play_queue.create_play_queue(request=operations.CreatePlayQueueRequest( + type=operations.Type.AUDIO, + shuffle=components.BoolInt.ONE, + repeat=components.BoolInt.ONE, + continuous=components.BoolInt.ONE, + recursive=components.BoolInt.ONE, + on_deck=components.BoolInt.ONE, + )) - assert res.auth_pin_container is not None + assert res.object is not None # Handle response - print(res.auth_pin_container) - - target: $["paths"]["/pins/{pinID}"]["get"] + print(res.object) + - target: $["paths"]["/playQueues/{playQueueId}"]["get"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components, operations - with PlexAPI() as plex_api: + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: - res = plex_api.plex.get_token_by_pin_id(request={ - "pin_id": 232248, - "client_id": "3381b62b-9ab7-4e37-827b-203e9809eb58", - "client_name": "Plex for Roku", - "device_nickname": "Roku 3", - "client_version": "2.4.1", - "platform": "Roku", - }) + res = plex_api.play_queue.get_play_queue(request=operations.GetPlayQueueRequest( + play_queue_id=210646, + own=components.BoolInt.ONE, + include_before=components.BoolInt.ONE, + include_after=components.BoolInt.ONE, + )) - assert res.auth_pin_container is not None + assert res.media_container_with_playlist_metadata is not None # Handle response - print(res.auth_pin_container) + print(res.media_container_with_playlist_metadata) + - target: $["paths"]["/playQueues/{playQueueId}"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.play_queue.add_to_play_queue(request={ + "play_queue_id": 919248, + "next": components.BoolInt.ONE, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + - target: $["paths"]["/playQueues/{playQueueId}/items"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.play_queue.clear_play_queue(request={ + "play_queue_id": 86357, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + - target: $["paths"]["/playQueues/{playQueueId}/items/{playQueueItemId}"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.play_queue.delete_play_queue_item(request={ + "play_queue_id": 285738, + "play_queue_item_id": 464354, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + - target: $["paths"]["/playQueues/{playQueueId}/items/{playQueueItemId}/move"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.play_queue.move_play_queue_item(request={ + "play_queue_id": 31341, + "play_queue_item_id": 495865, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + - target: $["paths"]["/playQueues/{playQueueId}/reset"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.play_queue.reset_play_queue(request={ + "play_queue_id": 581891, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + - target: $["paths"]["/playQueues/{playQueueId}/shuffle"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.play_queue.shuffle(request={ + "play_queue_id": 316150, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + - target: $["paths"]["/playQueues/{playQueueId}/unshuffle"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.play_queue.unshuffle(request={ + "play_queue_id": 484388, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) - target: $["paths"]["/playlists"]["get"] update: x-codeSamples: @@ -1195,18 +6698,30 @@ actions: label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.playlists.get_playlists() + res = plex_api.playlist.list_playlists(request={}) - assert res.object is not None + assert res.media_container_with_playlist_metadata is not None # Handle response - print(res.object) + print(res.media_container_with_playlist_metadata) - target: $["paths"]["/playlists"]["post"] update: x-codeSamples: @@ -1214,24 +6729,30 @@ actions: label: PlexPy source: |- from plex_api_client import PlexAPI - from plex_api_client.models import operations + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.playlists.create_playlist(request={ - "title": "", - "type": operations.CreatePlaylistQueryParamType.AUDIO, - "smart": operations.Smart.ONE, - "uri": "https://short-term-disconnection.name/", - }) + res = plex_api.library_playlists.create_playlist(request={}) - assert res.object is not None + assert res.media_container_with_playlist_metadata is not None # Handle response - print(res.object) + print(res.media_container_with_playlist_metadata) - target: $["paths"]["/playlists/upload"]["post"] update: x-codeSamples: @@ -1239,173 +6760,484 @@ actions: label: PlexPy source: |- from plex_api_client import PlexAPI - from plex_api_client.models import operations + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.playlists.upload_playlist(path="/home/barkley/playlist.m3u", force=operations.QueryParamForce.ONE, section_id=1) + res = plex_api.library_playlists.upload_playlist(request={ + "path": "/home/barkley/playlist.m3u", + "force": components.BoolInt.ONE, + }) assert res is not None # Handle response print(res) - - target: $["paths"]["/playlists/{playlistID}"]["delete"] + - target: $["paths"]["/playlists/{playlistId}"]["delete"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.playlists.delete_playlist(playlist_id=3432.93) + res = plex_api.library_playlists.delete_playlist(request={ + "playlist_id": 343293, + }) assert res is not None # Handle response print(res) - - target: $["paths"]["/playlists/{playlistID}"]["get"] + - target: $["paths"]["/playlists/{playlistId}"]["get"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.playlists.get_playlist(playlist_id=8419.53) + res = plex_api.playlist.get_playlist(request={ + "playlist_id": 841953, + }) - assert res.object is not None + assert res.media_container_with_playlist_metadata is not None # Handle response - print(res.object) - - target: $["paths"]["/playlists/{playlistID}"]["put"] + print(res.media_container_with_playlist_metadata) + - target: $["paths"]["/playlists/{playlistId}"]["put"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.playlists.update_playlist(playlist_id=1579.66) + res = plex_api.library_playlists.update_playlist(request={ + "playlist_id": 157966, + }) assert res is not None # Handle response print(res) - - target: $["paths"]["/playlists/{playlistID}/items"]["delete"] + - target: $["paths"]["/playlists/{playlistId}/generators"]["get"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.playlists.clear_playlist_contents(playlist_id=4137.37) + res = plex_api.library_playlists.get_playlist_generators(request={ + "playlist_id": 162342, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/playlists/{playlistId}/items"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library_playlists.clear_playlist_items(request={ + "playlist_id": 552140, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + - target: $["paths"]["/playlists/{playlistId}/items"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.playlist.get_playlist_items(request={ + "playlist_id": 118195, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + - target: $["paths"]["/playlists/{playlistId}/items"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library_playlists.add_playlist_items(request={ + "playlist_id": 533723, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + - target: $["paths"]["/playlists/{playlistId}/items/{generatorId}"]["delete"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library_playlists.delete_playlist_item(request={ + "playlist_id": 981646, + "generator_id": 194010, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + - target: $["paths"]["/playlists/{playlistId}/items/{generatorId}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library_playlists.get_playlist_generator(request={ + "playlist_id": 744880, + "generator_id": 322168, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/playlists/{playlistId}/items/{generatorId}"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library_playlists.modify_playlist_generator(request={ + "playlist_id": 972007, + "generator_id": 208334, + "item": { + "location": { + "uri": "library://82503060-0d68-4603-b594-8b071d54819e/item/%2Flibrary%2Fmetadata%2F146", + }, + "location_id": -1, + "policy": { + "scope": operations.QueryParamScope.ALL, + "unwatched": components.BoolInt.ZERO, + }, + "target": "", + "target_tag_id": 1, + "title": "Jack-Jack Attack", + "type": 42, + }, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + - target: $["paths"]["/playlists/{playlistId}/items/{generatorId}/items"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library_playlists.get_playlist_generator_items(request={ + "playlist_id": 77230, + "generator_id": 979714, + }) + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/playlists/{playlistId}/items/{generatorId}/{metadataId}/{action}"]["put"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.library_playlists.refresh_playlist(request={ + "playlist_id": 895314, + "generator_id": 629742, + "metadata_id": 724422, + "action": operations.Action.DISABLE, + }) assert res is not None # Handle response print(res) - - target: $["paths"]["/playlists/{playlistID}/items"]["get"] + - target: $["paths"]["/playlists/{playlistId}/items/{playlistItemId}/move"]["put"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI - from plex_api_client.models import operations + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.playlists.get_playlist_contents(playlist_id=5535.42, type_=operations.GetPlaylistContentsQueryParamType.TV_SHOW) + res = plex_api.library_playlists.move_playlist_item(request={ + "playlist_id": 940298, + "playlist_item_id": 375626, + }) - assert res.object is not None + assert res.media_container_with_playlist_metadata is not None # Handle response - print(res.object) - - target: $["paths"]["/playlists/{playlistID}/items"]["put"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.playlists.add_playlist_contents(playlist_id=7013.44, uri="server://12345/com.plexapp.plugins.library/library/metadata/1", play_queue_id=123) - - assert res.object is not None - - # Handle response - print(res.object) - - target: $["paths"]["/resources"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - from plex_api_client.models import operations - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.plex.get_server_resources(client_id="3381b62b-9ab7-4e37-827b-203e9809eb58", include_https=operations.IncludeHTTPS.ENABLE, include_relay=operations.IncludeRelay.ENABLE, include_i_pv6=operations.IncludeIPv6.ENABLE) - - assert res.plex_devices is not None - - # Handle response - print(res.plex_devices) - - target: $["paths"]["/search"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.search.get_search_results(query="110") - - assert res.object is not None - - # Handle response - print(res.object) + print(res.media_container_with_playlist_metadata) - target: $["paths"]["/security/resources"]["get"] update: x-codeSamples: @@ -1413,114 +7245,139 @@ actions: label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.authentication.get_source_connection_information(source="server://client-identifier") - - assert res is not None - - # Handle response - print(res) - - target: $["paths"]["/security/token"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - from plex_api_client.models import operations - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.authentication.get_transient_token(type_=operations.GetTransientTokenQueryParamType.DELEGATION, scope=operations.Scope.ALL) - - assert res is not None - - # Handle response - print(res) - - target: $["paths"]["/servers"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - - - with PlexAPI( - access_token="", - ) as plex_api: - - res = plex_api.server.get_server_list() + res = plex_api.general.get_source_connection_information(request={ + "source": "", + "refresh": components.BoolInt.ONE, + }) assert res.object is not None # Handle response print(res.object) - - target: $["paths"]["/statistics/bandwidth"]["get"] + - target: $["paths"]["/security/token"]["post"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components, operations with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.statistics.get_bandwidth_statistics(timespan=4) + res = plex_api.general.get_transient_token(request={ + "type": operations.QueryParamType.DELEGATION, + "scope": operations.Scope.ALL, + }) assert res.object is not None # Handle response print(res.object) - - target: $["paths"]["/statistics/media"]["get"] + - target: $["paths"]["/services/ultrablur/colors"]["get"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.statistics.get_statistics(timespan=4) + res = plex_api.ultra_blur.get_colors(request={ + "url": "/library/metadata/217745/art/1718931408", + }) assert res.object is not None # Handle response print(res.object) - - target: $["paths"]["/statistics/resources"]["get"] + - target: $["paths"]["/services/ultrablur/image"]["get"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.statistics.get_resources_statistics(timespan=4) + res = plex_api.ultra_blur.get_image(request={ + "top_left": "3f280a", + "top_right": "6b4713", + "bottom_right": "0f2a43", + "bottom_left": "1c425d", + "width": 1920, + "height": 1080, + "noise": components.BoolInt.ONE, + }) - assert res.object is not None + assert res.response_stream is not None # Handle response - print(res.object) + print(res.response_stream) - target: $["paths"]["/status/sessions"]["get"] update: x-codeSamples: @@ -1531,10 +7388,29 @@ actions: with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.sessions.get_sessions() + res = plex_api.status.list_sessions() + + assert res.object is not None + + # Handle response + print(res.object) + - target: $["paths"]["/status/sessions/background"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + + + with PlexAPI( + token="", + ) as plex_api: + + res = plex_api.status.get_background_tasks() assert res.object is not None @@ -1547,51 +7423,151 @@ actions: label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.sessions.get_session_history(sort="viewedAt:desc", account_id=1, filter_={}, library_section_id=12) + res = plex_api.status.list_playback_history(request={ + "sort": [ + "v", + "i", + "e", + "w", + "e", + "d", + "A", + "t", + ":", + "d", + "e", + "s", + "c", + ",", + "a", + "c", + "c", + "o", + "u", + "n", + "t", + "I", + "D", + ], + }) assert res.object is not None # Handle response print(res.object) - - target: $["paths"]["/transcode/sessions"]["get"] + - target: $["paths"]["/status/sessions/history/{historyId}"]["delete"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.sessions.get_transcode_sessions() + res = plex_api.status.delete_history(request={ + "history_id": 953579, + }) - assert res.object is not None + assert res.media_container is not None # Handle response - print(res.object) - - target: $["paths"]["/transcode/sessions/{sessionKey}"]["delete"] + print(res.media_container) + - target: $["paths"]["/status/sessions/history/{historyId}"]["get"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.sessions.stop_transcode_session(session_key="zz7llzqlx8w9vnrsbnwhbmep") + res = plex_api.status.get_history_item(request={ + "history_id": 832213, + }) + + assert res.history_all_get_responses_200 is not None + + # Handle response + print(res.history_all_get_responses_200) + - target: $["paths"]["/status/sessions/terminate"]["post"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.status.terminate_session(request={ + "session_id": "cdefghijklmnopqrstuvwxyz", + "reason": "Stop Playing", + }) assert res is not None @@ -1604,14 +7580,28 @@ actions: label: PlexPy source: |- from plex_api_client import PlexAPI - from plex_api_client.models import operations + from plex_api_client.models import components, operations with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.updater.apply_updates(tonight=operations.Tonight.ONE, skip=operations.Skip.ONE) + res = plex_api.updater.apply_updates(request=operations.ApplyUpdatesRequest( + tonight=components.BoolInt.ONE, + skip=components.BoolInt.ONE, + )) assert res is not None @@ -1624,14 +7614,27 @@ actions: label: PlexPy source: |- from plex_api_client import PlexAPI - from plex_api_client.models import operations + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.updater.check_for_updates(download=operations.Download.ONE) + res = plex_api.updater.check_updates(request={ + "download": components.BoolInt.ONE, + }) assert res is not None @@ -1647,126 +7650,226 @@ actions: with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.updater.get_update_status() + res = plex_api.updater.get_updates_status() assert res.object is not None # Handle response print(res.object) - - target: $["paths"]["/user"]["get"] + - target: $["paths"]["/{transcodeType}/:/transcode/universal/decision"]["get"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components, operations with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.authentication.get_token_details() + res = plex_api.transcoder.make_decision(request=operations.MakeDecisionRequest( + transcode_type=components.TranscodeType.MUSIC, + advanced_subtitles=components.AdvancedSubtitles.BURN, + audio_boost=50, + audio_channel_count=5, + auto_adjust_quality=components.BoolInt.ONE, + auto_adjust_subtitle=components.BoolInt.ONE, + direct_play=components.BoolInt.ONE, + direct_stream=components.BoolInt.ONE, + direct_stream_audio=components.BoolInt.ONE, + disable_resolution_rotation=components.BoolInt.ONE, + has_mde=components.BoolInt.ONE, + location=operations.Location.WAN, + media_buffer_size=102400, + media_index=0, + music_bitrate=5000, + offset=90.5, + part_index=0, + path="/library/metadata/151671", + peak_bitrate=12000, + photo_resolution="1080x1080", + protocol=operations.Protocol.DASH, + seconds_per_segment=5, + subtitle_size=50, + video_bitrate=12000, + video_quality=50, + video_resolution="1080x1080", + x_plex_client_profile_extra="add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + x_plex_client_profile_name="generic", + )) - assert res.user_plex_account is not None + assert res.media_container_with_decision is not None # Handle response - print(res.user_plex_account) - - target: $["paths"]["/users"]["get"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - - - with PlexAPI() as plex_api: - - res = plex_api.users.get_users(request={ - "client_id": "3381b62b-9ab7-4e37-827b-203e9809eb58", - "client_name": "Plex for Roku", - "device_nickname": "Roku 3", - "device_name": "Chrome", - "device_screen_resolution": "1487x1165,2560x1440", - "client_version": "2.4.1", - "platform": "Roku", - "client_features": "external-media,indirect-media,hub-style-list", - "model": "4200X", - "x_plex_session_id": "97e136ef-4ddd-4ff3-89a7-a5820c96c2ca", - "x_plex_language": "en", - "platform_version": "4.3 build 1057", - "x_plex_token": "CV5xoxjTpFKUzBTShsaf", - }) - - assert res.body is not None - - # Handle response - print(res.body) - - target: $["paths"]["/users/signin"]["post"] - update: - x-codeSamples: - - lang: python - label: PlexPy - source: |- - from plex_api_client import PlexAPI - - - with PlexAPI() as plex_api: - - res = plex_api.authentication.post_users_sign_in_data(request={ - "client_id": "3381b62b-9ab7-4e37-827b-203e9809eb58", - "client_name": "Plex for Roku", - "device_nickname": "Roku 3", - "client_version": "2.4.1", - "platform": "Roku", - "request_body": { - "login": "username@email.com", - "password": "password123", - "verification_code": "123456", - }, - }) - - assert res.user_plex_account is not None - - # Handle response - print(res.user_plex_account) - - target: $["paths"]["/video/:/transcode/universal/start.mpd"]["get"] + print(res.media_container_with_decision) + - target: $["paths"]["/{transcodeType}/:/transcode/universal/fallback"]["post"] update: x-codeSamples: - lang: python label: PlexPy source: |- from plex_api_client import PlexAPI + from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.video.start_universal_transcode(request={ - "has_mde": 1, - "path": "/library/metadata/23409", - "media_index": 0, - "part_index": 0, - "protocol": "hls", - "fast_seek": 0, - "direct_play": 0, - "direct_stream": 0, - "subtitle_size": 100, - "subtites": "burn", - "audio_boost": 100, - "location": "lan", - "media_buffer_size": 102400, - "session": "zvcage8b7rkioqcm8f4uns4c", - "add_debug_overlay": 0, - "auto_adjust_quality": 0, + res = plex_api.transcoder.trigger_fallback(request={ + "transcode_type": components.TranscodeType.AUDIO, }) assert res is not None + # Handle response + print(res) + - target: $["paths"]["/{transcodeType}/:/transcode/universal/start.{extension}"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.transcoder.start_transcode_session(request=operations.StartTranscodeSessionRequest( + transcode_type=components.TranscodeType.MUSIC, + extension=operations.Extension.MPD, + advanced_subtitles=components.AdvancedSubtitles.BURN, + audio_boost=50, + audio_channel_count=5, + auto_adjust_quality=components.BoolInt.ONE, + auto_adjust_subtitle=components.BoolInt.ONE, + direct_play=components.BoolInt.ONE, + direct_stream=components.BoolInt.ONE, + direct_stream_audio=components.BoolInt.ONE, + disable_resolution_rotation=components.BoolInt.ONE, + has_mde=components.BoolInt.ONE, + location=operations.StartTranscodeSessionQueryParamLocation.WAN, + media_buffer_size=102400, + media_index=0, + music_bitrate=5000, + offset=90.5, + part_index=0, + path="/library/metadata/151671", + peak_bitrate=12000, + photo_resolution="1080x1080", + protocol=operations.StartTranscodeSessionQueryParamProtocol.DASH, + seconds_per_segment=5, + subtitle_size=50, + video_bitrate=12000, + video_quality=50, + video_resolution="1080x1080", + x_plex_client_profile_extra="add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + x_plex_client_profile_name="generic", + )) + + assert res.response_stream is not None + + # Handle response + print(res.response_stream) + - target: $["paths"]["/{transcodeType}/:/transcode/universal/subtitles"]["get"] + update: + x-codeSamples: + - lang: python + label: PlexPy + source: |- + from plex_api_client import PlexAPI + from plex_api_client.models import components, operations + + + with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", + ) as plex_api: + + res = plex_api.transcoder.transcode_subtitles(request=operations.TranscodeSubtitlesRequest( + transcode_type=components.TranscodeType.AUDIO, + advanced_subtitles=components.AdvancedSubtitles.BURN, + audio_boost=50, + audio_channel_count=5, + auto_adjust_quality=components.BoolInt.ONE, + auto_adjust_subtitle=components.BoolInt.ONE, + direct_play=components.BoolInt.ONE, + direct_stream=components.BoolInt.ONE, + direct_stream_audio=components.BoolInt.ONE, + disable_resolution_rotation=components.BoolInt.ONE, + has_mde=components.BoolInt.ONE, + location=operations.QueryParamLocation.WAN, + media_buffer_size=102400, + media_index=0, + music_bitrate=5000, + offset=90.5, + part_index=0, + path="/library/metadata/151671", + peak_bitrate=12000, + photo_resolution="1080x1080", + protocol=operations.QueryParamProtocol.DASH, + seconds_per_segment=5, + subtitle_size=50, + video_bitrate=12000, + video_quality=50, + video_resolution="1080x1080", + x_plex_client_profile_extra="add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + x_plex_client_profile_name="generic", + )) + + assert res is not None + # Handle response print(res) diff --git a/docs/models/components/accepts.md b/docs/models/components/accepts.md new file mode 100644 index 0000000..7907767 --- /dev/null +++ b/docs/models/components/accepts.md @@ -0,0 +1,9 @@ +# Accepts + + +## Values + +| Name | Value | +| ------------------ | ------------------ | +| `APPLICATION_JSON` | application/json | +| `APPLICATION_XML` | application/xml | \ No newline at end of file diff --git a/docs/models/components/advancedsubtitles.md b/docs/models/components/advancedsubtitles.md new file mode 100644 index 0000000..a89aab3 --- /dev/null +++ b/docs/models/components/advancedsubtitles.md @@ -0,0 +1,10 @@ +# AdvancedSubtitles + + +## Values + +| Name | Value | +| --------- | --------- | +| `BURN` | burn | +| `TEXT` | text | +| `UNKNOWN` | unknown | \ No newline at end of file diff --git a/docs/models/components/airingstype.md b/docs/models/components/airingstype.md new file mode 100644 index 0000000..cf402be --- /dev/null +++ b/docs/models/components/airingstype.md @@ -0,0 +1,9 @@ +# AiringsType + + +## Values + +| Name | Value | +| ------------------------ | ------------------------ | +| `NEW_AIRINGS_ONLY` | New Airings Only | +| `NEW_AND_REPEAT_AIRINGS` | New and Repeat Airings | \ No newline at end of file diff --git a/docs/models/components/boolint.md b/docs/models/components/boolint.md new file mode 100644 index 0000000..46f2b33 --- /dev/null +++ b/docs/models/components/boolint.md @@ -0,0 +1,9 @@ +# BoolInt + + +## Values + +| Name | Value | +| ------ | ------ | +| `ZERO` | 0 | +| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/components/channel.md b/docs/models/components/channel.md new file mode 100644 index 0000000..f8c1ef9 --- /dev/null +++ b/docs/models/components/channel.md @@ -0,0 +1,15 @@ +# Channel + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `call_sign` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `channel_vcn` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `hd` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/channelmapping.md b/docs/models/components/channelmapping.md new file mode 100644 index 0000000..079bbdb --- /dev/null +++ b/docs/models/components/channelmapping.md @@ -0,0 +1,11 @@ +# ChannelMapping + + +## Fields + +| Field | Type | Required | Description | +| ------------------- | ------------------- | ------------------- | ------------------- | +| `channel_key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `device_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `enabled` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `lineup_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/composite.md b/docs/models/components/composite.md new file mode 100644 index 0000000..5e76c72 --- /dev/null +++ b/docs/models/components/composite.md @@ -0,0 +1,18 @@ +# Composite + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `type` | *Optional[int]* | :heavy_minus_sign: | Limit composite to specified metadata types | +| `format_` | [Optional[components.Format]](../../models/components/format_.md) | :heavy_minus_sign: | The image type | +| `background_color` | *Optional[str]* | :heavy_minus_sign: | 6 character hex RGB value for background color for image | +| `border` | *Optional[int]* | :heavy_minus_sign: | The width of the intra-image border | +| `cols` | *Optional[int]* | :heavy_minus_sign: | Number of columns to construct in the composite image | +| `crop` | [Optional[components.Crop]](../../models/components/crop.md) | :heavy_minus_sign: | Where to crop source images to fit into composite image proportions | +| `height` | *Optional[int]* | :heavy_minus_sign: | The height of the image | +| `media` | [Optional[components.CompositeMedia]](../../models/components/compositemedia.md) | :heavy_minus_sign: | The default image type to use as the sources | +| `repeat` | *Optional[bool]* | :heavy_minus_sign: | Allow repetion of images if there are not enough source images to fill grid | +| `rows` | *Optional[int]* | :heavy_minus_sign: | Number of rows to construct in the composite image | +| `width` | *Optional[int]* | :heavy_minus_sign: | The width of the image | \ No newline at end of file diff --git a/docs/models/components/compositemedia.md b/docs/models/components/compositemedia.md new file mode 100644 index 0000000..b0f4601 --- /dev/null +++ b/docs/models/components/compositemedia.md @@ -0,0 +1,12 @@ +# CompositeMedia + +The default image type to use as the sources + + +## Values + +| Name | Value | +| -------- | -------- | +| `THUMB` | thumb | +| `ART` | art | +| `BANNER` | banner | \ No newline at end of file diff --git a/docs/models/components/crop.md b/docs/models/components/crop.md new file mode 100644 index 0000000..c28b6f4 --- /dev/null +++ b/docs/models/components/crop.md @@ -0,0 +1,11 @@ +# Crop + +Where to crop source images to fit into composite image proportions + + +## Values + +| Name | Value | +| -------- | -------- | +| `CENTER` | center | +| `TOP` | top | \ No newline at end of file diff --git a/docs/models/components/decision.md b/docs/models/components/decision.md new file mode 100644 index 0000000..89f3125 --- /dev/null +++ b/docs/models/components/decision.md @@ -0,0 +1,10 @@ +# Decision + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `DIRECTPLAY` | directplay | +| `TRANSCODE` | transcode | +| `NONE` | none | \ No newline at end of file diff --git a/docs/models/components/default.md b/docs/models/components/default.md new file mode 100644 index 0000000..453e637 --- /dev/null +++ b/docs/models/components/default.md @@ -0,0 +1,25 @@ +# Default + +The default value of this setting + + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `float` + +```python +value: float = /* values here */ +``` + +### `bool` + +```python +value: bool = /* values here */ +``` + diff --git a/docs/models/components/defaultdirection.md b/docs/models/components/defaultdirection.md new file mode 100644 index 0000000..102359f --- /dev/null +++ b/docs/models/components/defaultdirection.md @@ -0,0 +1,11 @@ +# DefaultDirection + +This default diction of this sort + + +## Values + +| Name | Value | +| ------ | ------ | +| `ASC` | asc | +| `DESC` | desc | \ No newline at end of file diff --git a/docs/models/components/device.md b/docs/models/components/device.md new file mode 100644 index 0000000..9581332 --- /dev/null +++ b/docs/models/components/device.md @@ -0,0 +1,20 @@ +# Device + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `channel_mapping` | List[[components.ChannelMapping](../../models/components/channelmapping.md)] | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `last_seen_at` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `make` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `model` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `model_number` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `protocol` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `sources` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `state` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `status` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `tuners` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uri` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/directory.md b/docs/models/components/directory.md new file mode 100644 index 0000000..9b6e04c --- /dev/null +++ b/docs/models/components/directory.md @@ -0,0 +1,23 @@ +# Directory + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `content` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `filter_` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `has_prefs` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `has_store_services` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `hub_key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `last_accessed_at` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `pivot` | List[[components.Pivot](../../models/components/pivot.md)] | :heavy_minus_sign: | N/A | +| `share` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `title_bar` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/dvr.md b/docs/models/components/dvr.md new file mode 100644 index 0000000..819b455 --- /dev/null +++ b/docs/models/components/dvr.md @@ -0,0 +1,12 @@ +# Dvr + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `device` | List[[components.Device](../../models/components/device.md)] | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `lineup` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/dvrrequesthandlerslashgetresponses200.md b/docs/models/components/dvrrequesthandlerslashgetresponses200.md new file mode 100644 index 0000000..62f6e9b --- /dev/null +++ b/docs/models/components/dvrrequesthandlerslashgetresponses200.md @@ -0,0 +1,10 @@ +# DvrRequestHandlerSlashGetResponses200 + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[components.DvrRequestHandlerSlashGetResponses200MediaContainer]](../../models/components/dvrrequesthandlerslashgetresponses200mediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/dvrrequesthandlerslashgetresponses200mediacontainer.md b/docs/models/components/dvrrequesthandlerslashgetresponses200mediacontainer.md new file mode 100644 index 0000000..a1b5888 --- /dev/null +++ b/docs/models/components/dvrrequesthandlerslashgetresponses200mediacontainer.md @@ -0,0 +1,9 @@ +# DvrRequestHandlerSlashGetResponses200MediaContainer + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[components.DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer]](../../models/components/dvrrequesthandlerslashgetresponses200mediacontainermediacontainer.md) | :heavy_minus_sign: | N/A | +| `dvr` | List[[components.Dvr](../../models/components/dvr.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/dvrrequesthandlerslashgetresponses200mediacontainermediacontainer.md b/docs/models/components/dvrrequesthandlerslashgetresponses200mediacontainermediacontainer.md new file mode 100644 index 0000000..577b930 --- /dev/null +++ b/docs/models/components/dvrrequesthandlerslashgetresponses200mediacontainermediacontainer.md @@ -0,0 +1,17 @@ +# DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `status` | *Optional[int]* | :heavy_minus_sign: | A status indicator. If present and non-zero, indicates an error | \ No newline at end of file diff --git a/docs/models/components/filter_.md b/docs/models/components/filter_.md new file mode 100644 index 0000000..4a7f24a --- /dev/null +++ b/docs/models/components/filter_.md @@ -0,0 +1,27 @@ +# Filter + +Each `Filter` object contains a description of the filter. Note that it is not an exhaustive list of the full media query language, but an important subset useful for top-level API. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `title` | *Optional[str]* | :heavy_minus_sign: | The title for the filter. | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `content` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `filter_` | *Optional[str]* | :heavy_minus_sign: | This represents the filter name used for the filter, which can be used to construct complex media queries with. | +| `has_prefs` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `has_store_services` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `hub_key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | This provides the endpoint where the possible range of values for the filter can be retrieved (e.g. for a "Genre" filter, it returns a list of all the genres in the library). This will include a `type` argument that matches the metadata type of the Type element. | +| `last_accessed_at` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `pivot` | List[[components.FilterPivot](../../models/components/filterpivot.md)] | :heavy_minus_sign: | N/A | +| `share` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `title_bar` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `filter_type` | *Optional[str]* | :heavy_minus_sign: | This is either `string`, `integer`, or `boolean`, and describes the type of values used for the filter. | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/filterpivot.md b/docs/models/components/filterpivot.md new file mode 100644 index 0000000..f097c6f --- /dev/null +++ b/docs/models/components/filterpivot.md @@ -0,0 +1,13 @@ +# FilterPivot + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `context` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `symbol` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/format_.md b/docs/models/components/format_.md new file mode 100644 index 0000000..d6cedc5 --- /dev/null +++ b/docs/models/components/format_.md @@ -0,0 +1,11 @@ +# Format + +The image type + + +## Values + +| Name | Value | +| ----- | ----- | +| `JPG` | jpg | +| `PNG` | png | \ No newline at end of file diff --git a/docs/models/components/getresponses200.md b/docs/models/components/getresponses200.md new file mode 100644 index 0000000..f9e73ef --- /dev/null +++ b/docs/models/components/getresponses200.md @@ -0,0 +1,10 @@ +# GetResponses200 + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[components.GetResponses200MediaContainer]](../../models/components/getresponses200mediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/getresponses200hub.md b/docs/models/components/getresponses200hub.md new file mode 100644 index 0000000..44443ad --- /dev/null +++ b/docs/models/components/getresponses200hub.md @@ -0,0 +1,14 @@ +# GetResponses200Hub + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `home_visibility` | [Optional[components.HomeVisibility]](../../models/components/homevisibility.md) | :heavy_minus_sign: | Whether this hub is visible on the home screen
- all: Visible to all users
- none: Visible to no users
- admin: Visible to only admin users
- shared: Visible to shared users
| +| `identifier` | *Optional[str]* | :heavy_minus_sign: | The identifier for this hub | +| `promoted_to_own_home` | *Optional[bool]* | :heavy_minus_sign: | Whether this hub is visible to admin user home | +| `promoted_to_recommended` | *Optional[bool]* | :heavy_minus_sign: | Whether this hub is promoted to all for recommendations | +| `promoted_to_shared_home` | *Optional[bool]* | :heavy_minus_sign: | Whether this hub is visible to shared user's home | +| `recommendations_visibility` | [Optional[components.RecommendationsVisibility]](../../models/components/recommendationsvisibility.md) | :heavy_minus_sign: | The visibility of this hub in recommendations:
- all: Visible to all users
- none: Visible to no users
- admin: Visible to only admin users
- shared: Visible to shared users
| +| `title` | *Optional[str]* | :heavy_minus_sign: | The title of this hub | \ No newline at end of file diff --git a/docs/models/components/getresponses200mediacontainer.md b/docs/models/components/getresponses200mediacontainer.md new file mode 100644 index 0000000..28c51ab --- /dev/null +++ b/docs/models/components/getresponses200mediacontainer.md @@ -0,0 +1,17 @@ +# GetResponses200MediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `hub` | List[[components.GetResponses200Hub](../../models/components/getresponses200hub.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/historyallgetresponses200.md b/docs/models/components/historyallgetresponses200.md new file mode 100644 index 0000000..1967bca --- /dev/null +++ b/docs/models/components/historyallgetresponses200.md @@ -0,0 +1,10 @@ +# HistoryAllGetResponses200 + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[components.HistoryAllGetResponses200MediaContainer]](../../models/components/historyallgetresponses200mediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/historyallgetresponses200mediacontainer.md b/docs/models/components/historyallgetresponses200mediacontainer.md new file mode 100644 index 0000000..63202c4 --- /dev/null +++ b/docs/models/components/historyallgetresponses200mediacontainer.md @@ -0,0 +1,17 @@ +# HistoryAllGetResponses200MediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `metadata` | List[[components.HistoryAllGetResponses200Metadata](../../models/components/historyallgetresponses200metadata.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/historyallgetresponses200metadata.md b/docs/models/components/historyallgetresponses200metadata.md new file mode 100644 index 0000000..28e8a8d --- /dev/null +++ b/docs/models/components/historyallgetresponses200metadata.md @@ -0,0 +1,18 @@ +# HistoryAllGetResponses200Metadata + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| `account_id` | *Optional[int]* | :heavy_minus_sign: | The account id of this playback | +| `device_id` | *Optional[int]* | :heavy_minus_sign: | The device id which played the item | +| `history_key` | *Optional[str]* | :heavy_minus_sign: | The key for this individual history item | +| `key` | *Optional[str]* | :heavy_minus_sign: | The metadata key for the item played | +| `library_section_id` | *Optional[str]* | :heavy_minus_sign: | The library section id containing the item played | +| `originally_available_at` | *Optional[str]* | :heavy_minus_sign: | The originally available at of the item played | +| `rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key for the item played | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | The thumb of the item played | +| `title` | *Optional[str]* | :heavy_minus_sign: | The title of the item played | +| `type` | *Optional[str]* | :heavy_minus_sign: | The metadata type of the item played | +| `viewed_at` | *Optional[int]* | :heavy_minus_sign: | The time when the item was played | \ No newline at end of file diff --git a/docs/models/components/homevisibility.md b/docs/models/components/homevisibility.md new file mode 100644 index 0000000..fe364cb --- /dev/null +++ b/docs/models/components/homevisibility.md @@ -0,0 +1,18 @@ +# HomeVisibility + +Whether this hub is visible on the home screen + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + + +## Values + +| Name | Value | +| -------- | -------- | +| `ALL` | all | +| `NONE` | none | +| `ADMIN` | admin | +| `SHARED` | shared | \ No newline at end of file diff --git a/docs/models/components/hub.md b/docs/models/components/hub.md new file mode 100644 index 0000000..6866282 --- /dev/null +++ b/docs/models/components/hub.md @@ -0,0 +1,22 @@ +# Hub + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `title` | *Optional[str]* | :heavy_minus_sign: | A title for this grouping of content | | +| `type` | *Optional[str]* | :heavy_minus_sign: | The type of the items contained in this hub, or possibly `mixed` if there are multiple types | track | +| `context` | *Optional[str]* | :heavy_minus_sign: | N/A | hub.home.onDeck | +| `hub_identifier` | *Optional[str]* | :heavy_minus_sign: | A unique identifier for the hub | home.onDeck | +| `hub_key` | *Optional[str]* | :heavy_minus_sign: | A key at which the exact content currently displayed can be fetched again. This is particularly important when a hub is marked as random and requesting the `key` may get different results. It's otherwise optional.
| | +| `key` | *Optional[str]* | :heavy_minus_sign: | The key at which all of the content for this hub can be retrieved | /hubs/sections/home/onDeck | +| `metadata` | List[[components.Metadata](../../models/components/metadata.md)] | :heavy_minus_sign: | N/A | | +| `more` | *Optional[bool]* | :heavy_minus_sign: | "A boolean indicating that the hub contains more than what's included in the current response."
| | +| `promoted` | *Optional[bool]* | :heavy_minus_sign: | Indicating if the hub should be promoted to the user's homescreen | | +| `random` | *Optional[bool]* | :heavy_minus_sign: | Indicating that the contents of the hub may change on each request | | +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `style` | *Optional[str]* | :heavy_minus_sign: | A suggestion on how this hub's contents might be displayed by a client. Some examples include `hero`, `list`, `spotlight`, and `upsell` | | +| `subtype` | *Optional[str]* | :heavy_minus_sign: | The subtype of the items contained in this hub, or possibly `mixed` if there are multiple types | podcast | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | N/A | 8 | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/components/image.md b/docs/models/components/image.md new file mode 100644 index 0000000..76320c0 --- /dev/null +++ b/docs/models/components/image.md @@ -0,0 +1,13 @@ +# Image + +Images such as movie posters and background artwork are represented by Image elements. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `type` | [Optional[components.ImageType]](../../models/components/imagetype.md) | :heavy_minus_sign: | Describes both the purpose and intended presentation of the image. | +| `alt` | *Optional[str]* | :heavy_minus_sign: | Title to use for accessibility. | +| `url` | *Optional[str]* | :heavy_minus_sign: | The relative path or absolute url for the image. | \ No newline at end of file diff --git a/docs/models/components/imagetype.md b/docs/models/components/imagetype.md new file mode 100644 index 0000000..e0e404f --- /dev/null +++ b/docs/models/components/imagetype.md @@ -0,0 +1,14 @@ +# ImageType + +Describes both the purpose and intended presentation of the image. + + +## Values + +| Name | Value | +| -------------- | -------------- | +| `BACKGROUND` | background | +| `BANNER` | banner | +| `CLEAR_LOGO` | clearLogo | +| `COVER_POSTER` | coverPoster | +| `SNAPSHOT` | snapshot | \ No newline at end of file diff --git a/docs/models/components/items.md b/docs/models/components/items.md new file mode 100644 index 0000000..f90f09e --- /dev/null +++ b/docs/models/components/items.md @@ -0,0 +1,83 @@ +# Items + +Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + +Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + +Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `title` | *Optional[Any]* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | +| `type` | *Optional[Any]* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | +| `absolute_index` | *Optional[int]* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | +| `added_at` | *Optional[int]* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | +| `art` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | +| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | +| `audience_rating_image` | *Optional[Any]* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | +| `autotag` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `banner` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | +| `chapter_source` | *Optional[Any]* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | +| `composite` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | +| `content_rating` | *Optional[Any]* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | +| `country` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `director` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `duration` | *Optional[int]* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | +| `filter_` | List[[components.Filter](../../models/components/filter_.md)] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `genre` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | The `art` of the grandparent | +| `grandparent_hero` | *Optional[str]* | :heavy_minus_sign: | The `hero` of the grandparent | +| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | The `key` of the grandparent | +| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The `ratingKey` of the grandparent | +| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | The `theme` of the grandparent | +| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | The `thumb` of the grandparent | +| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | The `title` of the grandparent | +| `guid` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `hero` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | +| `image` | List[[components.Image](../../models/components/image.md)] | :heavy_minus_sign: | N/A | +| `index` | *Optional[int]* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | +| `key` | *Optional[Any]* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | +| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | +| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | +| `media` | List[[components.Media](../../models/components/media.md)] | :heavy_minus_sign: | N/A | +| `originally_available_at` | *Optional[Any]* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | +| `original_title` | *Optional[Any]* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | +| `parent_hero` | *Optional[str]* | :heavy_minus_sign: | The `hero` of the parent | +| `parent_index` | *Optional[int]* | :heavy_minus_sign: | The `index` of the parent | +| `parent_key` | *Optional[str]* | :heavy_minus_sign: | The `key` of the parent | +| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The `ratingKey` of the parent | +| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | The `thumb` of the parent | +| `parent_title` | *Optional[str]* | :heavy_minus_sign: | The `title` of the parent | +| `primary_extra_key` | *Optional[Any]* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | +| `prompt` | *Optional[str]* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | +| `rating` | *Optional[float]* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | +| `rating_array` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `rating_count` | *Optional[int]* | :heavy_minus_sign: | Number of ratings under this metadata | +| `rating_image` | *Optional[Any]* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | +| `rating_key` | *Optional[Any]* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | +| `role` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `search` | *Optional[bool]* | :heavy_minus_sign: | Indicates this is a search directory | +| `secondary` | *Optional[bool]* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | +| `skip_children` | *Optional[bool]* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | +| `skip_parent` | *Optional[bool]* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | +| `sort` | List[[components.Sort](../../models/components/sort.md)] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `studio` | *Optional[Any]* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | +| `subtype` | *Optional[Any]* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | +| `summary` | *Optional[Any]* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | +| `tagline` | *Optional[Any]* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | +| `theme` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | +| `thumb` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | +| `title_sort` | *Optional[Any]* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | +| `user_rating` | *Optional[float]* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | +| `view_count` | *Optional[int]* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | +| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | +| `view_offset` | *Optional[int]* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | +| `writer` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `year` | *Optional[int]* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | +| `metadata_item` | List[[components.Items](../../models/components/items.md)] | :heavy_minus_sign: | N/A | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/librarysection.md b/docs/models/components/librarysection.md new file mode 100644 index 0000000..a7ae54f --- /dev/null +++ b/docs/models/components/librarysection.md @@ -0,0 +1,27 @@ +# LibrarySection + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `agent` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `composite` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `content` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `content_changed_at` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `created_at` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `directory` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `filters` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether this section has filtering capabilities | +| `hidden` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `location` | List[[components.LibrarySectionLocation](../../models/components/librarysectionlocation.md)] | :heavy_minus_sign: | N/A | +| `refreshing` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether this library section is currently scanning | +| `scanned_at` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `scanner` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/librarysectionlocation.md b/docs/models/components/librarysectionlocation.md new file mode 100644 index 0000000..3e07374 --- /dev/null +++ b/docs/models/components/librarysectionlocation.md @@ -0,0 +1,11 @@ +# LibrarySectionLocation + +Represents a top-level location on disk where media in this library section is stored + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `path` | *Optional[Any]* | :heavy_minus_sign: | The path of where this directory exists on disk | \ No newline at end of file diff --git a/docs/models/components/lineup.md b/docs/models/components/lineup.md new file mode 100644 index 0000000..c6652b5 --- /dev/null +++ b/docs/models/components/lineup.md @@ -0,0 +1,12 @@ +# Lineup + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | *Optional[str]* | :heavy_minus_sign: | The type of this object (`lineup` in this case) | +| `lineup_type` | [Optional[components.LineupType]](../../models/components/lineuptype.md) | :heavy_minus_sign: | - `-1`: N/A
- `0`: Over the air
- `1`: Cable
- `2`: Satellite
- `3`: IPTV
- `4`: Virtual
| +| `location` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | The uuid of this lineup | \ No newline at end of file diff --git a/docs/models/components/lineuptype.md b/docs/models/components/lineuptype.md new file mode 100644 index 0000000..279e8e0 --- /dev/null +++ b/docs/models/components/lineuptype.md @@ -0,0 +1,21 @@ +# LineupType + +- `-1`: N/A +- `0`: Over the air +- `1`: Cable +- `2`: Satellite +- `3`: IPTV +- `4`: Virtual + + + +## Values + +| Name | Value | +| --------- | --------- | +| `MINUS_1` | -1 | +| `ZERO` | 0 | +| `ONE` | 1 | +| `TWO` | 2 | +| `THREE` | 3 | +| `FOUR` | 4 | \ No newline at end of file diff --git a/docs/models/components/location.md b/docs/models/components/location.md new file mode 100644 index 0000000..49a3756 --- /dev/null +++ b/docs/models/components/location.md @@ -0,0 +1,10 @@ +# Location + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `LAN` | lan | +| `WAN` | wan | +| `CELLULAR` | cellular | \ No newline at end of file diff --git a/docs/models/components/media.md b/docs/models/components/media.md new file mode 100644 index 0000000..26902b0 --- /dev/null +++ b/docs/models/components/media.md @@ -0,0 +1,29 @@ +# Media + +`Media` represents an one or more media files (parts) and is a child of a metadata item. There aren't necessarily any guaranteed attributes on media elements since the attributes will vary based on the type. The possible attributes are not documented here, but they typically have self-evident names. High-level media information that can be used for badging and flagging, such as `videoResolution` and codecs, is included on the media element. + + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `aspect_ratio` | *Optional[float]* | :heavy_minus_sign: | N/A | 2.35 | +| `audio_channels` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | +| `audio_codec` | *Optional[Any]* | :heavy_minus_sign: | N/A | aac | +| `audio_profile` | *Optional[Any]* | :heavy_minus_sign: | N/A | lc | +| `bitrate` | *Optional[int]* | :heavy_minus_sign: | N/A | 5612 | +| `container` | *Optional[Any]* | :heavy_minus_sign: | N/A | mov | +| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 150192 | +| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `has_voice_activity` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | +| `height` | *Optional[int]* | :heavy_minus_sign: | N/A | 544 | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `optimized_for_streaming` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `part` | List[[components.Part](../../models/components/part.md)] | :heavy_minus_sign: | N/A | | +| `video_codec` | *Optional[Any]* | :heavy_minus_sign: | N/A | h264 | +| `video_frame_rate` | *Optional[Any]* | :heavy_minus_sign: | N/A | 24p | +| `video_profile` | *Optional[Any]* | :heavy_minus_sign: | N/A | main | +| `video_resolution` | *Optional[Any]* | :heavy_minus_sign: | N/A | 720 | +| `width` | *Optional[int]* | :heavy_minus_sign: | N/A | 1280 | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/components/mediacontainer.md b/docs/models/components/mediacontainer.md new file mode 100644 index 0000000..ba12016 --- /dev/null +++ b/docs/models/components/mediacontainer.md @@ -0,0 +1,16 @@ +# MediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithartwork.md b/docs/models/components/mediacontainerwithartwork.md new file mode 100644 index 0000000..5e4450d --- /dev/null +++ b/docs/models/components/mediacontainerwithartwork.md @@ -0,0 +1,8 @@ +# MediaContainerWithArtwork + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[components.MediaContainerWithArtworkMediaContainer]](../../models/components/mediacontainerwithartworkmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithartworkmediacontainer.md b/docs/models/components/mediacontainerwithartworkmediacontainer.md new file mode 100644 index 0000000..c012a1a --- /dev/null +++ b/docs/models/components/mediacontainerwithartworkmediacontainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithArtworkMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `metadata` | List[[components.MediaContainerWithArtworkMetadata](../../models/components/mediacontainerwithartworkmetadata.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithartworkmetadata.md b/docs/models/components/mediacontainerwithartworkmetadata.md new file mode 100644 index 0000000..8468f60 --- /dev/null +++ b/docs/models/components/mediacontainerwithartworkmetadata.md @@ -0,0 +1,11 @@ +# MediaContainerWithArtworkMetadata + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `title` | *Optional[str]* | :heavy_minus_sign: | The title of the item | +| `type` | [Optional[components.MediaContainerWithArtworkType]](../../models/components/mediacontainerwithartworktype.md) | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | The path to the artwork | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithartworktype.md b/docs/models/components/mediacontainerwithartworktype.md new file mode 100644 index 0000000..e0d1bad --- /dev/null +++ b/docs/models/components/mediacontainerwithartworktype.md @@ -0,0 +1,8 @@ +# MediaContainerWithArtworkType + + +## Values + +| Name | Value | +| ------- | ------- | +| `IMAGE` | image | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithdecision.md b/docs/models/components/mediacontainerwithdecision.md new file mode 100644 index 0000000..3559867 --- /dev/null +++ b/docs/models/components/mediacontainerwithdecision.md @@ -0,0 +1,13 @@ +# MediaContainerWithDecision + +`MediaContainer` is commonly found as the root of a response and is a pretty generic container. Common attributes include `identifier` and things related to paging (`offset`, `size`, `totalSize`). + +It is also common for a `MediaContainer` to contain attributes "hoisted" from its children. If every element in the container would have had the same attribute, then that attribute can be present on the container instead of being repeated on every element. For example, an album's list of tracks might include `parentTitle` on the container since all of the tracks have the same album title. A container may have a `source` attribute when all of the items came from the same source. Generally speaking, when looking for an attribute on an item, if the attribute wasn't found then the container should be checked for that attribute as well. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[components.MediaContainerWithDecisionMediaContainer]](../../models/components/mediacontainerwithdecisionmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithdecisiondecision.md b/docs/models/components/mediacontainerwithdecisiondecision.md new file mode 100644 index 0000000..b081105 --- /dev/null +++ b/docs/models/components/mediacontainerwithdecisiondecision.md @@ -0,0 +1,13 @@ +# MediaContainerWithDecisionDecision + + +## Values + +| Name | Value | +| ------------- | ------------- | +| `COPY` | copy | +| `TRANSCODE` | transcode | +| `BURN` | burn | +| `UNAVAILABLE` | unavailable | +| `IGNORE` | ignore | +| `NONE` | none | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithdecisionlocation.md b/docs/models/components/mediacontainerwithdecisionlocation.md new file mode 100644 index 0000000..bed6097 --- /dev/null +++ b/docs/models/components/mediacontainerwithdecisionlocation.md @@ -0,0 +1,15 @@ +# MediaContainerWithDecisionLocation + + +## Values + +| Name | Value | +| ---------------- | ---------------- | +| `DIRECT` | direct | +| `SIDECAR_SUBS` | sidecar-subs | +| `SEGMENTS_VIDEO` | segments-video | +| `SEGMENTS_AUDIO` | segments-audio | +| `SEGMENTS_AV` | segments-av | +| `SEGMENTS_SUBS` | segments-subs | +| `EMBEDDED` | embedded | +| `SIDECAR` | sidecar | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithdecisionmedia.md b/docs/models/components/mediacontainerwithdecisionmedia.md new file mode 100644 index 0000000..dddfd98 --- /dev/null +++ b/docs/models/components/mediacontainerwithdecisionmedia.md @@ -0,0 +1,32 @@ +# MediaContainerWithDecisionMedia + +`Media` represents an one or more media files (parts) and is a child of a metadata item. There aren't necessarily any guaranteed attributes on media elements since the attributes will vary based on the type. The possible attributes are not documented here, but they typically have self-evident names. High-level media information that can be used for badging and flagging, such as `videoResolution` and codecs, is included on the media element. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `aspect_ratio` | *Optional[float]* | :heavy_minus_sign: | N/A | 2.35 | +| `audio_channels` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | +| `audio_codec` | *Optional[Any]* | :heavy_minus_sign: | N/A | aac | +| `audio_profile` | *Optional[Any]* | :heavy_minus_sign: | N/A | lc | +| `bitrate` | *Optional[int]* | :heavy_minus_sign: | N/A | 5612 | +| `container` | *Optional[Any]* | :heavy_minus_sign: | N/A | mov | +| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 150192 | +| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `has_voice_activity` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | +| `height` | *Optional[int]* | :heavy_minus_sign: | N/A | 544 | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `optimized_for_streaming` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `part` | List[[components.MediaContainerWithDecisionPart](../../models/components/mediacontainerwithdecisionpart.md)] | :heavy_minus_sign: | N/A | | +| `video_codec` | *Optional[Any]* | :heavy_minus_sign: | N/A | h264 | +| `video_frame_rate` | *Optional[Any]* | :heavy_minus_sign: | N/A | 24p | +| `video_profile` | *Optional[Any]* | :heavy_minus_sign: | N/A | main | +| `video_resolution` | *Optional[Any]* | :heavy_minus_sign: | N/A | 720 | +| `width` | *Optional[int]* | :heavy_minus_sign: | N/A | 1280 | +| `abr` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `resource_session` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `selected` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithdecisionmediacontainer.md b/docs/models/components/mediacontainerwithdecisionmediacontainer.md new file mode 100644 index 0000000..b66f844 --- /dev/null +++ b/docs/models/components/mediacontainerwithdecisionmediacontainer.md @@ -0,0 +1,26 @@ +# MediaContainerWithDecisionMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `available_bandwidth` | *Optional[int]* | :heavy_minus_sign: | The maximum available bitrate when the decision was rendered. | +| `direct_play_decision_code` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `direct_play_decision_text` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `general_decision_code` | *Optional[int]* | :heavy_minus_sign: | The overall decision. 1xxx are playback can succeed, 2xxx are a general error (such as insufficient bandwidth), 3xxx are errors in direct play, and 4xxx are errors in transcodes. Same codes are used in all. | +| `general_decision_text` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `mde_decision_code` | *Optional[int]* | :heavy_minus_sign: | The code indicating the status of evaluation of playback when client indicates `hasMDE=1` | +| `mde_decision_text` | *Optional[str]* | :heavy_minus_sign: | Descriptive text for the above code | +| `metadata` | List[[components.MediaContainerWithDecisionMetadata](../../models/components/mediacontainerwithdecisionmetadata.md)] | :heavy_minus_sign: | N/A | +| `transcode_decision_code` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `transcode_decision_text` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithdecisionmetadata.md b/docs/models/components/mediacontainerwithdecisionmetadata.md new file mode 100644 index 0000000..e6d4d98 --- /dev/null +++ b/docs/models/components/mediacontainerwithdecisionmetadata.md @@ -0,0 +1,82 @@ +# MediaContainerWithDecisionMetadata + +Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + +Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + +Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `title` | *Optional[Any]* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | +| `type` | *Optional[Any]* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | +| `absolute_index` | *Optional[int]* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | +| `added_at` | *Optional[int]* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | +| `art` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | +| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | +| `audience_rating_image` | *Optional[Any]* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | +| `autotag` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `banner` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | +| `chapter_source` | *Optional[Any]* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | +| `composite` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | +| `content_rating` | *Optional[Any]* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | +| `country` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `director` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `duration` | *Optional[int]* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | +| `filter_` | List[[components.Filter](../../models/components/filter_.md)] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `genre` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | The `art` of the grandparent | +| `grandparent_hero` | *Optional[str]* | :heavy_minus_sign: | The `hero` of the grandparent | +| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | The `key` of the grandparent | +| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The `ratingKey` of the grandparent | +| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | The `theme` of the grandparent | +| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | The `thumb` of the grandparent | +| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | The `title` of the grandparent | +| `guid` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `hero` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | +| `image` | List[[components.Image](../../models/components/image.md)] | :heavy_minus_sign: | N/A | +| `index` | *Optional[int]* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | +| `key` | *Optional[Any]* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | +| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | +| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | +| `media` | List[[components.MediaContainerWithDecisionMedia](../../models/components/mediacontainerwithdecisionmedia.md)] | :heavy_minus_sign: | N/A | +| `originally_available_at` | *Optional[Any]* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | +| `original_title` | *Optional[Any]* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | +| `parent_hero` | *Optional[str]* | :heavy_minus_sign: | The `hero` of the parent | +| `parent_index` | *Optional[int]* | :heavy_minus_sign: | The `index` of the parent | +| `parent_key` | *Optional[str]* | :heavy_minus_sign: | The `key` of the parent | +| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The `ratingKey` of the parent | +| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | The `thumb` of the parent | +| `parent_title` | *Optional[str]* | :heavy_minus_sign: | The `title` of the parent | +| `primary_extra_key` | *Optional[Any]* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | +| `prompt` | *Optional[str]* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | +| `rating` | *Optional[float]* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | +| `rating_array` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `rating_count` | *Optional[int]* | :heavy_minus_sign: | Number of ratings under this metadata | +| `rating_image` | *Optional[Any]* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | +| `rating_key` | *Optional[Any]* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | +| `role` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `search` | *Optional[bool]* | :heavy_minus_sign: | Indicates this is a search directory | +| `secondary` | *Optional[bool]* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | +| `skip_children` | *Optional[bool]* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | +| `skip_parent` | *Optional[bool]* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | +| `sort` | List[[components.Sort](../../models/components/sort.md)] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `studio` | *Optional[Any]* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | +| `subtype` | *Optional[Any]* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | +| `summary` | *Optional[Any]* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | +| `tagline` | *Optional[Any]* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | +| `theme` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | +| `thumb` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | +| `title_sort` | *Optional[Any]* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | +| `user_rating` | *Optional[float]* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | +| `view_count` | *Optional[int]* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | +| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | +| `view_offset` | *Optional[int]* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | +| `writer` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `year` | *Optional[int]* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithdecisionpart.md b/docs/models/components/mediacontainerwithdecisionpart.md new file mode 100644 index 0000000..7594517 --- /dev/null +++ b/docs/models/components/mediacontainerwithdecisionpart.md @@ -0,0 +1,24 @@ +# MediaContainerWithDecisionPart + +`Part` represents a particular file or "part" of a media item. The part is the playable unit of the media hierarchy. Suppose that a movie library contains a movie that is broken up into files, reminiscent of a movie split across two BDs. The metadata item represents information about the movie, the media item represents this instance of the movie at this resolution and quality, and the part items represent the two playable files. If another media were added which contained the joining of these two parts transcoded down to a lower resolution, then this metadata would contain 2 medias, one with 2 parts and one with 1 part. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `audio_profile` | *Optional[Any]* | :heavy_minus_sign: | N/A | lc | +| `container` | *Optional[Any]* | :heavy_minus_sign: | The container of the media file, such as `mp4` or `mkv` | mov | +| `duration` | *Optional[int]* | :heavy_minus_sign: | The duration of the media item, in milliseconds | 150192 | +| `file` | *Optional[Any]* | :heavy_minus_sign: | The local file path at which the part is stored on the server | /home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov | +| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `key` | *Optional[Any]* | :heavy_minus_sign: | The key from which the media can be streamed | /library/parts/1/1531779263/file.mov | +| `optimized_for_streaming` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `size` | *Optional[int]* | :heavy_minus_sign: | The size of the media, in bytes | 105355654 | +| `stream` | List[[components.MediaContainerWithDecisionStream](../../models/components/mediacontainerwithdecisionstream.md)] | :heavy_minus_sign: | N/A | | +| `video_profile` | *Optional[Any]* | :heavy_minus_sign: | N/A | main | +| `decision` | [Optional[components.Decision]](../../models/components/decision.md) | :heavy_minus_sign: | N/A | | +| `selected` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithdecisionstream.md b/docs/models/components/mediacontainerwithdecisionstream.md new file mode 100644 index 0000000..535bf36 --- /dev/null +++ b/docs/models/components/mediacontainerwithdecisionstream.md @@ -0,0 +1,42 @@ +# MediaContainerWithDecisionStream + +`Stream` represents a particular stream from a media item, such as the video stream, audio stream, or subtitle stream. The stream may either be part of the file represented by the parent `Part` or, especially for subtitles, an external file. The stream contains more detailed information about the specific stream. For example, a video may include the `aspectRatio` at the `Media` level, but detailed information about the video stream like the color space will be included on the `Stream` for the video stream. Note that photos do not have streams (mostly as an optimization). + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `default` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | +| `audio_channel_layout` | *Optional[Any]* | :heavy_minus_sign: | N/A | stereo | +| `bit_depth` | *Optional[int]* | :heavy_minus_sign: | N/A | 8 | +| `bitrate` | *Optional[int]* | :heavy_minus_sign: | N/A | 5466 | +| `can_auto_sync` | *Optional[bool]* | :heavy_minus_sign: | For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video. | true | +| `chroma_location` | *Optional[Any]* | :heavy_minus_sign: | N/A | topleft | +| `chroma_subsampling` | *Optional[Any]* | :heavy_minus_sign: | N/A | 4:2:0 | +| `codec` | *Optional[Any]* | :heavy_minus_sign: | The codec of the stream, such as `h264` or `aac` | h264 | +| `color_primaries` | *Optional[Any]* | :heavy_minus_sign: | N/A | bt709 | +| `color_range` | *Optional[Any]* | :heavy_minus_sign: | N/A | tv | +| `color_space` | *Optional[Any]* | :heavy_minus_sign: | N/A | bt709 | +| `color_trc` | *Optional[Any]* | :heavy_minus_sign: | N/A | bt709 | +| `display_title` | *Optional[Any]* | :heavy_minus_sign: | A friendly name for the stream, often comprised of the language and codec information | English (H.264 Main) | +| `frame_rate` | *Optional[float]* | :heavy_minus_sign: | N/A | 23.976 | +| `has_scaling_matrix` | *Optional[Any]* | :heavy_minus_sign: | N/A | false | +| `height` | *Optional[int]* | :heavy_minus_sign: | N/A | 544 | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `index` | *Optional[int]* | :heavy_minus_sign: | If the stream is part of the `Part` and not an external resource, the index of the stream within that part | 0 | +| `key` | *Optional[Any]* | :heavy_minus_sign: | If the stream is independently streamable, the key from which it can be streamed | /library/streams/1 | +| `language` | *Optional[Any]* | :heavy_minus_sign: | N/A | English | +| `language_code` | *Optional[Any]* | :heavy_minus_sign: | The three character language code for the stream contents | eng | +| `level` | *Optional[int]* | :heavy_minus_sign: | N/A | 31 | +| `profile` | *Optional[Any]* | :heavy_minus_sign: | N/A | main | +| `ref_frames` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | +| `sampling_rate` | *Optional[int]* | :heavy_minus_sign: | N/A | 48000 | +| `selected` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `stream_identifier` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `stream_type` | *Optional[int]* | :heavy_minus_sign: | A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics | 1 | +| `width` | *Optional[int]* | :heavy_minus_sign: | N/A | 1280 | +| `decision` | [Optional[components.MediaContainerWithDecisionDecision]](../../models/components/mediacontainerwithdecisiondecision.md) | :heavy_minus_sign: | N/A | | +| `location` | [Optional[components.MediaContainerWithDecisionLocation]](../../models/components/mediacontainerwithdecisionlocation.md) | :heavy_minus_sign: | N/A | | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithdevice.md b/docs/models/components/mediacontainerwithdevice.md new file mode 100644 index 0000000..8033a15 --- /dev/null +++ b/docs/models/components/mediacontainerwithdevice.md @@ -0,0 +1,8 @@ +# MediaContainerWithDevice + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[components.MediaContainerWithDeviceMediaContainer]](../../models/components/mediacontainerwithdevicemediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithdevicedevice.md b/docs/models/components/mediacontainerwithdevicedevice.md new file mode 100644 index 0000000..bfacd44 --- /dev/null +++ b/docs/models/components/mediacontainerwithdevicedevice.md @@ -0,0 +1,20 @@ +# MediaContainerWithDeviceDevice + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `channel_mapping` | List[[components.ChannelMapping](../../models/components/channelmapping.md)] | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `last_seen_at` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `make` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `model` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `model_number` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `protocol` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `sources` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `state` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `status` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `tuners` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uri` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithdevicemediacontainer.md b/docs/models/components/mediacontainerwithdevicemediacontainer.md new file mode 100644 index 0000000..d4bcd0b --- /dev/null +++ b/docs/models/components/mediacontainerwithdevicemediacontainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithDeviceMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `device` | List[[components.MediaContainerWithDeviceDevice](../../models/components/mediacontainerwithdevicedevice.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithdirectory.md b/docs/models/components/mediacontainerwithdirectory.md new file mode 100644 index 0000000..dc6445a --- /dev/null +++ b/docs/models/components/mediacontainerwithdirectory.md @@ -0,0 +1,8 @@ +# MediaContainerWithDirectory + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[components.MediaContainerWithDirectoryMediaContainer]](../../models/components/mediacontainerwithdirectorymediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithdirectorymediacontainer.md b/docs/models/components/mediacontainerwithdirectorymediacontainer.md new file mode 100644 index 0000000..2e41d8b --- /dev/null +++ b/docs/models/components/mediacontainerwithdirectorymediacontainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithDirectoryMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `directory` | List[[components.Directory](../../models/components/directory.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithhubs.md b/docs/models/components/mediacontainerwithhubs.md new file mode 100644 index 0000000..7d7bb89 --- /dev/null +++ b/docs/models/components/mediacontainerwithhubs.md @@ -0,0 +1,10 @@ +# MediaContainerWithHubs + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[components.MediaContainerWithHubsMediaContainer]](../../models/components/mediacontainerwithhubsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithhubsmediacontainer.md b/docs/models/components/mediacontainerwithhubsmediacontainer.md new file mode 100644 index 0000000..fb1b7e1 --- /dev/null +++ b/docs/models/components/mediacontainerwithhubsmediacontainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithHubsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `hub` | List[[components.Hub](../../models/components/hub.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithlineup.md b/docs/models/components/mediacontainerwithlineup.md new file mode 100644 index 0000000..ba47736 --- /dev/null +++ b/docs/models/components/mediacontainerwithlineup.md @@ -0,0 +1,8 @@ +# MediaContainerWithLineup + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[components.MediaContainerWithLineupMediaContainer]](../../models/components/mediacontainerwithlineupmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithlineupmediacontainer.md b/docs/models/components/mediacontainerwithlineupmediacontainer.md new file mode 100644 index 0000000..533b2cc --- /dev/null +++ b/docs/models/components/mediacontainerwithlineupmediacontainer.md @@ -0,0 +1,18 @@ +# MediaContainerWithLineupMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `lineup` | List[[components.Lineup](../../models/components/lineup.md)] | :heavy_minus_sign: | N/A | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | The UUID of this set lineups | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithmetadata.md b/docs/models/components/mediacontainerwithmetadata.md new file mode 100644 index 0000000..7e363c8 --- /dev/null +++ b/docs/models/components/mediacontainerwithmetadata.md @@ -0,0 +1,8 @@ +# MediaContainerWithMetadata + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[components.MediaContainerWithMetadataMediaContainer]](../../models/components/mediacontainerwithmetadatamediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithmetadatamediacontainer.md b/docs/models/components/mediacontainerwithmetadatamediacontainer.md new file mode 100644 index 0000000..fac9545 --- /dev/null +++ b/docs/models/components/mediacontainerwithmetadatamediacontainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithMetadataMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `metadata` | List[[components.Metadata](../../models/components/metadata.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithnestedmetadata.md b/docs/models/components/mediacontainerwithnestedmetadata.md new file mode 100644 index 0000000..e368d97 --- /dev/null +++ b/docs/models/components/mediacontainerwithnestedmetadata.md @@ -0,0 +1,8 @@ +# MediaContainerWithNestedMetadata + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[components.MediaContainerWithNestedMetadataMediaContainer]](../../models/components/mediacontainerwithnestedmetadatamediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithnestedmetadatamediacontainer.md b/docs/models/components/mediacontainerwithnestedmetadatamediacontainer.md new file mode 100644 index 0000000..8d9f1ce --- /dev/null +++ b/docs/models/components/mediacontainerwithnestedmetadatamediacontainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithNestedMetadataMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `metadata_item` | List[[components.MetadataItem](../../models/components/metadataitem.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithplaylistmetadata.md b/docs/models/components/mediacontainerwithplaylistmetadata.md new file mode 100644 index 0000000..fdc7a0d --- /dev/null +++ b/docs/models/components/mediacontainerwithplaylistmetadata.md @@ -0,0 +1,8 @@ +# MediaContainerWithPlaylistMetadata + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[components.MediaContainerWithPlaylistMetadataMediaContainer]](../../models/components/mediacontainerwithplaylistmetadatamediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithplaylistmetadatamediacontainer.md b/docs/models/components/mediacontainerwithplaylistmetadatamediacontainer.md new file mode 100644 index 0000000..86ffec8 --- /dev/null +++ b/docs/models/components/mediacontainerwithplaylistmetadatamediacontainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithPlaylistMetadataMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `metadata` | List[[components.MediaContainerWithPlaylistMetadataMetadata](../../models/components/mediacontainerwithplaylistmetadatametadata.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithplaylistmetadatametadata.md b/docs/models/components/mediacontainerwithplaylistmetadatametadata.md new file mode 100644 index 0000000..d503943 --- /dev/null +++ b/docs/models/components/mediacontainerwithplaylistmetadatametadata.md @@ -0,0 +1,86 @@ +# MediaContainerWithPlaylistMetadataMetadata + +Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + +Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + +Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `read_only` | *Optional[bool]* | :heavy_minus_sign: | If we return this as true then this playlist cannot be altered or deleted directly by the client. | +| `composite` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | +| `duration` | *Optional[int]* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | +| `key` | *Optional[Any]* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | +| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | +| `playlist_type` | [Optional[components.PlaylistType]](../../models/components/playlisttype.md) | :heavy_minus_sign: | The type of the playlist. | +| `smart` | *Optional[bool]* | :heavy_minus_sign: | Whether or not the playlist is smart. | +| `special_playlist_type` | *Optional[str]* | :heavy_minus_sign: | If this is a special playlist, this returns its type (e.g. favorites). | +| `title` | *Optional[Any]* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | +| `type` | *Optional[Any]* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | +| `absolute_index` | *Optional[int]* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | +| `added_at` | *Optional[int]* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | +| `art` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | +| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | +| `audience_rating_image` | *Optional[Any]* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | +| `autotag` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `banner` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | +| `chapter_source` | *Optional[Any]* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | +| `content_rating` | *Optional[Any]* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | +| `country` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `director` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `filter_` | List[[components.Filter](../../models/components/filter_.md)] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `genre` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | The `art` of the grandparent | +| `grandparent_hero` | *Optional[str]* | :heavy_minus_sign: | The `hero` of the grandparent | +| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | The `key` of the grandparent | +| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The `ratingKey` of the grandparent | +| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | The `theme` of the grandparent | +| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | The `thumb` of the grandparent | +| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | The `title` of the grandparent | +| `guid` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `hero` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | +| `image` | List[[components.Image](../../models/components/image.md)] | :heavy_minus_sign: | N/A | +| `index` | *Optional[int]* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | +| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | +| `media` | List[[components.Media](../../models/components/media.md)] | :heavy_minus_sign: | N/A | +| `originally_available_at` | *Optional[Any]* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | +| `original_title` | *Optional[Any]* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | +| `parent_hero` | *Optional[str]* | :heavy_minus_sign: | The `hero` of the parent | +| `parent_index` | *Optional[int]* | :heavy_minus_sign: | The `index` of the parent | +| `parent_key` | *Optional[str]* | :heavy_minus_sign: | The `key` of the parent | +| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The `ratingKey` of the parent | +| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | The `thumb` of the parent | +| `parent_title` | *Optional[str]* | :heavy_minus_sign: | The `title` of the parent | +| `primary_extra_key` | *Optional[Any]* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | +| `prompt` | *Optional[str]* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | +| `rating` | *Optional[float]* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | +| `rating_array` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `rating_count` | *Optional[int]* | :heavy_minus_sign: | Number of ratings under this metadata | +| `rating_image` | *Optional[Any]* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | +| `rating_key` | *Optional[Any]* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | +| `role` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `search` | *Optional[bool]* | :heavy_minus_sign: | Indicates this is a search directory | +| `secondary` | *Optional[bool]* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | +| `skip_children` | *Optional[bool]* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | +| `skip_parent` | *Optional[bool]* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | +| `sort` | List[[components.Sort](../../models/components/sort.md)] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `studio` | *Optional[Any]* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | +| `subtype` | *Optional[Any]* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | +| `summary` | *Optional[Any]* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | +| `tagline` | *Optional[Any]* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | +| `theme` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | +| `thumb` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | +| `title_sort` | *Optional[Any]* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | +| `user_rating` | *Optional[float]* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | +| `view_count` | *Optional[int]* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | +| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | +| `view_offset` | *Optional[int]* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | +| `writer` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `year` | *Optional[int]* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithsettings.md b/docs/models/components/mediacontainerwithsettings.md new file mode 100644 index 0000000..56f3b4c --- /dev/null +++ b/docs/models/components/mediacontainerwithsettings.md @@ -0,0 +1,8 @@ +# MediaContainerWithSettings + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[components.MediaContainerWithSettingsMediaContainer]](../../models/components/mediacontainerwithsettingsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithsettingsmediacontainer.md b/docs/models/components/mediacontainerwithsettingsmediacontainer.md new file mode 100644 index 0000000..e5c5016 --- /dev/null +++ b/docs/models/components/mediacontainerwithsettingsmediacontainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithSettingsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `setting` | List[[components.Setting](../../models/components/setting.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithsubscription.md b/docs/models/components/mediacontainerwithsubscription.md new file mode 100644 index 0000000..be11f29 --- /dev/null +++ b/docs/models/components/mediacontainerwithsubscription.md @@ -0,0 +1,8 @@ +# MediaContainerWithSubscription + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[components.MediaContainerWithSubscriptionMediaContainer]](../../models/components/mediacontainerwithsubscriptionmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediacontainerwithsubscriptionmediacontainer.md b/docs/models/components/mediacontainerwithsubscriptionmediacontainer.md new file mode 100644 index 0000000..91b82c9 --- /dev/null +++ b/docs/models/components/mediacontainerwithsubscriptionmediacontainer.md @@ -0,0 +1,17 @@ +# MediaContainerWithSubscriptionMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `media_subscription` | List[[components.MediaSubscription](../../models/components/mediasubscription.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediagraboperation.md b/docs/models/components/mediagraboperation.md new file mode 100644 index 0000000..bc2c268 --- /dev/null +++ b/docs/models/components/mediagraboperation.md @@ -0,0 +1,21 @@ +# MediaGrabOperation + +A media grab opration represents a scheduled or active recording of media + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `current_size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `grabber_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `grabber_protocol` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `media_index` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `media_subscription_id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `metadata` | [Optional[components.Metadata]](../../models/components/metadata.md) | :heavy_minus_sign: | Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie.

Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items.

Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show.
| +| `percent` | *Optional[float]* | :heavy_minus_sign: | N/A | +| `provider` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `status` | [Optional[components.Status]](../../models/components/status.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/mediaquery.md b/docs/models/components/mediaquery.md new file mode 100644 index 0000000..72cbb9c --- /dev/null +++ b/docs/models/components/mediaquery.md @@ -0,0 +1,7 @@ +# MediaQuery + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/components/mediasubscription.md b/docs/models/components/mediasubscription.md new file mode 100644 index 0000000..3768d68 --- /dev/null +++ b/docs/models/components/mediasubscription.md @@ -0,0 +1,26 @@ +# MediaSubscription + +A media subscription contains a representation of metadata desired to be recorded + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | *Optional[int]* | :heavy_minus_sign: | The metadata type of the root item of the subscription | +| `airings_type` | [Optional[components.AiringsType]](../../models/components/airingstype.md) | :heavy_minus_sign: | N/A | +| `created_at` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `directory` | Dict[str, *Any*] | :heavy_minus_sign: | Media Matching Hints | +| `duration_total` | *Optional[int]* | :heavy_minus_sign: | Only included if `includeStorage` is specified | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `location_path` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `media_grab_operation` | List[[components.MediaGrabOperation](../../models/components/mediagraboperation.md)] | :heavy_minus_sign: | N/A | +| `playlist` | Dict[str, *Any*] | :heavy_minus_sign: | Media Matching Hints | +| `setting` | List[[components.Setting](../../models/components/setting.md)] | :heavy_minus_sign: | N/A | +| `storage_total` | *Optional[int]* | :heavy_minus_sign: | Only included if `includeStorage` is specified | +| `target_library_section_id` | *Optional[int]* | :heavy_minus_sign: | The library section id for where the item is to be recorded | +| `target_section_location_id` | *Optional[int]* | :heavy_minus_sign: | The library section location id for where the item is to be recorded | +| `video` | Dict[str, *Any*] | :heavy_minus_sign: | Media Matching Hints | \ No newline at end of file diff --git a/docs/models/components/metadata.md b/docs/models/components/metadata.md new file mode 100644 index 0000000..5197944 --- /dev/null +++ b/docs/models/components/metadata.md @@ -0,0 +1,82 @@ +# Metadata + +Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + +Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + +Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `title` | *Optional[Any]* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | +| `type` | *Optional[Any]* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | +| `absolute_index` | *Optional[int]* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | +| `added_at` | *Optional[int]* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | +| `art` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | +| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | +| `audience_rating_image` | *Optional[Any]* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | +| `autotag` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `banner` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | +| `chapter_source` | *Optional[Any]* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | +| `composite` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | +| `content_rating` | *Optional[Any]* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | +| `country` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `director` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `duration` | *Optional[int]* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | +| `filter_` | List[[components.Filter](../../models/components/filter_.md)] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `genre` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | The `art` of the grandparent | +| `grandparent_hero` | *Optional[str]* | :heavy_minus_sign: | The `hero` of the grandparent | +| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | The `key` of the grandparent | +| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The `ratingKey` of the grandparent | +| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | The `theme` of the grandparent | +| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | The `thumb` of the grandparent | +| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | The `title` of the grandparent | +| `guid` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `hero` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | +| `image` | List[[components.Image](../../models/components/image.md)] | :heavy_minus_sign: | N/A | +| `index` | *Optional[int]* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | +| `key` | *Optional[Any]* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | +| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | +| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | +| `media` | List[[components.Media](../../models/components/media.md)] | :heavy_minus_sign: | N/A | +| `originally_available_at` | *Optional[Any]* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | +| `original_title` | *Optional[Any]* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | +| `parent_hero` | *Optional[str]* | :heavy_minus_sign: | The `hero` of the parent | +| `parent_index` | *Optional[int]* | :heavy_minus_sign: | The `index` of the parent | +| `parent_key` | *Optional[str]* | :heavy_minus_sign: | The `key` of the parent | +| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The `ratingKey` of the parent | +| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | The `thumb` of the parent | +| `parent_title` | *Optional[str]* | :heavy_minus_sign: | The `title` of the parent | +| `primary_extra_key` | *Optional[Any]* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | +| `prompt` | *Optional[str]* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | +| `rating` | *Optional[float]* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | +| `rating_array` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `rating_count` | *Optional[int]* | :heavy_minus_sign: | Number of ratings under this metadata | +| `rating_image` | *Optional[Any]* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | +| `rating_key` | *Optional[Any]* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | +| `role` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `search` | *Optional[bool]* | :heavy_minus_sign: | Indicates this is a search directory | +| `secondary` | *Optional[bool]* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | +| `skip_children` | *Optional[bool]* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | +| `skip_parent` | *Optional[bool]* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | +| `sort` | List[[components.Sort](../../models/components/sort.md)] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `studio` | *Optional[Any]* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | +| `subtype` | *Optional[Any]* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | +| `summary` | *Optional[Any]* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | +| `tagline` | *Optional[Any]* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | +| `theme` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | +| `thumb` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | +| `title_sort` | *Optional[Any]* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | +| `user_rating` | *Optional[float]* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | +| `view_count` | *Optional[int]* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | +| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | +| `view_offset` | *Optional[int]* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | +| `writer` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `year` | *Optional[int]* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/metadataitem.md b/docs/models/components/metadataitem.md new file mode 100644 index 0000000..0f9c771 --- /dev/null +++ b/docs/models/components/metadataitem.md @@ -0,0 +1,83 @@ +# MetadataItem + +Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + +Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + +Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `title` | *Optional[Any]* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | +| `type` | *Optional[Any]* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | +| `absolute_index` | *Optional[int]* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | +| `added_at` | *Optional[int]* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | +| `art` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | +| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | +| `audience_rating_image` | *Optional[Any]* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | +| `autotag` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `banner` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | +| `chapter_source` | *Optional[Any]* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | +| `composite` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | +| `content_rating` | *Optional[Any]* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | +| `country` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `director` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `duration` | *Optional[int]* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | +| `filter_` | List[[components.Filter](../../models/components/filter_.md)] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `genre` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | The `art` of the grandparent | +| `grandparent_hero` | *Optional[str]* | :heavy_minus_sign: | The `hero` of the grandparent | +| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | The `key` of the grandparent | +| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The `ratingKey` of the grandparent | +| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | The `theme` of the grandparent | +| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | The `thumb` of the grandparent | +| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | The `title` of the grandparent | +| `guid` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `hero` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | +| `image` | List[[components.Image](../../models/components/image.md)] | :heavy_minus_sign: | N/A | +| `index` | *Optional[int]* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | +| `key` | *Optional[Any]* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | +| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | +| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | +| `media` | List[[components.Media](../../models/components/media.md)] | :heavy_minus_sign: | N/A | +| `originally_available_at` | *Optional[Any]* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | +| `original_title` | *Optional[Any]* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | +| `parent_hero` | *Optional[str]* | :heavy_minus_sign: | The `hero` of the parent | +| `parent_index` | *Optional[int]* | :heavy_minus_sign: | The `index` of the parent | +| `parent_key` | *Optional[str]* | :heavy_minus_sign: | The `key` of the parent | +| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The `ratingKey` of the parent | +| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | The `thumb` of the parent | +| `parent_title` | *Optional[str]* | :heavy_minus_sign: | The `title` of the parent | +| `primary_extra_key` | *Optional[Any]* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | +| `prompt` | *Optional[str]* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | +| `rating` | *Optional[float]* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | +| `rating_array` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `rating_count` | *Optional[int]* | :heavy_minus_sign: | Number of ratings under this metadata | +| `rating_image` | *Optional[Any]* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | +| `rating_key` | *Optional[Any]* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | +| `role` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `search` | *Optional[bool]* | :heavy_minus_sign: | Indicates this is a search directory | +| `secondary` | *Optional[bool]* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | +| `skip_children` | *Optional[bool]* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | +| `skip_parent` | *Optional[bool]* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | +| `sort` | List[[components.Sort](../../models/components/sort.md)] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `studio` | *Optional[Any]* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | +| `subtype` | *Optional[Any]* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | +| `summary` | *Optional[Any]* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | +| `tagline` | *Optional[Any]* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | +| `theme` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | +| `thumb` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | +| `title_sort` | *Optional[Any]* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | +| `user_rating` | *Optional[float]* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | +| `view_count` | *Optional[int]* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | +| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | +| `view_offset` | *Optional[int]* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | +| `writer` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `year` | *Optional[int]* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | +| `metadata_item` | List[[components.Items](../../models/components/items.md)] | :heavy_minus_sign: | N/A | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/part.md b/docs/models/components/part.md new file mode 100644 index 0000000..39f0ef0 --- /dev/null +++ b/docs/models/components/part.md @@ -0,0 +1,22 @@ +# Part + +`Part` represents a particular file or "part" of a media item. The part is the playable unit of the media hierarchy. Suppose that a movie library contains a movie that is broken up into files, reminiscent of a movie split across two BDs. The metadata item represents information about the movie, the media item represents this instance of the movie at this resolution and quality, and the part items represent the two playable files. If another media were added which contained the joining of these two parts transcoded down to a lower resolution, then this metadata would contain 2 medias, one with 2 parts and one with 1 part. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | +| `audio_profile` | *Optional[Any]* | :heavy_minus_sign: | N/A | lc | +| `container` | *Optional[Any]* | :heavy_minus_sign: | The container of the media file, such as `mp4` or `mkv` | mov | +| `duration` | *Optional[int]* | :heavy_minus_sign: | The duration of the media item, in milliseconds | 150192 | +| `file` | *Optional[Any]* | :heavy_minus_sign: | The local file path at which the part is stored on the server | /home/schuyler/Videos/Trailers/Cloud Atlas (2012).mov | +| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `key` | *Optional[Any]* | :heavy_minus_sign: | The key from which the media can be streamed | /library/parts/1/1531779263/file.mov | +| `optimized_for_streaming` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | +| `size` | *Optional[int]* | :heavy_minus_sign: | The size of the media, in bytes | 105355654 | +| `stream` | List[[components.Stream](../../models/components/stream.md)] | :heavy_minus_sign: | N/A | | +| `video_profile` | *Optional[Any]* | :heavy_minus_sign: | N/A | main | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/pivot.md b/docs/models/components/pivot.md similarity index 100% rename from docs/models/operations/pivot.md rename to docs/models/components/pivot.md index d5d5d50..5bd591a 100644 --- a/docs/models/operations/pivot.md +++ b/docs/models/components/pivot.md @@ -5,9 +5,9 @@ | Field | Type | Required | Description | | ------------------ | ------------------ | ------------------ | ------------------ | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `context` | *Optional[str]* | :heavy_minus_sign: | N/A | | `id` | *Optional[str]* | :heavy_minus_sign: | N/A | | `key` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `context` | *Optional[str]* | :heavy_minus_sign: | N/A | | `symbol` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/player.md b/docs/models/components/player.md new file mode 100644 index 0000000..50674db --- /dev/null +++ b/docs/models/components/player.md @@ -0,0 +1,24 @@ +# Player + +Information about the player being used for playback + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `title` | *Optional[str]* | :heavy_minus_sign: | The title of the client | +| `address` | *Optional[str]* | :heavy_minus_sign: | The remote address | +| `local` | *Optional[bool]* | :heavy_minus_sign: | Indicating if the client is playing from the local LAN | +| `machine_identifier` | *Optional[str]* | :heavy_minus_sign: | The identifier of the client | +| `model` | *Optional[str]* | :heavy_minus_sign: | The model of the client | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The platformVersion of the client | +| `product` | *Optional[str]* | :heavy_minus_sign: | The product name of the client | +| `relayed` | *Optional[bool]* | :heavy_minus_sign: | Indicating if the client is playing over a relay connection | +| `remote_public_address` | *Optional[str]* | :heavy_minus_sign: | The client's public address | +| `secure` | *Optional[bool]* | :heavy_minus_sign: | Indicating if the client is playing over HTTPS | +| `state` | *Optional[str]* | :heavy_minus_sign: | The client's last reported state | +| `user_id` | *Optional[int]* | :heavy_minus_sign: | The id of the user | +| `vendor` | *Optional[str]* | :heavy_minus_sign: | The vendor of the client | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client | \ No newline at end of file diff --git a/docs/models/components/playlisttype.md b/docs/models/components/playlisttype.md new file mode 100644 index 0000000..e7b0fbc --- /dev/null +++ b/docs/models/components/playlisttype.md @@ -0,0 +1,12 @@ +# PlaylistType + +The type of the playlist. + + +## Values + +| Name | Value | +| ------- | ------- | +| `AUDIO` | audio | +| `VIDEO` | video | +| `PHOTO` | photo | \ No newline at end of file diff --git a/docs/models/components/postresponses200.md b/docs/models/components/postresponses200.md new file mode 100644 index 0000000..f477375 --- /dev/null +++ b/docs/models/components/postresponses200.md @@ -0,0 +1,10 @@ +# PostResponses200 + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[components.PostResponses200MediaContainer]](../../models/components/postresponses200mediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/postresponses200mediacontainer.md b/docs/models/components/postresponses200mediacontainer.md new file mode 100644 index 0000000..baa934a --- /dev/null +++ b/docs/models/components/postresponses200mediacontainer.md @@ -0,0 +1,23 @@ +# PostResponses200MediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `color` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `end_time_offset` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `start_time_offset` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | [Optional[components.PostResponses200Type]](../../models/components/postresponses200type.md) | :heavy_minus_sign: | N/A | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/postresponses200type.md b/docs/models/components/postresponses200type.md new file mode 100644 index 0000000..9c4bc4d --- /dev/null +++ b/docs/models/components/postresponses200type.md @@ -0,0 +1,12 @@ +# PostResponses200Type + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `INTRO` | intro | +| `COMMERCIAL` | commercial | +| `BOOKMARK` | bookmark | +| `RESUME` | resume | +| `CREDIT` | credit | \ No newline at end of file diff --git a/docs/models/components/protocol.md b/docs/models/components/protocol.md new file mode 100644 index 0000000..61c4cb7 --- /dev/null +++ b/docs/models/components/protocol.md @@ -0,0 +1,10 @@ +# Protocol + + +## Values + +| Name | Value | +| ------ | ------ | +| `HTTP` | http | +| `HLS` | hls | +| `DASH` | dash | \ No newline at end of file diff --git a/docs/models/components/recommendationsvisibility.md b/docs/models/components/recommendationsvisibility.md new file mode 100644 index 0000000..ce76f3b --- /dev/null +++ b/docs/models/components/recommendationsvisibility.md @@ -0,0 +1,18 @@ +# RecommendationsVisibility + +The visibility of this hub in recommendations: + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + + +## Values + +| Name | Value | +| -------- | -------- | +| `ALL` | all | +| `NONE` | none | +| `ADMIN` | admin | +| `SHARED` | shared | \ No newline at end of file diff --git a/docs/models/components/requesthandlerslashgetresponses200.md b/docs/models/components/requesthandlerslashgetresponses200.md new file mode 100644 index 0000000..3d9456c --- /dev/null +++ b/docs/models/components/requesthandlerslashgetresponses200.md @@ -0,0 +1,10 @@ +# RequestHandlerSlashGetResponses200 + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[components.RequestHandlerSlashGetResponses200MediaContainer]](../../models/components/requesthandlerslashgetresponses200mediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/requesthandlerslashgetresponses200directory.md b/docs/models/components/requesthandlerslashgetresponses200directory.md new file mode 100644 index 0000000..a471931 --- /dev/null +++ b/docs/models/components/requesthandlerslashgetresponses200directory.md @@ -0,0 +1,10 @@ +# RequestHandlerSlashGetResponses200Directory + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | +| `count` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | The key where this directory is found | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/requesthandlerslashgetresponses200mediacontainer.md b/docs/models/components/requesthandlerslashgetresponses200mediacontainer.md new file mode 100644 index 0000000..3b75a71 --- /dev/null +++ b/docs/models/components/requesthandlerslashgetresponses200mediacontainer.md @@ -0,0 +1,65 @@ +# RequestHandlerSlashGetResponses200MediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| | +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| | +| `allow_camera_upload` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `allow_channel_access` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `allow_media_deletion` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `allow_sharing` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `allow_tuners` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `background_processing` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `certificate` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `companion_proxy` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `country_code` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `diagnostics` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `event_stream` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `friendly_name` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `hub_search` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `item_clusters` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `livetv` | *Optional[int]* | :heavy_minus_sign: | N/A | 7 | +| `machine_identifier` | *Optional[Any]* | :heavy_minus_sign: | N/A | 0123456789abcdef0123456789abcdef012345678 | +| `media_providers` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `multiuser` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `music_analysis` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | +| `my_plex` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `my_plex_mapping_state` | *Optional[Any]* | :heavy_minus_sign: | N/A | mapped | +| `my_plex_signin_state` | *Optional[Any]* | :heavy_minus_sign: | N/A | ok | +| `my_plex_subscription` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `my_plex_username` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `offline_transcode` | *Optional[Any]* | :heavy_minus_sign: | N/A | 1 | +| `owner_features` | *Optional[str]* | :heavy_minus_sign: | A comma-separated list of features which are enabled for the server owner | | +| `platform` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `plugin_host` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `push_notifications` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `read_only_libraries` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `streaming_brain_abr_version` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `streaming_brain_version` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_active_video_sessions` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `transcoder_audio` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_lyrics` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_photo` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_subtitles` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_video` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_video_bitrates` | *Optional[Any]* | :heavy_minus_sign: | The suggested video quality bitrates to present to the user | | +| `transcoder_video_qualities` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `transcoder_video_resolutions` | *Optional[Any]* | :heavy_minus_sign: | The suggested video resolutions to the above quality bitrates | | +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `updater` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `version` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `voice_search` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `directory` | List[[components.RequestHandlerSlashGetResponses200Directory](../../models/components/requesthandlerslashgetresponses200directory.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/components/security.md b/docs/models/components/security.md index 0bac8c3..4750d59 100644 --- a/docs/models/components/security.md +++ b/docs/models/components/security.md @@ -5,4 +5,4 @@ | Field | Type | Required | Description | | ------------------ | ------------------ | ------------------ | ------------------ | -| `access_token` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file +| `token` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/session.md b/docs/models/components/session.md new file mode 100644 index 0000000..eed6b46 --- /dev/null +++ b/docs/models/components/session.md @@ -0,0 +1,12 @@ +# Session + +Information about the playback session + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `bandwidth` | *Optional[int]* | :heavy_minus_sign: | The bandwidth used by this client's playback in kbps | +| `id` | *Optional[str]* | :heavy_minus_sign: | The id of the playback session | +| `location` | [Optional[components.SessionLocation]](../../models/components/sessionlocation.md) | :heavy_minus_sign: | The location of the client | \ No newline at end of file diff --git a/docs/models/components/sessionlocation.md b/docs/models/components/sessionlocation.md new file mode 100644 index 0000000..dd9aafe --- /dev/null +++ b/docs/models/components/sessionlocation.md @@ -0,0 +1,11 @@ +# SessionLocation + +The location of the client + + +## Values + +| Name | Value | +| ----- | ----- | +| `LAN` | lan | +| `WAN` | wan | \ No newline at end of file diff --git a/docs/models/components/setting.md b/docs/models/components/setting.md new file mode 100644 index 0000000..e427fe0 --- /dev/null +++ b/docs/models/components/setting.md @@ -0,0 +1,19 @@ +# Setting + +A configuration setting or preference + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `type` | [Optional[components.Type]](../../models/components/type.md) | :heavy_minus_sign: | The type of the value of this setting | +| `default` | [Optional[components.Default]](../../models/components/default.md) | :heavy_minus_sign: | The default value of this setting | +| `advanced` | *Optional[bool]* | :heavy_minus_sign: | Whether the setting is considered advanced and normally hidden from the user | +| `enum_values` | *Optional[str]* | :heavy_minus_sign: | The possible values for this setting if restricted. The list is `\|` separated with `value:name` entries. | +| `group` | *Optional[str]* | :heavy_minus_sign: | The group name of this setting to aid in display of a hierarchy | +| `hidden` | *Optional[bool]* | :heavy_minus_sign: | Whether the setting is hidden or not | +| `id` | *Optional[str]* | :heavy_minus_sign: | The query parameter name for this setting | +| `label` | *Optional[str]* | :heavy_minus_sign: | A user-friendly name for the setting | +| `summary` | *Optional[str]* | :heavy_minus_sign: | A description of the setting | +| `value` | [Optional[components.Value]](../../models/components/value.md) | :heavy_minus_sign: | The current value of this setting | \ No newline at end of file diff --git a/docs/models/components/slashgetresponses200.md b/docs/models/components/slashgetresponses200.md new file mode 100644 index 0000000..e69467d --- /dev/null +++ b/docs/models/components/slashgetresponses200.md @@ -0,0 +1,10 @@ +# SlashGetResponses200 + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[components.SlashGetResponses200MediaContainer]](../../models/components/slashgetresponses200mediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/slashgetresponses200mediacontainer.md b/docs/models/components/slashgetresponses200mediacontainer.md new file mode 100644 index 0000000..3ae8adb --- /dev/null +++ b/docs/models/components/slashgetresponses200mediacontainer.md @@ -0,0 +1,21 @@ +# SlashGetResponses200MediaContainer + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `content` | *Optional[str]* | :heavy_minus_sign: | The flavors of directory found here:
- Primary: (e.g. all, On Deck) These are still used in some clients to provide "shortcuts" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users.
- Secondary: These are marked with `"secondary": true` and were used by old clients to provide nested menus allowing for primative (but structured) navigation.
- Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `"search": true` which used to be used to allow clients to build search dialogs on the fly. | +| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `directory` | List[[components.Metadata](../../models/components/metadata.md)] | :heavy_minus_sign: | N/A | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `media_tag_prefix` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `media_tag_version` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `sort_asc` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `title1` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `view_group` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `view_mode` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/sort.md b/docs/models/components/sort.md new file mode 100644 index 0000000..6f5d38a --- /dev/null +++ b/docs/models/components/sort.md @@ -0,0 +1,30 @@ +# Sort + +Each `Sort` object contains a description of the sort field. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `title` | *Optional[str]* | :heavy_minus_sign: | The title of the field. | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `content` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `filter_` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `has_prefs` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `has_store_services` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `hub_key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | The key to use in the sort field to make items sort by this item | +| `last_accessed_at` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `pivot` | List[[components.SortPivot](../../models/components/sortpivot.md)] | :heavy_minus_sign: | N/A | +| `share` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `title_bar` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `default` | [Optional[components.SortDefault]](../../models/components/sortdefault.md) | :heavy_minus_sign: | If present, this sort is the default and in this direction | +| `default_direction` | [Optional[components.DefaultDirection]](../../models/components/defaultdirection.md) | :heavy_minus_sign: | This default diction of this sort | +| `desc_key` | *Optional[str]* | :heavy_minus_sign: | The key for sorting this field in reverse order | +| `first_character_key` | *Optional[str]* | :heavy_minus_sign: | The key to use to get items sorted by this field and indexed by the first character | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/sortdefault.md b/docs/models/components/sortdefault.md new file mode 100644 index 0000000..fca0c70 --- /dev/null +++ b/docs/models/components/sortdefault.md @@ -0,0 +1,11 @@ +# SortDefault + +If present, this sort is the default and in this direction + + +## Values + +| Name | Value | +| ------ | ------ | +| `ASC` | asc | +| `DESC` | desc | \ No newline at end of file diff --git a/docs/models/components/sortpivot.md b/docs/models/components/sortpivot.md new file mode 100644 index 0000000..992491d --- /dev/null +++ b/docs/models/components/sortpivot.md @@ -0,0 +1,13 @@ +# SortPivot + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `context` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `symbol` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/status.md b/docs/models/components/status.md new file mode 100644 index 0000000..fe0ec14 --- /dev/null +++ b/docs/models/components/status.md @@ -0,0 +1,15 @@ +# Status + + +## Values + +| Name | Value | +| ---------------- | ---------------- | +| `INACTIVE` | inactive | +| `SCHEDULED` | scheduled | +| `INPROGRESS` | inprogress | +| `COMPLETE` | complete | +| `CANCELLED` | cancelled | +| `ERROR` | error | +| `POSTPROCESSING` | postprocessing | +| `PAUSED` | paused | \ No newline at end of file diff --git a/docs/models/components/stream.md b/docs/models/components/stream.md new file mode 100644 index 0000000..1769094 --- /dev/null +++ b/docs/models/components/stream.md @@ -0,0 +1,40 @@ +# Stream + +`Stream` represents a particular stream from a media item, such as the video stream, audio stream, or subtitle stream. The stream may either be part of the file represented by the parent `Part` or, especially for subtitles, an external file. The stream contains more detailed information about the specific stream. For example, a video may include the `aspectRatio` at the `Media` level, but detailed information about the video stream like the color space will be included on the `Stream` for the video stream. Note that photos do not have streams (mostly as an optimization). + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `default` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | +| `audio_channel_layout` | *Optional[Any]* | :heavy_minus_sign: | N/A | stereo | +| `bit_depth` | *Optional[int]* | :heavy_minus_sign: | N/A | 8 | +| `bitrate` | *Optional[int]* | :heavy_minus_sign: | N/A | 5466 | +| `can_auto_sync` | *Optional[bool]* | :heavy_minus_sign: | For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video. | true | +| `chroma_location` | *Optional[Any]* | :heavy_minus_sign: | N/A | topleft | +| `chroma_subsampling` | *Optional[Any]* | :heavy_minus_sign: | N/A | 4:2:0 | +| `codec` | *Optional[Any]* | :heavy_minus_sign: | The codec of the stream, such as `h264` or `aac` | h264 | +| `color_primaries` | *Optional[Any]* | :heavy_minus_sign: | N/A | bt709 | +| `color_range` | *Optional[Any]* | :heavy_minus_sign: | N/A | tv | +| `color_space` | *Optional[Any]* | :heavy_minus_sign: | N/A | bt709 | +| `color_trc` | *Optional[Any]* | :heavy_minus_sign: | N/A | bt709 | +| `display_title` | *Optional[Any]* | :heavy_minus_sign: | A friendly name for the stream, often comprised of the language and codec information | English (H.264 Main) | +| `frame_rate` | *Optional[float]* | :heavy_minus_sign: | N/A | 23.976 | +| `has_scaling_matrix` | *Optional[Any]* | :heavy_minus_sign: | N/A | false | +| `height` | *Optional[int]* | :heavy_minus_sign: | N/A | 544 | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `index` | *Optional[int]* | :heavy_minus_sign: | If the stream is part of the `Part` and not an external resource, the index of the stream within that part | 0 | +| `key` | *Optional[Any]* | :heavy_minus_sign: | If the stream is independently streamable, the key from which it can be streamed | /library/streams/1 | +| `language` | *Optional[Any]* | :heavy_minus_sign: | N/A | English | +| `language_code` | *Optional[Any]* | :heavy_minus_sign: | The three character language code for the stream contents | eng | +| `level` | *Optional[int]* | :heavy_minus_sign: | N/A | 31 | +| `profile` | *Optional[Any]* | :heavy_minus_sign: | N/A | main | +| `ref_frames` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | +| `sampling_rate` | *Optional[int]* | :heavy_minus_sign: | N/A | 48000 | +| `selected` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `stream_identifier` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | +| `stream_type` | *Optional[int]* | :heavy_minus_sign: | A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics | 1 | +| `width` | *Optional[int]* | :heavy_minus_sign: | N/A | 1280 | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/components/subtitles.md b/docs/models/components/subtitles.md new file mode 100644 index 0000000..f8d4e42 --- /dev/null +++ b/docs/models/components/subtitles.md @@ -0,0 +1,14 @@ +# Subtitles + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `AUTO` | auto | +| `BURN` | burn | +| `NONE` | none | +| `SIDECAR` | sidecar | +| `EMBEDDED` | embedded | +| `SEGMENTED` | segmented | +| `UNKNOWN` | unknown | \ No newline at end of file diff --git a/docs/models/components/tag.md b/docs/models/components/tag.md new file mode 100644 index 0000000..69e190f --- /dev/null +++ b/docs/models/components/tag.md @@ -0,0 +1,20 @@ +# Tag + +A variety of extra information about a metadata item is included as tags. These tags use their own element names such as `Genre`, `Writer`, `Directory`, and `Role`. Individual tag types may introduce their own extra attributes. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `confidence` | *Optional[float]* | :heavy_minus_sign: | Measure of the confidence of an automatic tag | | +| `context` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `filter_` | *Optional[Any]* | :heavy_minus_sign: | A filter parameter that can be used to query for more content that matches this tag value. | actor=49 | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `role` | *Optional[Any]* | :heavy_minus_sign: | The role this actor played | Secretary | +| `tag` | *Optional[Any]* | :heavy_minus_sign: | The value of the tag (the name) | Shaun Lawton | +| `tag_key` | *Optional[Any]* | :heavy_minus_sign: | Plex identifier for this tag which can be used to fetch additional information from plex.tv | 5d3ee12c4cde6a001c3e0b27 | +| `tag_type` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `thumb` | *Optional[Any]* | :heavy_minus_sign: | N/A | http://image.tmdb.org/t/p/original/lcJ8qM51ClAR2UzXU1mkZGfnn3o.jpg | \ No newline at end of file diff --git a/docs/models/components/transcodesession.md b/docs/models/components/transcodesession.md new file mode 100644 index 0000000..7a2b7c0 --- /dev/null +++ b/docs/models/components/transcodesession.md @@ -0,0 +1,23 @@ +# TranscodeSession + +The transcode session if item is currently being transcoded + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------- | ---------------------------- | ---------------------------- | ---------------------------- | +| `complete` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `context` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `error` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `progress` | *Optional[float]* | :heavy_minus_sign: | N/A | +| `protocol` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `source_audio_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `source_video_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `speed` | *Optional[float]* | :heavy_minus_sign: | N/A | +| `throttled` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `transcode_hw_full_pipeline` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `transcode_hw_requested` | *Optional[bool]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/components/transcodetype.md b/docs/models/components/transcodetype.md new file mode 100644 index 0000000..9948181 --- /dev/null +++ b/docs/models/components/transcodetype.md @@ -0,0 +1,11 @@ +# TranscodeType + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `VIDEO` | video | +| `MUSIC` | music | +| `AUDIO` | audio | +| `SUBTITLES` | subtitles | \ No newline at end of file diff --git a/docs/models/components/type.md b/docs/models/components/type.md new file mode 100644 index 0000000..12b3f0a --- /dev/null +++ b/docs/models/components/type.md @@ -0,0 +1,13 @@ +# Type + +The type of the value of this setting + + +## Values + +| Name | Value | +| -------- | -------- | +| `BOOL` | bool | +| `INT` | int | +| `TEXT` | text | +| `DOUBLE` | double | \ No newline at end of file diff --git a/docs/models/components/user.md b/docs/models/components/user.md new file mode 100644 index 0000000..0a64660 --- /dev/null +++ b/docs/models/components/user.md @@ -0,0 +1,12 @@ +# User + +The user playing the content + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | +| `title` | *Optional[str]* | :heavy_minus_sign: | The username | +| `id` | *Optional[str]* | :heavy_minus_sign: | The id of the user | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | Thumb image to display for the user | \ No newline at end of file diff --git a/docs/models/components/value.md b/docs/models/components/value.md new file mode 100644 index 0000000..340fb0d --- /dev/null +++ b/docs/models/components/value.md @@ -0,0 +1,25 @@ +# Value + +The current value of this setting + + +## Supported Types + +### `str` + +```python +value: str = /* values here */ +``` + +### `float` + +```python +value: float = /* values here */ +``` + +### `bool` + +```python +value: bool = /* values here */ +``` + diff --git a/docs/models/errors/addplaylistcontentsbadrequest.md b/docs/models/errors/addplaylistcontentsbadrequest.md deleted file mode 100644 index 3f43219..0000000 --- a/docs/models/errors/addplaylistcontentsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# AddPlaylistContentsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.AddPlaylistContentsErrors](../../models/errors/addplaylistcontentserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/addplaylistcontentserrors.md b/docs/models/errors/addplaylistcontentserrors.md deleted file mode 100644 index b111ac0..0000000 --- a/docs/models/errors/addplaylistcontentserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# AddPlaylistContentsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/addplaylistcontentsplaylistserrors.md b/docs/models/errors/addplaylistcontentsplaylistserrors.md deleted file mode 100644 index ecd7918..0000000 --- a/docs/models/errors/addplaylistcontentsplaylistserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# AddPlaylistContentsPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/addplaylistcontentsunauthorized.md b/docs/models/errors/addplaylistcontentsunauthorized.md deleted file mode 100644 index e695cb6..0000000 --- a/docs/models/errors/addplaylistcontentsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# AddPlaylistContentsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.AddPlaylistContentsPlaylistsErrors](../../models/errors/addplaylistcontentsplaylistserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/applyupdatesbadrequest.md b/docs/models/errors/applyupdatesbadrequest.md deleted file mode 100644 index a6678a8..0000000 --- a/docs/models/errors/applyupdatesbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# ApplyUpdatesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `errors` | List[[errors.ApplyUpdatesErrors](../../models/errors/applyupdateserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/applyupdateserrors.md b/docs/models/errors/applyupdateserrors.md deleted file mode 100644 index 23b3ae5..0000000 --- a/docs/models/errors/applyupdateserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# ApplyUpdatesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/applyupdatesunauthorized.md b/docs/models/errors/applyupdatesunauthorized.md deleted file mode 100644 index ef28fe9..0000000 --- a/docs/models/errors/applyupdatesunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# ApplyUpdatesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.ApplyUpdatesUpdaterErrors](../../models/errors/applyupdatesupdatererrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/applyupdatesupdatererrors.md b/docs/models/errors/applyupdatesupdatererrors.md deleted file mode 100644 index 1df9cf3..0000000 --- a/docs/models/errors/applyupdatesupdatererrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# ApplyUpdatesUpdaterErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/cancelserveractivitiesactivitieserrors.md b/docs/models/errors/cancelserveractivitiesactivitieserrors.md deleted file mode 100644 index e9a463b..0000000 --- a/docs/models/errors/cancelserveractivitiesactivitieserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# CancelServerActivitiesActivitiesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/cancelserveractivitiesbadrequest.md b/docs/models/errors/cancelserveractivitiesbadrequest.md deleted file mode 100644 index 46331be..0000000 --- a/docs/models/errors/cancelserveractivitiesbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# CancelServerActivitiesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.CancelServerActivitiesErrors](../../models/errors/cancelserveractivitieserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/cancelserveractivitieserrors.md b/docs/models/errors/cancelserveractivitieserrors.md deleted file mode 100644 index ecd1d31..0000000 --- a/docs/models/errors/cancelserveractivitieserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# CancelServerActivitiesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/cancelserveractivitiesunauthorized.md b/docs/models/errors/cancelserveractivitiesunauthorized.md deleted file mode 100644 index 6f796ba..0000000 --- a/docs/models/errors/cancelserveractivitiesunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# CancelServerActivitiesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.CancelServerActivitiesActivitiesErrors](../../models/errors/cancelserveractivitiesactivitieserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/checkforupdatesbadrequest.md b/docs/models/errors/checkforupdatesbadrequest.md deleted file mode 100644 index c5d89d7..0000000 --- a/docs/models/errors/checkforupdatesbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# CheckForUpdatesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `errors` | List[[errors.CheckForUpdatesErrors](../../models/errors/checkforupdateserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/checkforupdateserrors.md b/docs/models/errors/checkforupdateserrors.md deleted file mode 100644 index 83c79c5..0000000 --- a/docs/models/errors/checkforupdateserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# CheckForUpdatesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/checkforupdatesunauthorized.md b/docs/models/errors/checkforupdatesunauthorized.md deleted file mode 100644 index 793fe69..0000000 --- a/docs/models/errors/checkforupdatesunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# CheckForUpdatesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.CheckForUpdatesUpdaterErrors](../../models/errors/checkforupdatesupdatererrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/checkforupdatesupdatererrors.md b/docs/models/errors/checkforupdatesupdatererrors.md deleted file mode 100644 index a5bc580..0000000 --- a/docs/models/errors/checkforupdatesupdatererrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# CheckForUpdatesUpdaterErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/clearplaylistcontentsbadrequest.md b/docs/models/errors/clearplaylistcontentsbadrequest.md deleted file mode 100644 index 2734305..0000000 --- a/docs/models/errors/clearplaylistcontentsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# ClearPlaylistContentsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.ClearPlaylistContentsErrors](../../models/errors/clearplaylistcontentserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/clearplaylistcontentserrors.md b/docs/models/errors/clearplaylistcontentserrors.md deleted file mode 100644 index 5b4a42a..0000000 --- a/docs/models/errors/clearplaylistcontentserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# ClearPlaylistContentsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/clearplaylistcontentsplaylistserrors.md b/docs/models/errors/clearplaylistcontentsplaylistserrors.md deleted file mode 100644 index 42068d8..0000000 --- a/docs/models/errors/clearplaylistcontentsplaylistserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# ClearPlaylistContentsPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/clearplaylistcontentsunauthorized.md b/docs/models/errors/clearplaylistcontentsunauthorized.md deleted file mode 100644 index 5f5823d..0000000 --- a/docs/models/errors/clearplaylistcontentsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# ClearPlaylistContentsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.ClearPlaylistContentsPlaylistsErrors](../../models/errors/clearplaylistcontentsplaylistserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/createplaylistbadrequest.md b/docs/models/errors/createplaylistbadrequest.md deleted file mode 100644 index b363dc7..0000000 --- a/docs/models/errors/createplaylistbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# CreatePlaylistBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `errors` | List[[errors.CreatePlaylistErrors](../../models/errors/createplaylisterrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/createplaylisterrors.md b/docs/models/errors/createplaylisterrors.md deleted file mode 100644 index 937c09f..0000000 --- a/docs/models/errors/createplaylisterrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# CreatePlaylistErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/createplaylistplaylistserrors.md b/docs/models/errors/createplaylistplaylistserrors.md deleted file mode 100644 index f32df74..0000000 --- a/docs/models/errors/createplaylistplaylistserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# CreatePlaylistPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/createplaylistunauthorized.md b/docs/models/errors/createplaylistunauthorized.md deleted file mode 100644 index eec67ee..0000000 --- a/docs/models/errors/createplaylistunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# CreatePlaylistUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.CreatePlaylistPlaylistsErrors](../../models/errors/createplaylistplaylistserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/deletelibrarybadrequest.md b/docs/models/errors/deletelibrarybadrequest.md deleted file mode 100644 index 4773a2f..0000000 --- a/docs/models/errors/deletelibrarybadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# DeleteLibraryBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `errors` | List[[errors.DeleteLibraryErrors](../../models/errors/deletelibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/deletelibraryerrors.md b/docs/models/errors/deletelibraryerrors.md deleted file mode 100644 index 5d1c0af..0000000 --- a/docs/models/errors/deletelibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# DeleteLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/deletelibrarylibraryerrors.md b/docs/models/errors/deletelibrarylibraryerrors.md deleted file mode 100644 index 73b88e1..0000000 --- a/docs/models/errors/deletelibrarylibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# DeleteLibraryLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/deletelibraryunauthorized.md b/docs/models/errors/deletelibraryunauthorized.md deleted file mode 100644 index 38bea12..0000000 --- a/docs/models/errors/deletelibraryunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# DeleteLibraryUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.DeleteLibraryLibraryErrors](../../models/errors/deletelibrarylibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/deleteplaylistbadrequest.md b/docs/models/errors/deleteplaylistbadrequest.md deleted file mode 100644 index a88acb5..0000000 --- a/docs/models/errors/deleteplaylistbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# DeletePlaylistBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `errors` | List[[errors.DeletePlaylistErrors](../../models/errors/deleteplaylisterrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/deleteplaylisterrors.md b/docs/models/errors/deleteplaylisterrors.md deleted file mode 100644 index b50379b..0000000 --- a/docs/models/errors/deleteplaylisterrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# DeletePlaylistErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/deleteplaylistplaylistserrors.md b/docs/models/errors/deleteplaylistplaylistserrors.md deleted file mode 100644 index 750f4af..0000000 --- a/docs/models/errors/deleteplaylistplaylistserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# DeletePlaylistPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/deleteplaylistunauthorized.md b/docs/models/errors/deleteplaylistunauthorized.md deleted file mode 100644 index d834e3b..0000000 --- a/docs/models/errors/deleteplaylistunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# DeletePlaylistUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.DeletePlaylistPlaylistsErrors](../../models/errors/deleteplaylistplaylistserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/enablepapertrailbadrequest.md b/docs/models/errors/enablepapertrailbadrequest.md deleted file mode 100644 index 0f00a37..0000000 --- a/docs/models/errors/enablepapertrailbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# EnablePaperTrailBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `errors` | List[[errors.EnablePaperTrailErrors](../../models/errors/enablepapertrailerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/enablepapertrailerrors.md b/docs/models/errors/enablepapertrailerrors.md deleted file mode 100644 index c5d26da..0000000 --- a/docs/models/errors/enablepapertrailerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# EnablePaperTrailErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/enablepapertraillogerrors.md b/docs/models/errors/enablepapertraillogerrors.md deleted file mode 100644 index 34cbd7d..0000000 --- a/docs/models/errors/enablepapertraillogerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# EnablePaperTrailLogErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/enablepapertrailunauthorized.md b/docs/models/errors/enablepapertrailunauthorized.md deleted file mode 100644 index 4b82389..0000000 --- a/docs/models/errors/enablepapertrailunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# EnablePaperTrailUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.EnablePaperTrailLogErrors](../../models/errors/enablepapertraillogerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/errors.md b/docs/models/errors/errors.md deleted file mode 100644 index 82ca5ec..0000000 --- a/docs/models/errors/errors.md +++ /dev/null @@ -1,10 +0,0 @@ -# Errors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getactorslibrarybadrequest.md b/docs/models/errors/getactorslibrarybadrequest.md deleted file mode 100644 index 7d47646..0000000 --- a/docs/models/errors/getactorslibrarybadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetActorsLibraryBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetActorsLibraryErrors](../../models/errors/getactorslibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getactorslibraryerrors.md b/docs/models/errors/getactorslibraryerrors.md deleted file mode 100644 index 6148c67..0000000 --- a/docs/models/errors/getactorslibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetActorsLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getactorslibrarylibraryerrors.md b/docs/models/errors/getactorslibrarylibraryerrors.md deleted file mode 100644 index d2031e4..0000000 --- a/docs/models/errors/getactorslibrarylibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetActorsLibraryLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getactorslibraryunauthorized.md b/docs/models/errors/getactorslibraryunauthorized.md deleted file mode 100644 index 9af288d..0000000 --- a/docs/models/errors/getactorslibraryunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetActorsLibraryUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetActorsLibraryLibraryErrors](../../models/errors/getactorslibrarylibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getalllibrariesbadrequest.md b/docs/models/errors/getalllibrariesbadrequest.md deleted file mode 100644 index f43fb21..0000000 --- a/docs/models/errors/getalllibrariesbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetAllLibrariesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetAllLibrariesErrors](../../models/errors/getalllibrarieserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getalllibrarieserrors.md b/docs/models/errors/getalllibrarieserrors.md deleted file mode 100644 index 03065f7..0000000 --- a/docs/models/errors/getalllibrarieserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetAllLibrariesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getalllibrarieslibraryerrors.md b/docs/models/errors/getalllibrarieslibraryerrors.md deleted file mode 100644 index 7e76512..0000000 --- a/docs/models/errors/getalllibrarieslibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetAllLibrariesLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getalllibrariesunauthorized.md b/docs/models/errors/getalllibrariesunauthorized.md deleted file mode 100644 index fbf12ab..0000000 --- a/docs/models/errors/getalllibrariesunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetAllLibrariesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetAllLibrariesLibraryErrors](../../models/errors/getalllibrarieslibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getavailableclientsbadrequest.md b/docs/models/errors/getavailableclientsbadrequest.md deleted file mode 100644 index 036cdf9..0000000 --- a/docs/models/errors/getavailableclientsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetAvailableClientsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetAvailableClientsErrors](../../models/errors/getavailableclientserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getavailableclientserrors.md b/docs/models/errors/getavailableclientserrors.md deleted file mode 100644 index 002780b..0000000 --- a/docs/models/errors/getavailableclientserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetAvailableClientsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getavailableclientsservererrors.md b/docs/models/errors/getavailableclientsservererrors.md deleted file mode 100644 index 5cbcc80..0000000 --- a/docs/models/errors/getavailableclientsservererrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetAvailableClientsServerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getavailableclientsunauthorized.md b/docs/models/errors/getavailableclientsunauthorized.md deleted file mode 100644 index 1f61fe6..0000000 --- a/docs/models/errors/getavailableclientsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetAvailableClientsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetAvailableClientsServerErrors](../../models/errors/getavailableclientsservererrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getbandwidthstatisticsbadrequest.md b/docs/models/errors/getbandwidthstatisticsbadrequest.md deleted file mode 100644 index d6069ec..0000000 --- a/docs/models/errors/getbandwidthstatisticsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetBandwidthStatisticsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetBandwidthStatisticsErrors](../../models/errors/getbandwidthstatisticserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getbandwidthstatisticserrors.md b/docs/models/errors/getbandwidthstatisticserrors.md deleted file mode 100644 index 2e149a2..0000000 --- a/docs/models/errors/getbandwidthstatisticserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetBandwidthStatisticsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getbandwidthstatisticsstatisticserrors.md b/docs/models/errors/getbandwidthstatisticsstatisticserrors.md deleted file mode 100644 index ba6218e..0000000 --- a/docs/models/errors/getbandwidthstatisticsstatisticserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetBandwidthStatisticsStatisticsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getbandwidthstatisticsunauthorized.md b/docs/models/errors/getbandwidthstatisticsunauthorized.md deleted file mode 100644 index b702492..0000000 --- a/docs/models/errors/getbandwidthstatisticsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetBandwidthStatisticsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetBandwidthStatisticsStatisticsErrors](../../models/errors/getbandwidthstatisticsstatisticserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getbannerimagebadrequest.md b/docs/models/errors/getbannerimagebadrequest.md deleted file mode 100644 index e8e821f..0000000 --- a/docs/models/errors/getbannerimagebadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetBannerImageBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetBannerImageErrors](../../models/errors/getbannerimageerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getbannerimageerrors.md b/docs/models/errors/getbannerimageerrors.md deleted file mode 100644 index 2aba21d..0000000 --- a/docs/models/errors/getbannerimageerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetBannerImageErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getbannerimagemediaerrors.md b/docs/models/errors/getbannerimagemediaerrors.md deleted file mode 100644 index 6843399..0000000 --- a/docs/models/errors/getbannerimagemediaerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetBannerImageMediaErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getbannerimageunauthorized.md b/docs/models/errors/getbannerimageunauthorized.md deleted file mode 100644 index ec0d646..0000000 --- a/docs/models/errors/getbannerimageunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetBannerImageUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetBannerImageMediaErrors](../../models/errors/getbannerimagemediaerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getbutlertasksbadrequest.md b/docs/models/errors/getbutlertasksbadrequest.md deleted file mode 100644 index f638d08..0000000 --- a/docs/models/errors/getbutlertasksbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetButlerTasksBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetButlerTasksErrors](../../models/errors/getbutlertaskserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getbutlertasksbutlererrors.md b/docs/models/errors/getbutlertasksbutlererrors.md deleted file mode 100644 index 7c7cff2..0000000 --- a/docs/models/errors/getbutlertasksbutlererrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetButlerTasksButlerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getbutlertaskserrors.md b/docs/models/errors/getbutlertaskserrors.md deleted file mode 100644 index 1b63cc4..0000000 --- a/docs/models/errors/getbutlertaskserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetButlerTasksErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getbutlertasksunauthorized.md b/docs/models/errors/getbutlertasksunauthorized.md deleted file mode 100644 index 1356005..0000000 --- a/docs/models/errors/getbutlertasksunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetButlerTasksUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetButlerTasksButlerErrors](../../models/errors/getbutlertasksbutlererrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getcompanionsdatabadrequest.md b/docs/models/errors/getcompanionsdatabadrequest.md deleted file mode 100644 index 25f00f9..0000000 --- a/docs/models/errors/getcompanionsdatabadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetCompanionsDataBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetCompanionsDataErrors](../../models/errors/getcompanionsdataerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getcompanionsdataerrors.md b/docs/models/errors/getcompanionsdataerrors.md deleted file mode 100644 index 1d2b2a4..0000000 --- a/docs/models/errors/getcompanionsdataerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetCompanionsDataErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getcompanionsdataplexerrors.md b/docs/models/errors/getcompanionsdataplexerrors.md deleted file mode 100644 index 5dd6cf7..0000000 --- a/docs/models/errors/getcompanionsdataplexerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetCompanionsDataPlexErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getcompanionsdataunauthorized.md b/docs/models/errors/getcompanionsdataunauthorized.md deleted file mode 100644 index 37c34f7..0000000 --- a/docs/models/errors/getcompanionsdataunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetCompanionsDataUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetCompanionsDataPlexErrors](../../models/errors/getcompanionsdataplexerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getcountrieslibrarybadrequest.md b/docs/models/errors/getcountrieslibrarybadrequest.md deleted file mode 100644 index be70fba..0000000 --- a/docs/models/errors/getcountrieslibrarybadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetCountriesLibraryBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetCountriesLibraryErrors](../../models/errors/getcountrieslibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getcountrieslibraryerrors.md b/docs/models/errors/getcountrieslibraryerrors.md deleted file mode 100644 index a404937..0000000 --- a/docs/models/errors/getcountrieslibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetCountriesLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getcountrieslibrarylibraryerrors.md b/docs/models/errors/getcountrieslibrarylibraryerrors.md deleted file mode 100644 index 2ff8f84..0000000 --- a/docs/models/errors/getcountrieslibrarylibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetCountriesLibraryLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getcountrieslibraryunauthorized.md b/docs/models/errors/getcountrieslibraryunauthorized.md deleted file mode 100644 index 9a56acc..0000000 --- a/docs/models/errors/getcountrieslibraryunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetCountriesLibraryUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetCountriesLibraryLibraryErrors](../../models/errors/getcountrieslibrarylibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getdevicesbadrequest.md b/docs/models/errors/getdevicesbadrequest.md deleted file mode 100644 index 434f803..0000000 --- a/docs/models/errors/getdevicesbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetDevicesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | -| `errors` | List[[errors.GetDevicesErrors](../../models/errors/getdeviceserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getdeviceserrors.md b/docs/models/errors/getdeviceserrors.md deleted file mode 100644 index edd512b..0000000 --- a/docs/models/errors/getdeviceserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetDevicesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getdevicesservererrors.md b/docs/models/errors/getdevicesservererrors.md deleted file mode 100644 index ab7177f..0000000 --- a/docs/models/errors/getdevicesservererrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetDevicesServerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getdevicesunauthorized.md b/docs/models/errors/getdevicesunauthorized.md deleted file mode 100644 index 0402a8d..0000000 --- a/docs/models/errors/getdevicesunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetDevicesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetDevicesServerErrors](../../models/errors/getdevicesservererrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getfilehashbadrequest.md b/docs/models/errors/getfilehashbadrequest.md deleted file mode 100644 index fe91122..0000000 --- a/docs/models/errors/getfilehashbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetFileHashBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `errors` | List[[errors.GetFileHashErrors](../../models/errors/getfilehasherrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getfilehasherrors.md b/docs/models/errors/getfilehasherrors.md deleted file mode 100644 index 134f301..0000000 --- a/docs/models/errors/getfilehasherrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetFileHashErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getfilehashlibraryerrors.md b/docs/models/errors/getfilehashlibraryerrors.md deleted file mode 100644 index 6181aa1..0000000 --- a/docs/models/errors/getfilehashlibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetFileHashLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getfilehashunauthorized.md b/docs/models/errors/getfilehashunauthorized.md deleted file mode 100644 index 02cf27f..0000000 --- a/docs/models/errors/getfilehashunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetFileHashUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetFileHashLibraryErrors](../../models/errors/getfilehashlibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getgenreslibrarybadrequest.md b/docs/models/errors/getgenreslibrarybadrequest.md deleted file mode 100644 index eeef321..0000000 --- a/docs/models/errors/getgenreslibrarybadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGenresLibraryBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetGenresLibraryErrors](../../models/errors/getgenreslibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getgenreslibraryerrors.md b/docs/models/errors/getgenreslibraryerrors.md deleted file mode 100644 index 0c524a2..0000000 --- a/docs/models/errors/getgenreslibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGenresLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getgenreslibrarylibraryerrors.md b/docs/models/errors/getgenreslibrarylibraryerrors.md deleted file mode 100644 index e7f2d6c..0000000 --- a/docs/models/errors/getgenreslibrarylibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGenresLibraryLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getgenreslibraryunauthorized.md b/docs/models/errors/getgenreslibraryunauthorized.md deleted file mode 100644 index 93b78b8..0000000 --- a/docs/models/errors/getgenreslibraryunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGenresLibraryUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetGenresLibraryLibraryErrors](../../models/errors/getgenreslibrarylibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getgeodatabadrequest.md b/docs/models/errors/getgeodatabadrequest.md deleted file mode 100644 index 363975d..0000000 --- a/docs/models/errors/getgeodatabadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGeoDataBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | -| `errors` | List[[errors.GetGeoDataErrors](../../models/errors/getgeodataerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getgeodataerrors.md b/docs/models/errors/getgeodataerrors.md deleted file mode 100644 index b048eeb..0000000 --- a/docs/models/errors/getgeodataerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGeoDataErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getgeodataplexerrors.md b/docs/models/errors/getgeodataplexerrors.md deleted file mode 100644 index 3bdd44e..0000000 --- a/docs/models/errors/getgeodataplexerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGeoDataPlexErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getgeodataunauthorized.md b/docs/models/errors/getgeodataunauthorized.md deleted file mode 100644 index 9ed3033..0000000 --- a/docs/models/errors/getgeodataunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGeoDataUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetGeoDataPlexErrors](../../models/errors/getgeodataplexerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getglobalhubsbadrequest.md b/docs/models/errors/getglobalhubsbadrequest.md deleted file mode 100644 index 007cd59..0000000 --- a/docs/models/errors/getglobalhubsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGlobalHubsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetGlobalHubsErrors](../../models/errors/getglobalhubserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getglobalhubserrors.md b/docs/models/errors/getglobalhubserrors.md deleted file mode 100644 index a14202c..0000000 --- a/docs/models/errors/getglobalhubserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGlobalHubsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getglobalhubshubserrors.md b/docs/models/errors/getglobalhubshubserrors.md deleted file mode 100644 index afec174..0000000 --- a/docs/models/errors/getglobalhubshubserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGlobalHubsHubsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getglobalhubsunauthorized.md b/docs/models/errors/getglobalhubsunauthorized.md deleted file mode 100644 index 240491e..0000000 --- a/docs/models/errors/getglobalhubsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGlobalHubsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetGlobalHubsHubsErrors](../../models/errors/getglobalhubshubserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/gethomedatabadrequest.md b/docs/models/errors/gethomedatabadrequest.md deleted file mode 100644 index b2f8c12..0000000 --- a/docs/models/errors/gethomedatabadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetHomeDataBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `errors` | List[[errors.GetHomeDataErrors](../../models/errors/gethomedataerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/gethomedataerrors.md b/docs/models/errors/gethomedataerrors.md deleted file mode 100644 index d9284c6..0000000 --- a/docs/models/errors/gethomedataerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetHomeDataErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/gethomedataplexerrors.md b/docs/models/errors/gethomedataplexerrors.md deleted file mode 100644 index 3bb1ba9..0000000 --- a/docs/models/errors/gethomedataplexerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetHomeDataPlexErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/gethomedataunauthorized.md b/docs/models/errors/gethomedataunauthorized.md deleted file mode 100644 index 714aef8..0000000 --- a/docs/models/errors/gethomedataunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetHomeDataUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetHomeDataPlexErrors](../../models/errors/gethomedataplexerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getlibrarydetailsbadrequest.md b/docs/models/errors/getlibrarydetailsbadrequest.md deleted file mode 100644 index 5a56796..0000000 --- a/docs/models/errors/getlibrarydetailsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryDetailsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetLibraryDetailsErrors](../../models/errors/getlibrarydetailserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getlibrarydetailserrors.md b/docs/models/errors/getlibrarydetailserrors.md deleted file mode 100644 index 1565a31..0000000 --- a/docs/models/errors/getlibrarydetailserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryDetailsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getlibrarydetailslibraryerrors.md b/docs/models/errors/getlibrarydetailslibraryerrors.md deleted file mode 100644 index ece323b..0000000 --- a/docs/models/errors/getlibrarydetailslibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryDetailsLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getlibrarydetailsunauthorized.md b/docs/models/errors/getlibrarydetailsunauthorized.md deleted file mode 100644 index 81b356f..0000000 --- a/docs/models/errors/getlibrarydetailsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryDetailsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetLibraryDetailsLibraryErrors](../../models/errors/getlibrarydetailslibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getlibraryhubsbadrequest.md b/docs/models/errors/getlibraryhubsbadrequest.md deleted file mode 100644 index 511a6be..0000000 --- a/docs/models/errors/getlibraryhubsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryHubsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetLibraryHubsErrors](../../models/errors/getlibraryhubserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getlibraryhubserrors.md b/docs/models/errors/getlibraryhubserrors.md deleted file mode 100644 index ef9e9ec..0000000 --- a/docs/models/errors/getlibraryhubserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryHubsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getlibraryhubshubserrors.md b/docs/models/errors/getlibraryhubshubserrors.md deleted file mode 100644 index f41ee4f..0000000 --- a/docs/models/errors/getlibraryhubshubserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryHubsHubsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getlibraryhubsunauthorized.md b/docs/models/errors/getlibraryhubsunauthorized.md deleted file mode 100644 index 68f3035..0000000 --- a/docs/models/errors/getlibraryhubsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryHubsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetLibraryHubsHubsErrors](../../models/errors/getlibraryhubshubserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getlibraryitemsbadrequest.md b/docs/models/errors/getlibraryitemsbadrequest.md deleted file mode 100644 index 844b2a5..0000000 --- a/docs/models/errors/getlibraryitemsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryItemsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetLibraryItemsErrors](../../models/errors/getlibraryitemserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getlibraryitemserrors.md b/docs/models/errors/getlibraryitemserrors.md deleted file mode 100644 index 6d6e4dc..0000000 --- a/docs/models/errors/getlibraryitemserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getlibraryitemslibraryerrors.md b/docs/models/errors/getlibraryitemslibraryerrors.md deleted file mode 100644 index 41eee90..0000000 --- a/docs/models/errors/getlibraryitemslibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getlibraryitemsunauthorized.md b/docs/models/errors/getlibraryitemsunauthorized.md deleted file mode 100644 index c05ba77..0000000 --- a/docs/models/errors/getlibraryitemsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryItemsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetLibraryItemsLibraryErrors](../../models/errors/getlibraryitemslibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getlibrarysectionsallbadrequest.md b/docs/models/errors/getlibrarysectionsallbadrequest.md deleted file mode 100644 index 80bc2da..0000000 --- a/docs/models/errors/getlibrarysectionsallbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibrarySectionsAllBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetLibrarySectionsAllErrors](../../models/errors/getlibrarysectionsallerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getlibrarysectionsallerrors.md b/docs/models/errors/getlibrarysectionsallerrors.md deleted file mode 100644 index 50c3abc..0000000 --- a/docs/models/errors/getlibrarysectionsallerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibrarySectionsAllErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getlibrarysectionsalllibraryerrors.md b/docs/models/errors/getlibrarysectionsalllibraryerrors.md deleted file mode 100644 index e53298a..0000000 --- a/docs/models/errors/getlibrarysectionsalllibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibrarySectionsAllLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getlibrarysectionsallunauthorized.md b/docs/models/errors/getlibrarysectionsallunauthorized.md deleted file mode 100644 index 07d07fd..0000000 --- a/docs/models/errors/getlibrarysectionsallunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibrarySectionsAllUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetLibrarySectionsAllLibraryErrors](../../models/errors/getlibrarysectionsalllibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getmediametadatabadrequest.md b/docs/models/errors/getmediametadatabadrequest.md deleted file mode 100644 index 78841de..0000000 --- a/docs/models/errors/getmediametadatabadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaMetaDataBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetMediaMetaDataErrors](../../models/errors/getmediametadataerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getmediametadataerrors.md b/docs/models/errors/getmediametadataerrors.md deleted file mode 100644 index d15837f..0000000 --- a/docs/models/errors/getmediametadataerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaMetaDataErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getmediametadatalibraryerrors.md b/docs/models/errors/getmediametadatalibraryerrors.md deleted file mode 100644 index a90e8d5..0000000 --- a/docs/models/errors/getmediametadatalibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaMetaDataLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getmediametadataunauthorized.md b/docs/models/errors/getmediametadataunauthorized.md deleted file mode 100644 index a59c09e..0000000 --- a/docs/models/errors/getmediametadataunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaMetaDataUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetMediaMetaDataLibraryErrors](../../models/errors/getmediametadatalibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getmediaprovidersbadrequest.md b/docs/models/errors/getmediaprovidersbadrequest.md deleted file mode 100644 index 8c018b0..0000000 --- a/docs/models/errors/getmediaprovidersbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaProvidersBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetMediaProvidersErrors](../../models/errors/getmediaproviderserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getmediaproviderserrors.md b/docs/models/errors/getmediaproviderserrors.md deleted file mode 100644 index 4929359..0000000 --- a/docs/models/errors/getmediaproviderserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaProvidersErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getmediaprovidersservererrors.md b/docs/models/errors/getmediaprovidersservererrors.md deleted file mode 100644 index 608630f..0000000 --- a/docs/models/errors/getmediaprovidersservererrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaProvidersServerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getmediaprovidersunauthorized.md b/docs/models/errors/getmediaprovidersunauthorized.md deleted file mode 100644 index e8232f2..0000000 --- a/docs/models/errors/getmediaprovidersunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaProvidersUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetMediaProvidersServerErrors](../../models/errors/getmediaprovidersservererrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getmetadatachildrenbadrequest.md b/docs/models/errors/getmetadatachildrenbadrequest.md deleted file mode 100644 index 5edeff8..0000000 --- a/docs/models/errors/getmetadatachildrenbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMetadataChildrenBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetMetadataChildrenErrors](../../models/errors/getmetadatachildrenerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getmetadatachildrenerrors.md b/docs/models/errors/getmetadatachildrenerrors.md deleted file mode 100644 index 76d2655..0000000 --- a/docs/models/errors/getmetadatachildrenerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMetadataChildrenErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getmetadatachildrenlibraryerrors.md b/docs/models/errors/getmetadatachildrenlibraryerrors.md deleted file mode 100644 index 637056f..0000000 --- a/docs/models/errors/getmetadatachildrenlibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMetadataChildrenLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getmetadatachildrenunauthorized.md b/docs/models/errors/getmetadatachildrenunauthorized.md deleted file mode 100644 index 37de74c..0000000 --- a/docs/models/errors/getmetadatachildrenunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMetadataChildrenUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetMetadataChildrenLibraryErrors](../../models/errors/getmetadatachildrenlibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getmyplexaccountbadrequest.md b/docs/models/errors/getmyplexaccountbadrequest.md deleted file mode 100644 index d63c981..0000000 --- a/docs/models/errors/getmyplexaccountbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMyPlexAccountBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetMyPlexAccountErrors](../../models/errors/getmyplexaccounterrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getmyplexaccounterrors.md b/docs/models/errors/getmyplexaccounterrors.md deleted file mode 100644 index 69f4283..0000000 --- a/docs/models/errors/getmyplexaccounterrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMyPlexAccountErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getmyplexaccountservererrors.md b/docs/models/errors/getmyplexaccountservererrors.md deleted file mode 100644 index b388759..0000000 --- a/docs/models/errors/getmyplexaccountservererrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMyPlexAccountServerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getmyplexaccountunauthorized.md b/docs/models/errors/getmyplexaccountunauthorized.md deleted file mode 100644 index b057ea8..0000000 --- a/docs/models/errors/getmyplexaccountunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMyPlexAccountUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetMyPlexAccountServerErrors](../../models/errors/getmyplexaccountservererrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getpinbadrequest.md b/docs/models/errors/getpinbadrequest.md deleted file mode 100644 index f6f77b0..0000000 --- a/docs/models/errors/getpinbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPinBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| `errors` | List[[errors.GetPinErrors](../../models/errors/getpinerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getpinerrors.md b/docs/models/errors/getpinerrors.md deleted file mode 100644 index 47ff281..0000000 --- a/docs/models/errors/getpinerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPinErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getplaylistbadrequest.md b/docs/models/errors/getplaylistbadrequest.md deleted file mode 100644 index 33bf08a..0000000 --- a/docs/models/errors/getplaylistbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPlaylistBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `errors` | List[[errors.GetPlaylistErrors](../../models/errors/getplaylisterrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getplaylistcontentsbadrequest.md b/docs/models/errors/getplaylistcontentsbadrequest.md deleted file mode 100644 index f260e2f..0000000 --- a/docs/models/errors/getplaylistcontentsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPlaylistContentsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetPlaylistContentsErrors](../../models/errors/getplaylistcontentserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getplaylistcontentserrors.md b/docs/models/errors/getplaylistcontentserrors.md deleted file mode 100644 index 2f9833d..0000000 --- a/docs/models/errors/getplaylistcontentserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistContentsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getplaylistcontentsplaylistserrors.md b/docs/models/errors/getplaylistcontentsplaylistserrors.md deleted file mode 100644 index 874257b..0000000 --- a/docs/models/errors/getplaylistcontentsplaylistserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistContentsPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getplaylistcontentsunauthorized.md b/docs/models/errors/getplaylistcontentsunauthorized.md deleted file mode 100644 index e86a7e7..0000000 --- a/docs/models/errors/getplaylistcontentsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPlaylistContentsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetPlaylistContentsPlaylistsErrors](../../models/errors/getplaylistcontentsplaylistserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getplaylisterrors.md b/docs/models/errors/getplaylisterrors.md deleted file mode 100644 index 3e9b6e4..0000000 --- a/docs/models/errors/getplaylisterrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getplaylistplaylistserrors.md b/docs/models/errors/getplaylistplaylistserrors.md deleted file mode 100644 index a23444c..0000000 --- a/docs/models/errors/getplaylistplaylistserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getplaylistsbadrequest.md b/docs/models/errors/getplaylistsbadrequest.md deleted file mode 100644 index 24daa94..0000000 --- a/docs/models/errors/getplaylistsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPlaylistsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `errors` | List[[errors.GetPlaylistsErrors](../../models/errors/getplaylistserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getplaylistserrors.md b/docs/models/errors/getplaylistserrors.md deleted file mode 100644 index 059e267..0000000 --- a/docs/models/errors/getplaylistserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getplaylistsplaylistserrors.md b/docs/models/errors/getplaylistsplaylistserrors.md deleted file mode 100644 index 20c30a1..0000000 --- a/docs/models/errors/getplaylistsplaylistserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistsPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getplaylistsunauthorized.md b/docs/models/errors/getplaylistsunauthorized.md deleted file mode 100644 index 112b9cf..0000000 --- a/docs/models/errors/getplaylistsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPlaylistsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetPlaylistsPlaylistsErrors](../../models/errors/getplaylistsplaylistserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getplaylistunauthorized.md b/docs/models/errors/getplaylistunauthorized.md deleted file mode 100644 index cdf48f1..0000000 --- a/docs/models/errors/getplaylistunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPlaylistUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetPlaylistPlaylistsErrors](../../models/errors/getplaylistplaylistserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getrecentlyaddedlibrarybadrequest.md b/docs/models/errors/getrecentlyaddedlibrarybadrequest.md deleted file mode 100644 index 759c4d2..0000000 --- a/docs/models/errors/getrecentlyaddedlibrarybadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetRecentlyAddedLibraryBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetRecentlyAddedLibraryErrors](../../models/errors/getrecentlyaddedlibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getrecentlyaddedlibraryerrors.md b/docs/models/errors/getrecentlyaddedlibraryerrors.md deleted file mode 100644 index ec4df4f..0000000 --- a/docs/models/errors/getrecentlyaddedlibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRecentlyAddedLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getrecentlyaddedlibrarylibraryerrors.md b/docs/models/errors/getrecentlyaddedlibrarylibraryerrors.md deleted file mode 100644 index 3587f42..0000000 --- a/docs/models/errors/getrecentlyaddedlibrarylibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRecentlyAddedLibraryLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getrecentlyaddedlibraryunauthorized.md b/docs/models/errors/getrecentlyaddedlibraryunauthorized.md deleted file mode 100644 index c1c5cfc..0000000 --- a/docs/models/errors/getrecentlyaddedlibraryunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetRecentlyAddedLibraryUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetRecentlyAddedLibraryLibraryErrors](../../models/errors/getrecentlyaddedlibrarylibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getrefreshlibrarymetadatabadrequest.md b/docs/models/errors/getrefreshlibrarymetadatabadrequest.md deleted file mode 100644 index b560a40..0000000 --- a/docs/models/errors/getrefreshlibrarymetadatabadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetRefreshLibraryMetadataBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetRefreshLibraryMetadataErrors](../../models/errors/getrefreshlibrarymetadataerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getrefreshlibrarymetadataerrors.md b/docs/models/errors/getrefreshlibrarymetadataerrors.md deleted file mode 100644 index fe48081..0000000 --- a/docs/models/errors/getrefreshlibrarymetadataerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRefreshLibraryMetadataErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getrefreshlibrarymetadatalibraryerrors.md b/docs/models/errors/getrefreshlibrarymetadatalibraryerrors.md deleted file mode 100644 index c01dc84..0000000 --- a/docs/models/errors/getrefreshlibrarymetadatalibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRefreshLibraryMetadataLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getrefreshlibrarymetadataunauthorized.md b/docs/models/errors/getrefreshlibrarymetadataunauthorized.md deleted file mode 100644 index 38468c4..0000000 --- a/docs/models/errors/getrefreshlibrarymetadataunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetRefreshLibraryMetadataUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetRefreshLibraryMetadataLibraryErrors](../../models/errors/getrefreshlibrarymetadatalibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getresizedphotobadrequest.md b/docs/models/errors/getresizedphotobadrequest.md deleted file mode 100644 index 7bad1fb..0000000 --- a/docs/models/errors/getresizedphotobadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetResizedPhotoBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetResizedPhotoErrors](../../models/errors/getresizedphotoerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getresizedphotoerrors.md b/docs/models/errors/getresizedphotoerrors.md deleted file mode 100644 index d687471..0000000 --- a/docs/models/errors/getresizedphotoerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetResizedPhotoErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getresizedphotoservererrors.md b/docs/models/errors/getresizedphotoservererrors.md deleted file mode 100644 index 76d02ab..0000000 --- a/docs/models/errors/getresizedphotoservererrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetResizedPhotoServerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getresizedphotounauthorized.md b/docs/models/errors/getresizedphotounauthorized.md deleted file mode 100644 index cf0bef2..0000000 --- a/docs/models/errors/getresizedphotounauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetResizedPhotoUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetResizedPhotoServerErrors](../../models/errors/getresizedphotoservererrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getresourcesstatisticsbadrequest.md b/docs/models/errors/getresourcesstatisticsbadrequest.md deleted file mode 100644 index fe65e54..0000000 --- a/docs/models/errors/getresourcesstatisticsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetResourcesStatisticsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetResourcesStatisticsErrors](../../models/errors/getresourcesstatisticserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getresourcesstatisticserrors.md b/docs/models/errors/getresourcesstatisticserrors.md deleted file mode 100644 index a53cb54..0000000 --- a/docs/models/errors/getresourcesstatisticserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetResourcesStatisticsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getresourcesstatisticsstatisticserrors.md b/docs/models/errors/getresourcesstatisticsstatisticserrors.md deleted file mode 100644 index f66ba7a..0000000 --- a/docs/models/errors/getresourcesstatisticsstatisticserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetResourcesStatisticsStatisticsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getresourcesstatisticsunauthorized.md b/docs/models/errors/getresourcesstatisticsunauthorized.md deleted file mode 100644 index 3370988..0000000 --- a/docs/models/errors/getresourcesstatisticsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetResourcesStatisticsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetResourcesStatisticsStatisticsErrors](../../models/errors/getresourcesstatisticsstatisticserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getsearchalllibrariesbadrequest.md b/docs/models/errors/getsearchalllibrariesbadrequest.md deleted file mode 100644 index 7a2a5b4..0000000 --- a/docs/models/errors/getsearchalllibrariesbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchAllLibrariesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetSearchAllLibrariesErrors](../../models/errors/getsearchalllibrarieserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getsearchalllibrarieserrors.md b/docs/models/errors/getsearchalllibrarieserrors.md deleted file mode 100644 index ff39c6c..0000000 --- a/docs/models/errors/getsearchalllibrarieserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchAllLibrariesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getsearchalllibrarieslibraryerrors.md b/docs/models/errors/getsearchalllibrarieslibraryerrors.md deleted file mode 100644 index 1b1ee19..0000000 --- a/docs/models/errors/getsearchalllibrarieslibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchAllLibrariesLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getsearchalllibrariesunauthorized.md b/docs/models/errors/getsearchalllibrariesunauthorized.md deleted file mode 100644 index 731921b..0000000 --- a/docs/models/errors/getsearchalllibrariesunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchAllLibrariesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetSearchAllLibrariesLibraryErrors](../../models/errors/getsearchalllibrarieslibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getsearchlibrarybadrequest.md b/docs/models/errors/getsearchlibrarybadrequest.md deleted file mode 100644 index 8731a4f..0000000 --- a/docs/models/errors/getsearchlibrarybadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchLibraryBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetSearchLibraryErrors](../../models/errors/getsearchlibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getsearchlibraryerrors.md b/docs/models/errors/getsearchlibraryerrors.md deleted file mode 100644 index 23e3e7a..0000000 --- a/docs/models/errors/getsearchlibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getsearchlibrarylibraryerrors.md b/docs/models/errors/getsearchlibrarylibraryerrors.md deleted file mode 100644 index 54e41b0..0000000 --- a/docs/models/errors/getsearchlibrarylibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchLibraryLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getsearchlibraryunauthorized.md b/docs/models/errors/getsearchlibraryunauthorized.md deleted file mode 100644 index 322c19e..0000000 --- a/docs/models/errors/getsearchlibraryunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchLibraryUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetSearchLibraryLibraryErrors](../../models/errors/getsearchlibrarylibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getsearchresultsbadrequest.md b/docs/models/errors/getsearchresultsbadrequest.md deleted file mode 100644 index a043896..0000000 --- a/docs/models/errors/getsearchresultsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchResultsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetSearchResultsErrors](../../models/errors/getsearchresultserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getsearchresultserrors.md b/docs/models/errors/getsearchresultserrors.md deleted file mode 100644 index 4a5b0a7..0000000 --- a/docs/models/errors/getsearchresultserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchResultsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getsearchresultssearcherrors.md b/docs/models/errors/getsearchresultssearcherrors.md deleted file mode 100644 index 673fe7e..0000000 --- a/docs/models/errors/getsearchresultssearcherrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchResultsSearchErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getsearchresultsunauthorized.md b/docs/models/errors/getsearchresultsunauthorized.md deleted file mode 100644 index 799479e..0000000 --- a/docs/models/errors/getsearchresultsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchResultsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetSearchResultsSearchErrors](../../models/errors/getsearchresultssearcherrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getserveractivitiesactivitieserrors.md b/docs/models/errors/getserveractivitiesactivitieserrors.md deleted file mode 100644 index 7332daf..0000000 --- a/docs/models/errors/getserveractivitiesactivitieserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerActivitiesActivitiesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getserveractivitiesbadrequest.md b/docs/models/errors/getserveractivitiesbadrequest.md deleted file mode 100644 index 4341016..0000000 --- a/docs/models/errors/getserveractivitiesbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerActivitiesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetServerActivitiesErrors](../../models/errors/getserveractivitieserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getserveractivitieserrors.md b/docs/models/errors/getserveractivitieserrors.md deleted file mode 100644 index 37d7ebf..0000000 --- a/docs/models/errors/getserveractivitieserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerActivitiesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getserveractivitiesunauthorized.md b/docs/models/errors/getserveractivitiesunauthorized.md deleted file mode 100644 index 48d09bd..0000000 --- a/docs/models/errors/getserveractivitiesunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerActivitiesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetServerActivitiesActivitiesErrors](../../models/errors/getserveractivitiesactivitieserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getservercapabilitiesbadrequest.md b/docs/models/errors/getservercapabilitiesbadrequest.md deleted file mode 100644 index 841b25b..0000000 --- a/docs/models/errors/getservercapabilitiesbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerCapabilitiesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `errors` | List[[errors.Errors](../../models/errors/errors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getservercapabilitieserrors.md b/docs/models/errors/getservercapabilitieserrors.md deleted file mode 100644 index c23faff..0000000 --- a/docs/models/errors/getservercapabilitieserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerCapabilitiesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getservercapabilitiesunauthorized.md b/docs/models/errors/getservercapabilitiesunauthorized.md deleted file mode 100644 index 1f9c20e..0000000 --- a/docs/models/errors/getservercapabilitiesunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerCapabilitiesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetServerCapabilitiesErrors](../../models/errors/getservercapabilitieserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getserveridentityrequesttimeout.md b/docs/models/errors/getserveridentityrequesttimeout.md deleted file mode 100644 index f8bd5b0..0000000 --- a/docs/models/errors/getserveridentityrequesttimeout.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetServerIdentityRequestTimeout - -Request Timeout - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 408 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | The server timed out waiting for the request. | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | | \ No newline at end of file diff --git a/docs/models/errors/getserverlistbadrequest.md b/docs/models/errors/getserverlistbadrequest.md deleted file mode 100644 index 3f3ab13..0000000 --- a/docs/models/errors/getserverlistbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerListBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetServerListErrors](../../models/errors/getserverlisterrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getserverlisterrors.md b/docs/models/errors/getserverlisterrors.md deleted file mode 100644 index d9ef895..0000000 --- a/docs/models/errors/getserverlisterrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerListErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getserverlistservererrors.md b/docs/models/errors/getserverlistservererrors.md deleted file mode 100644 index 609baaa..0000000 --- a/docs/models/errors/getserverlistservererrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerListServerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getserverlistunauthorized.md b/docs/models/errors/getserverlistunauthorized.md deleted file mode 100644 index 74da2b3..0000000 --- a/docs/models/errors/getserverlistunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerListUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetServerListServerErrors](../../models/errors/getserverlistservererrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getserverpreferencesbadrequest.md b/docs/models/errors/getserverpreferencesbadrequest.md deleted file mode 100644 index 7d589b1..0000000 --- a/docs/models/errors/getserverpreferencesbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerPreferencesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetServerPreferencesErrors](../../models/errors/getserverpreferenceserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getserverpreferenceserrors.md b/docs/models/errors/getserverpreferenceserrors.md deleted file mode 100644 index 977b25d..0000000 --- a/docs/models/errors/getserverpreferenceserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerPreferencesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getserverpreferencesservererrors.md b/docs/models/errors/getserverpreferencesservererrors.md deleted file mode 100644 index 2ae0d6a..0000000 --- a/docs/models/errors/getserverpreferencesservererrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerPreferencesServerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getserverpreferencesunauthorized.md b/docs/models/errors/getserverpreferencesunauthorized.md deleted file mode 100644 index 0d1e87a..0000000 --- a/docs/models/errors/getserverpreferencesunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerPreferencesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetServerPreferencesServerErrors](../../models/errors/getserverpreferencesservererrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getserverresourcesbadrequest.md b/docs/models/errors/getserverresourcesbadrequest.md deleted file mode 100644 index f18f66b..0000000 --- a/docs/models/errors/getserverresourcesbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerResourcesBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetServerResourcesErrors](../../models/errors/getserverresourceserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getserverresourceserrors.md b/docs/models/errors/getserverresourceserrors.md deleted file mode 100644 index 7d03c64..0000000 --- a/docs/models/errors/getserverresourceserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerResourcesErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getserverresourcesplexerrors.md b/docs/models/errors/getserverresourcesplexerrors.md deleted file mode 100644 index 7e217c6..0000000 --- a/docs/models/errors/getserverresourcesplexerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerResourcesPlexErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getserverresourcesunauthorized.md b/docs/models/errors/getserverresourcesunauthorized.md deleted file mode 100644 index 19e4952..0000000 --- a/docs/models/errors/getserverresourcesunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerResourcesUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetServerResourcesPlexErrors](../../models/errors/getserverresourcesplexerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getsessionhistorybadrequest.md b/docs/models/errors/getsessionhistorybadrequest.md deleted file mode 100644 index 591c33c..0000000 --- a/docs/models/errors/getsessionhistorybadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSessionHistoryBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetSessionHistoryErrors](../../models/errors/getsessionhistoryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getsessionhistoryerrors.md b/docs/models/errors/getsessionhistoryerrors.md deleted file mode 100644 index 9ab97a8..0000000 --- a/docs/models/errors/getsessionhistoryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSessionHistoryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getsessionhistorysessionserrors.md b/docs/models/errors/getsessionhistorysessionserrors.md deleted file mode 100644 index 129332a..0000000 --- a/docs/models/errors/getsessionhistorysessionserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSessionHistorySessionsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getsessionhistoryunauthorized.md b/docs/models/errors/getsessionhistoryunauthorized.md deleted file mode 100644 index b50d068..0000000 --- a/docs/models/errors/getsessionhistoryunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSessionHistoryUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetSessionHistorySessionsErrors](../../models/errors/getsessionhistorysessionserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getsessionsbadrequest.md b/docs/models/errors/getsessionsbadrequest.md deleted file mode 100644 index c2254d9..0000000 --- a/docs/models/errors/getsessionsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSessionsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `errors` | List[[errors.GetSessionsErrors](../../models/errors/getsessionserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getsessionserrors.md b/docs/models/errors/getsessionserrors.md deleted file mode 100644 index 8082fa8..0000000 --- a/docs/models/errors/getsessionserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSessionsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getsessionssessionserrors.md b/docs/models/errors/getsessionssessionserrors.md deleted file mode 100644 index bba6b33..0000000 --- a/docs/models/errors/getsessionssessionserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSessionsSessionsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getsessionsunauthorized.md b/docs/models/errors/getsessionsunauthorized.md deleted file mode 100644 index 0645ab2..0000000 --- a/docs/models/errors/getsessionsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSessionsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetSessionsSessionsErrors](../../models/errors/getsessionssessionserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getsourceconnectioninformationauthenticationerrors.md b/docs/models/errors/getsourceconnectioninformationauthenticationerrors.md deleted file mode 100644 index f9f30f7..0000000 --- a/docs/models/errors/getsourceconnectioninformationauthenticationerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSourceConnectionInformationAuthenticationErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getsourceconnectioninformationbadrequest.md b/docs/models/errors/getsourceconnectioninformationbadrequest.md deleted file mode 100644 index 8025c89..0000000 --- a/docs/models/errors/getsourceconnectioninformationbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSourceConnectionInformationBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetSourceConnectionInformationErrors](../../models/errors/getsourceconnectioninformationerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getsourceconnectioninformationerrors.md b/docs/models/errors/getsourceconnectioninformationerrors.md deleted file mode 100644 index 3868591..0000000 --- a/docs/models/errors/getsourceconnectioninformationerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSourceConnectionInformationErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getsourceconnectioninformationunauthorized.md b/docs/models/errors/getsourceconnectioninformationunauthorized.md deleted file mode 100644 index eadf651..0000000 --- a/docs/models/errors/getsourceconnectioninformationunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSourceConnectionInformationUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetSourceConnectionInformationAuthenticationErrors](../../models/errors/getsourceconnectioninformationauthenticationerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getstatisticsbadrequest.md b/docs/models/errors/getstatisticsbadrequest.md deleted file mode 100644 index 26998b1..0000000 --- a/docs/models/errors/getstatisticsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetStatisticsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetStatisticsErrors](../../models/errors/getstatisticserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getstatisticserrors.md b/docs/models/errors/getstatisticserrors.md deleted file mode 100644 index 81d8d64..0000000 --- a/docs/models/errors/getstatisticserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetStatisticsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getstatisticsstatisticserrors.md b/docs/models/errors/getstatisticsstatisticserrors.md deleted file mode 100644 index 0d2572f..0000000 --- a/docs/models/errors/getstatisticsstatisticserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetStatisticsStatisticsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getstatisticsunauthorized.md b/docs/models/errors/getstatisticsunauthorized.md deleted file mode 100644 index 5f6670d..0000000 --- a/docs/models/errors/getstatisticsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetStatisticsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetStatisticsStatisticsErrors](../../models/errors/getstatisticsstatisticserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getthumbimagebadrequest.md b/docs/models/errors/getthumbimagebadrequest.md deleted file mode 100644 index 59242f8..0000000 --- a/docs/models/errors/getthumbimagebadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetThumbImageBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetThumbImageErrors](../../models/errors/getthumbimageerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getthumbimageerrors.md b/docs/models/errors/getthumbimageerrors.md deleted file mode 100644 index 2bc09cf..0000000 --- a/docs/models/errors/getthumbimageerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetThumbImageErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getthumbimagemediaerrors.md b/docs/models/errors/getthumbimagemediaerrors.md deleted file mode 100644 index 38aff52..0000000 --- a/docs/models/errors/getthumbimagemediaerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetThumbImageMediaErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getthumbimageunauthorized.md b/docs/models/errors/getthumbimageunauthorized.md deleted file mode 100644 index ea46c55..0000000 --- a/docs/models/errors/getthumbimageunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetThumbImageUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetThumbImageMediaErrors](../../models/errors/getthumbimagemediaerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/gettimelinebadrequest.md b/docs/models/errors/gettimelinebadrequest.md deleted file mode 100644 index b891d85..0000000 --- a/docs/models/errors/gettimelinebadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTimelineBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `errors` | List[[errors.GetTimelineErrors](../../models/errors/gettimelineerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/gettimelineerrors.md b/docs/models/errors/gettimelineerrors.md deleted file mode 100644 index 6c65e51..0000000 --- a/docs/models/errors/gettimelineerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTimelineErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/gettimelineunauthorized.md b/docs/models/errors/gettimelineunauthorized.md deleted file mode 100644 index 411e2e8..0000000 --- a/docs/models/errors/gettimelineunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTimelineUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetTimelineVideoErrors](../../models/errors/gettimelinevideoerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/gettimelinevideoerrors.md b/docs/models/errors/gettimelinevideoerrors.md deleted file mode 100644 index a110e8c..0000000 --- a/docs/models/errors/gettimelinevideoerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTimelineVideoErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/gettokenbypinidbadrequest.md b/docs/models/errors/gettokenbypinidbadrequest.md deleted file mode 100644 index fc818b9..0000000 --- a/docs/models/errors/gettokenbypinidbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTokenByPinIDBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetTokenByPinIDErrors](../../models/errors/gettokenbypiniderrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/gettokenbypiniderrors.md b/docs/models/errors/gettokenbypiniderrors.md deleted file mode 100644 index bcbd7f7..0000000 --- a/docs/models/errors/gettokenbypiniderrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTokenByPinIDErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/gettokenbypinidplexerrors.md b/docs/models/errors/gettokenbypinidplexerrors.md deleted file mode 100644 index ad7c85b..0000000 --- a/docs/models/errors/gettokenbypinidplexerrors.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetTokenByPinIDPlexErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1020 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | Code not found or expired | \ No newline at end of file diff --git a/docs/models/errors/gettokenbypinidresponsebody.md b/docs/models/errors/gettokenbypinidresponsebody.md deleted file mode 100644 index b1962d5..0000000 --- a/docs/models/errors/gettokenbypinidresponsebody.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTokenByPinIDResponseBody - -Not Found or Expired - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetTokenByPinIDPlexErrors](../../models/errors/gettokenbypinidplexerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/gettokendetailsauthenticationerrors.md b/docs/models/errors/gettokendetailsauthenticationerrors.md deleted file mode 100644 index 2f38ed6..0000000 --- a/docs/models/errors/gettokendetailsauthenticationerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTokenDetailsAuthenticationErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/gettokendetailsbadrequest.md b/docs/models/errors/gettokendetailsbadrequest.md deleted file mode 100644 index f289e8e..0000000 --- a/docs/models/errors/gettokendetailsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTokenDetailsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetTokenDetailsErrors](../../models/errors/gettokendetailserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/gettokendetailserrors.md b/docs/models/errors/gettokendetailserrors.md deleted file mode 100644 index 2cbb8f2..0000000 --- a/docs/models/errors/gettokendetailserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTokenDetailsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/gettokendetailsunauthorized.md b/docs/models/errors/gettokendetailsunauthorized.md deleted file mode 100644 index 054fde5..0000000 --- a/docs/models/errors/gettokendetailsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTokenDetailsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetTokenDetailsAuthenticationErrors](../../models/errors/gettokendetailsauthenticationerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/gettopwatchedcontentbadrequest.md b/docs/models/errors/gettopwatchedcontentbadrequest.md deleted file mode 100644 index ed50906..0000000 --- a/docs/models/errors/gettopwatchedcontentbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTopWatchedContentBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetTopWatchedContentErrors](../../models/errors/gettopwatchedcontenterrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/gettopwatchedcontenterrors.md b/docs/models/errors/gettopwatchedcontenterrors.md deleted file mode 100644 index 77a7cf3..0000000 --- a/docs/models/errors/gettopwatchedcontenterrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTopWatchedContentErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/gettopwatchedcontentlibraryerrors.md b/docs/models/errors/gettopwatchedcontentlibraryerrors.md deleted file mode 100644 index 557377f..0000000 --- a/docs/models/errors/gettopwatchedcontentlibraryerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTopWatchedContentLibraryErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/gettopwatchedcontentunauthorized.md b/docs/models/errors/gettopwatchedcontentunauthorized.md deleted file mode 100644 index 77f2b2c..0000000 --- a/docs/models/errors/gettopwatchedcontentunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTopWatchedContentUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetTopWatchedContentLibraryErrors](../../models/errors/gettopwatchedcontentlibraryerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/gettranscodesessionsbadrequest.md b/docs/models/errors/gettranscodesessionsbadrequest.md deleted file mode 100644 index d5f4006..0000000 --- a/docs/models/errors/gettranscodesessionsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTranscodeSessionsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetTranscodeSessionsErrors](../../models/errors/gettranscodesessionserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/gettranscodesessionserrors.md b/docs/models/errors/gettranscodesessionserrors.md deleted file mode 100644 index 4012213..0000000 --- a/docs/models/errors/gettranscodesessionserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTranscodeSessionsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/gettranscodesessionssessionserrors.md b/docs/models/errors/gettranscodesessionssessionserrors.md deleted file mode 100644 index 46fed53..0000000 --- a/docs/models/errors/gettranscodesessionssessionserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTranscodeSessionsSessionsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/gettranscodesessionsunauthorized.md b/docs/models/errors/gettranscodesessionsunauthorized.md deleted file mode 100644 index 27cfbdf..0000000 --- a/docs/models/errors/gettranscodesessionsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTranscodeSessionsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetTranscodeSessionsSessionsErrors](../../models/errors/gettranscodesessionssessionserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/gettransienttokenauthenticationerrors.md b/docs/models/errors/gettransienttokenauthenticationerrors.md deleted file mode 100644 index a67f2dd..0000000 --- a/docs/models/errors/gettransienttokenauthenticationerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTransientTokenAuthenticationErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/gettransienttokenbadrequest.md b/docs/models/errors/gettransienttokenbadrequest.md deleted file mode 100644 index 87be2c4..0000000 --- a/docs/models/errors/gettransienttokenbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTransientTokenBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetTransientTokenErrors](../../models/errors/gettransienttokenerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/gettransienttokenerrors.md b/docs/models/errors/gettransienttokenerrors.md deleted file mode 100644 index fd6f3c9..0000000 --- a/docs/models/errors/gettransienttokenerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTransientTokenErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/gettransienttokenunauthorized.md b/docs/models/errors/gettransienttokenunauthorized.md deleted file mode 100644 index 3f9e83a..0000000 --- a/docs/models/errors/gettransienttokenunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTransientTokenUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetTransientTokenAuthenticationErrors](../../models/errors/gettransienttokenauthenticationerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getupdatestatusbadrequest.md b/docs/models/errors/getupdatestatusbadrequest.md deleted file mode 100644 index ee0ed87..0000000 --- a/docs/models/errors/getupdatestatusbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUpdateStatusBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetUpdateStatusErrors](../../models/errors/getupdatestatuserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getupdatestatuserrors.md b/docs/models/errors/getupdatestatuserrors.md deleted file mode 100644 index b2915ae..0000000 --- a/docs/models/errors/getupdatestatuserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUpdateStatusErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getupdatestatusunauthorized.md b/docs/models/errors/getupdatestatusunauthorized.md deleted file mode 100644 index 34791fe..0000000 --- a/docs/models/errors/getupdatestatusunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUpdateStatusUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetUpdateStatusUpdaterErrors](../../models/errors/getupdatestatusupdatererrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getupdatestatusupdatererrors.md b/docs/models/errors/getupdatestatusupdatererrors.md deleted file mode 100644 index 7413d63..0000000 --- a/docs/models/errors/getupdatestatusupdatererrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUpdateStatusUpdaterErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getuserfriendsbadrequest.md b/docs/models/errors/getuserfriendsbadrequest.md deleted file mode 100644 index 11eda32..0000000 --- a/docs/models/errors/getuserfriendsbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUserFriendsBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetUserFriendsErrors](../../models/errors/getuserfriendserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getuserfriendserrors.md b/docs/models/errors/getuserfriendserrors.md deleted file mode 100644 index c08b13d..0000000 --- a/docs/models/errors/getuserfriendserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUserFriendsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getuserfriendsplexerrors.md b/docs/models/errors/getuserfriendsplexerrors.md deleted file mode 100644 index 17d89af..0000000 --- a/docs/models/errors/getuserfriendsplexerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUserFriendsPlexErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getuserfriendsunauthorized.md b/docs/models/errors/getuserfriendsunauthorized.md deleted file mode 100644 index 0a99128..0000000 --- a/docs/models/errors/getuserfriendsunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUserFriendsUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetUserFriendsPlexErrors](../../models/errors/getuserfriendsplexerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getusersbadrequest.md b/docs/models/errors/getusersbadrequest.md deleted file mode 100644 index 4c2958c..0000000 --- a/docs/models/errors/getusersbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUsersBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `errors` | List[[errors.GetUsersErrors](../../models/errors/getuserserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getuserserrors.md b/docs/models/errors/getuserserrors.md deleted file mode 100644 index f397fb3..0000000 --- a/docs/models/errors/getuserserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUsersErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getusersunauthorized.md b/docs/models/errors/getusersunauthorized.md deleted file mode 100644 index cb96a71..0000000 --- a/docs/models/errors/getusersunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUsersUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `errors` | List[[errors.GetUsersUsersErrors](../../models/errors/getusersuserserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getusersuserserrors.md b/docs/models/errors/getusersuserserrors.md deleted file mode 100644 index 5f66d20..0000000 --- a/docs/models/errors/getusersuserserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUsersUsersErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/getwatchlistbadrequest.md b/docs/models/errors/getwatchlistbadrequest.md deleted file mode 100644 index 5f29220..0000000 --- a/docs/models/errors/getwatchlistbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetWatchListBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `errors` | List[[errors.GetWatchListErrors](../../models/errors/getwatchlisterrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getwatchlisterrors.md b/docs/models/errors/getwatchlisterrors.md deleted file mode 100644 index e890bbb..0000000 --- a/docs/models/errors/getwatchlisterrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetWatchListErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/getwatchlistunauthorized.md b/docs/models/errors/getwatchlistunauthorized.md deleted file mode 100644 index 5aeefe0..0000000 --- a/docs/models/errors/getwatchlistunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetWatchListUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.GetWatchListWatchlistErrors](../../models/errors/getwatchlistwatchlisterrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/getwatchlistwatchlisterrors.md b/docs/models/errors/getwatchlistwatchlisterrors.md deleted file mode 100644 index 094bcf6..0000000 --- a/docs/models/errors/getwatchlistwatchlisterrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetWatchListWatchlistErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/loglinebadrequest.md b/docs/models/errors/loglinebadrequest.md deleted file mode 100644 index f40a396..0000000 --- a/docs/models/errors/loglinebadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# LogLineBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `errors` | List[[errors.LogLineErrors](../../models/errors/loglineerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/loglineerrors.md b/docs/models/errors/loglineerrors.md deleted file mode 100644 index ffcc002..0000000 --- a/docs/models/errors/loglineerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# LogLineErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/loglinelogerrors.md b/docs/models/errors/loglinelogerrors.md deleted file mode 100644 index fcfcef4..0000000 --- a/docs/models/errors/loglinelogerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# LogLineLogErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/loglineunauthorized.md b/docs/models/errors/loglineunauthorized.md deleted file mode 100644 index 5fa4357..0000000 --- a/docs/models/errors/loglineunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# LogLineUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | -| `errors` | List[[errors.LogLineLogErrors](../../models/errors/loglinelogerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/logmultilinebadrequest.md b/docs/models/errors/logmultilinebadrequest.md deleted file mode 100644 index 08d2757..0000000 --- a/docs/models/errors/logmultilinebadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# LogMultiLineBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `errors` | List[[errors.LogMultiLineErrors](../../models/errors/logmultilineerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/logmultilineerrors.md b/docs/models/errors/logmultilineerrors.md deleted file mode 100644 index 1305a17..0000000 --- a/docs/models/errors/logmultilineerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# LogMultiLineErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/logmultilinelogerrors.md b/docs/models/errors/logmultilinelogerrors.md deleted file mode 100644 index 050d0f4..0000000 --- a/docs/models/errors/logmultilinelogerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# LogMultiLineLogErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/logmultilineunauthorized.md b/docs/models/errors/logmultilineunauthorized.md deleted file mode 100644 index a3f79ce..0000000 --- a/docs/models/errors/logmultilineunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# LogMultiLineUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `errors` | List[[errors.LogMultiLineLogErrors](../../models/errors/logmultilinelogerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/markplayedbadrequest.md b/docs/models/errors/markplayedbadrequest.md deleted file mode 100644 index 2d775c3..0000000 --- a/docs/models/errors/markplayedbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# MarkPlayedBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | -| `errors` | List[[errors.MarkPlayedErrors](../../models/errors/markplayederrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/markplayederrors.md b/docs/models/errors/markplayederrors.md deleted file mode 100644 index 00b80b8..0000000 --- a/docs/models/errors/markplayederrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# MarkPlayedErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/markplayedmediaerrors.md b/docs/models/errors/markplayedmediaerrors.md deleted file mode 100644 index 9733de2..0000000 --- a/docs/models/errors/markplayedmediaerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# MarkPlayedMediaErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/markplayedunauthorized.md b/docs/models/errors/markplayedunauthorized.md deleted file mode 100644 index 63c189d..0000000 --- a/docs/models/errors/markplayedunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# MarkPlayedUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `errors` | List[[errors.MarkPlayedMediaErrors](../../models/errors/markplayedmediaerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/markunplayedbadrequest.md b/docs/models/errors/markunplayedbadrequest.md deleted file mode 100644 index c72a956..0000000 --- a/docs/models/errors/markunplayedbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# MarkUnplayedBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `errors` | List[[errors.MarkUnplayedErrors](../../models/errors/markunplayederrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/markunplayederrors.md b/docs/models/errors/markunplayederrors.md deleted file mode 100644 index fa93cf3..0000000 --- a/docs/models/errors/markunplayederrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# MarkUnplayedErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/markunplayedmediaerrors.md b/docs/models/errors/markunplayedmediaerrors.md deleted file mode 100644 index 068f684..0000000 --- a/docs/models/errors/markunplayedmediaerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# MarkUnplayedMediaErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/markunplayedunauthorized.md b/docs/models/errors/markunplayedunauthorized.md deleted file mode 100644 index 336cd1c..0000000 --- a/docs/models/errors/markunplayedunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# MarkUnplayedUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `errors` | List[[errors.MarkUnplayedMediaErrors](../../models/errors/markunplayedmediaerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/performsearchbadrequest.md b/docs/models/errors/performsearchbadrequest.md deleted file mode 100644 index 184608e..0000000 --- a/docs/models/errors/performsearchbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# PerformSearchBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `errors` | List[[errors.PerformSearchErrors](../../models/errors/performsearcherrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/performsearcherrors.md b/docs/models/errors/performsearcherrors.md deleted file mode 100644 index d4eab32..0000000 --- a/docs/models/errors/performsearcherrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# PerformSearchErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/performsearchsearcherrors.md b/docs/models/errors/performsearchsearcherrors.md deleted file mode 100644 index 98ea4e7..0000000 --- a/docs/models/errors/performsearchsearcherrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# PerformSearchSearchErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/performsearchunauthorized.md b/docs/models/errors/performsearchunauthorized.md deleted file mode 100644 index 4681025..0000000 --- a/docs/models/errors/performsearchunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# PerformSearchUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.PerformSearchSearchErrors](../../models/errors/performsearchsearcherrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/performvoicesearchbadrequest.md b/docs/models/errors/performvoicesearchbadrequest.md deleted file mode 100644 index 26aaf6e..0000000 --- a/docs/models/errors/performvoicesearchbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# PerformVoiceSearchBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `errors` | List[[errors.PerformVoiceSearchErrors](../../models/errors/performvoicesearcherrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/performvoicesearcherrors.md b/docs/models/errors/performvoicesearcherrors.md deleted file mode 100644 index 0b16e72..0000000 --- a/docs/models/errors/performvoicesearcherrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# PerformVoiceSearchErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/performvoicesearchsearcherrors.md b/docs/models/errors/performvoicesearchsearcherrors.md deleted file mode 100644 index 97e4d9b..0000000 --- a/docs/models/errors/performvoicesearchsearcherrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# PerformVoiceSearchSearchErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/performvoicesearchunauthorized.md b/docs/models/errors/performvoicesearchunauthorized.md deleted file mode 100644 index c73d91d..0000000 --- a/docs/models/errors/performvoicesearchunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# PerformVoiceSearchUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.PerformVoiceSearchSearchErrors](../../models/errors/performvoicesearchsearcherrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/postuserssignindataauthenticationerrors.md b/docs/models/errors/postuserssignindataauthenticationerrors.md deleted file mode 100644 index 6f69497..0000000 --- a/docs/models/errors/postuserssignindataauthenticationerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# PostUsersSignInDataAuthenticationErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/postuserssignindatabadrequest.md b/docs/models/errors/postuserssignindatabadrequest.md deleted file mode 100644 index d7ed3ce..0000000 --- a/docs/models/errors/postuserssignindatabadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.PostUsersSignInDataErrors](../../models/errors/postuserssignindataerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/postuserssignindataerrors.md b/docs/models/errors/postuserssignindataerrors.md deleted file mode 100644 index 8b0ae72..0000000 --- a/docs/models/errors/postuserssignindataerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# PostUsersSignInDataErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/postuserssignindataunauthorized.md b/docs/models/errors/postuserssignindataunauthorized.md deleted file mode 100644 index 7bbf417..0000000 --- a/docs/models/errors/postuserssignindataunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.PostUsersSignInDataAuthenticationErrors](../../models/errors/postuserssignindataauthenticationerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/startalltasksbadrequest.md b/docs/models/errors/startalltasksbadrequest.md deleted file mode 100644 index 36f0fd9..0000000 --- a/docs/models/errors/startalltasksbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# StartAllTasksBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `errors` | List[[errors.StartAllTasksErrors](../../models/errors/startalltaskserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/startalltasksbutlererrors.md b/docs/models/errors/startalltasksbutlererrors.md deleted file mode 100644 index b59bb2c..0000000 --- a/docs/models/errors/startalltasksbutlererrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StartAllTasksButlerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/startalltaskserrors.md b/docs/models/errors/startalltaskserrors.md deleted file mode 100644 index 9140aa3..0000000 --- a/docs/models/errors/startalltaskserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StartAllTasksErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/startalltasksunauthorized.md b/docs/models/errors/startalltasksunauthorized.md deleted file mode 100644 index 1375c7c..0000000 --- a/docs/models/errors/startalltasksunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# StartAllTasksUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.StartAllTasksButlerErrors](../../models/errors/startalltasksbutlererrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/starttaskbadrequest.md b/docs/models/errors/starttaskbadrequest.md deleted file mode 100644 index dc8b946..0000000 --- a/docs/models/errors/starttaskbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# StartTaskBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | -| `errors` | List[[errors.StartTaskErrors](../../models/errors/starttaskerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/starttaskbutlererrors.md b/docs/models/errors/starttaskbutlererrors.md deleted file mode 100644 index 7984d13..0000000 --- a/docs/models/errors/starttaskbutlererrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StartTaskButlerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/starttaskerrors.md b/docs/models/errors/starttaskerrors.md deleted file mode 100644 index d483184..0000000 --- a/docs/models/errors/starttaskerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StartTaskErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/starttaskunauthorized.md b/docs/models/errors/starttaskunauthorized.md deleted file mode 100644 index 8cf9fb7..0000000 --- a/docs/models/errors/starttaskunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# StartTaskUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `errors` | List[[errors.StartTaskButlerErrors](../../models/errors/starttaskbutlererrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/startuniversaltranscodebadrequest.md b/docs/models/errors/startuniversaltranscodebadrequest.md deleted file mode 100644 index 506603e..0000000 --- a/docs/models/errors/startuniversaltranscodebadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# StartUniversalTranscodeBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.StartUniversalTranscodeErrors](../../models/errors/startuniversaltranscodeerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/startuniversaltranscodeerrors.md b/docs/models/errors/startuniversaltranscodeerrors.md deleted file mode 100644 index 5e204c2..0000000 --- a/docs/models/errors/startuniversaltranscodeerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StartUniversalTranscodeErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/startuniversaltranscodeunauthorized.md b/docs/models/errors/startuniversaltranscodeunauthorized.md deleted file mode 100644 index c0de152..0000000 --- a/docs/models/errors/startuniversaltranscodeunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# StartUniversalTranscodeUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.StartUniversalTranscodeVideoErrors](../../models/errors/startuniversaltranscodevideoerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/startuniversaltranscodevideoerrors.md b/docs/models/errors/startuniversaltranscodevideoerrors.md deleted file mode 100644 index 59408ee..0000000 --- a/docs/models/errors/startuniversaltranscodevideoerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StartUniversalTranscodeVideoErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/stopalltasksbadrequest.md b/docs/models/errors/stopalltasksbadrequest.md deleted file mode 100644 index ecd3a1f..0000000 --- a/docs/models/errors/stopalltasksbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# StopAllTasksBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `errors` | List[[errors.StopAllTasksErrors](../../models/errors/stopalltaskserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/stopalltasksbutlererrors.md b/docs/models/errors/stopalltasksbutlererrors.md deleted file mode 100644 index b51b940..0000000 --- a/docs/models/errors/stopalltasksbutlererrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StopAllTasksButlerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/stopalltaskserrors.md b/docs/models/errors/stopalltaskserrors.md deleted file mode 100644 index 28f303e..0000000 --- a/docs/models/errors/stopalltaskserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StopAllTasksErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/stopalltasksunauthorized.md b/docs/models/errors/stopalltasksunauthorized.md deleted file mode 100644 index 978aa16..0000000 --- a/docs/models/errors/stopalltasksunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# StopAllTasksUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `errors` | List[[errors.StopAllTasksButlerErrors](../../models/errors/stopalltasksbutlererrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/stoptaskbadrequest.md b/docs/models/errors/stoptaskbadrequest.md deleted file mode 100644 index 14feff8..0000000 --- a/docs/models/errors/stoptaskbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# StopTaskBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `errors` | List[[errors.StopTaskErrors](../../models/errors/stoptaskerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/stoptaskbutlererrors.md b/docs/models/errors/stoptaskbutlererrors.md deleted file mode 100644 index 1f245a5..0000000 --- a/docs/models/errors/stoptaskbutlererrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StopTaskButlerErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/stoptaskerrors.md b/docs/models/errors/stoptaskerrors.md deleted file mode 100644 index a173564..0000000 --- a/docs/models/errors/stoptaskerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StopTaskErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/stoptaskunauthorized.md b/docs/models/errors/stoptaskunauthorized.md deleted file mode 100644 index 1870358..0000000 --- a/docs/models/errors/stoptaskunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# StopTaskUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `errors` | List[[errors.StopTaskButlerErrors](../../models/errors/stoptaskbutlererrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/stoptranscodesessionbadrequest.md b/docs/models/errors/stoptranscodesessionbadrequest.md deleted file mode 100644 index 32413a6..0000000 --- a/docs/models/errors/stoptranscodesessionbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# StopTranscodeSessionBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.StopTranscodeSessionErrors](../../models/errors/stoptranscodesessionerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/stoptranscodesessionerrors.md b/docs/models/errors/stoptranscodesessionerrors.md deleted file mode 100644 index 776e0f3..0000000 --- a/docs/models/errors/stoptranscodesessionerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StopTranscodeSessionErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/stoptranscodesessionsessionserrors.md b/docs/models/errors/stoptranscodesessionsessionserrors.md deleted file mode 100644 index 57d6d0e..0000000 --- a/docs/models/errors/stoptranscodesessionsessionserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# StopTranscodeSessionSessionsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/stoptranscodesessionunauthorized.md b/docs/models/errors/stoptranscodesessionunauthorized.md deleted file mode 100644 index c0bb568..0000000 --- a/docs/models/errors/stoptranscodesessionunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# StopTranscodeSessionUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `errors` | List[[errors.StopTranscodeSessionSessionsErrors](../../models/errors/stoptranscodesessionsessionserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/updateplaylistbadrequest.md b/docs/models/errors/updateplaylistbadrequest.md deleted file mode 100644 index 878678c..0000000 --- a/docs/models/errors/updateplaylistbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# UpdatePlaylistBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `errors` | List[[errors.UpdatePlaylistErrors](../../models/errors/updateplaylisterrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/updateplaylisterrors.md b/docs/models/errors/updateplaylisterrors.md deleted file mode 100644 index a3f9659..0000000 --- a/docs/models/errors/updateplaylisterrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# UpdatePlaylistErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/updateplaylistplaylistserrors.md b/docs/models/errors/updateplaylistplaylistserrors.md deleted file mode 100644 index 9eafca2..0000000 --- a/docs/models/errors/updateplaylistplaylistserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# UpdatePlaylistPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/updateplaylistunauthorized.md b/docs/models/errors/updateplaylistunauthorized.md deleted file mode 100644 index 42f8247..0000000 --- a/docs/models/errors/updateplaylistunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# UpdatePlaylistUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.UpdatePlaylistPlaylistsErrors](../../models/errors/updateplaylistplaylistserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/updateplayprogressbadrequest.md b/docs/models/errors/updateplayprogressbadrequest.md deleted file mode 100644 index 301ccd9..0000000 --- a/docs/models/errors/updateplayprogressbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# UpdatePlayProgressBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `errors` | List[[errors.UpdatePlayProgressErrors](../../models/errors/updateplayprogresserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/updateplayprogresserrors.md b/docs/models/errors/updateplayprogresserrors.md deleted file mode 100644 index 9266ed2..0000000 --- a/docs/models/errors/updateplayprogresserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# UpdatePlayProgressErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/updateplayprogressmediaerrors.md b/docs/models/errors/updateplayprogressmediaerrors.md deleted file mode 100644 index a34725c..0000000 --- a/docs/models/errors/updateplayprogressmediaerrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# UpdatePlayProgressMediaErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/updateplayprogressunauthorized.md b/docs/models/errors/updateplayprogressunauthorized.md deleted file mode 100644 index 8097f36..0000000 --- a/docs/models/errors/updateplayprogressunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# UpdatePlayProgressUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.UpdatePlayProgressMediaErrors](../../models/errors/updateplayprogressmediaerrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/uploadplaylistbadrequest.md b/docs/models/errors/uploadplaylistbadrequest.md deleted file mode 100644 index f5faa8a..0000000 --- a/docs/models/errors/uploadplaylistbadrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# UploadPlaylistBadRequest - -Bad Request - A parameter was not specified, or was specified incorrectly. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `errors` | List[[errors.UploadPlaylistErrors](../../models/errors/uploadplaylisterrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/errors/uploadplaylisterrors.md b/docs/models/errors/uploadplaylisterrors.md deleted file mode 100644 index 5e87b10..0000000 --- a/docs/models/errors/uploadplaylisterrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# UploadPlaylistErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | X-Plex-Client-Identifier is missing | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 400 | \ No newline at end of file diff --git a/docs/models/errors/uploadplaylistplaylistserrors.md b/docs/models/errors/uploadplaylistplaylistserrors.md deleted file mode 100644 index d2cedfa..0000000 --- a/docs/models/errors/uploadplaylistplaylistserrors.md +++ /dev/null @@ -1,10 +0,0 @@ -# UploadPlaylistPlaylistsErrors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `code` | *Optional[int]* | :heavy_minus_sign: | N/A | 1001 | -| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | User could not be authenticated | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 401 | \ No newline at end of file diff --git a/docs/models/errors/uploadplaylistunauthorized.md b/docs/models/errors/uploadplaylistunauthorized.md deleted file mode 100644 index 5475b1a..0000000 --- a/docs/models/errors/uploadplaylistunauthorized.md +++ /dev/null @@ -1,11 +0,0 @@ -# UploadPlaylistUnauthorized - -Unauthorized - Returned if the X-Plex-Token is missing from the header or query. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `errors` | List[[errors.UploadPlaylistPlaylistsErrors](../../models/errors/uploadplaylistplaylistserrors.md)] | :heavy_minus_sign: | N/A | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_minus_sign: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/internal/globals.md b/docs/models/internal/globals.md new file mode 100644 index 0000000..904c005 --- /dev/null +++ b/docs/models/internal/globals.md @@ -0,0 +1,18 @@ +# Globals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/account.md b/docs/models/operations/account.md index 791701e..589da12 100644 --- a/docs/models/operations/account.md +++ b/docs/models/operations/account.md @@ -3,13 +3,7 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 238960586 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /accounts/238960586 | -| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | Diane | -| `default_audio_language` | *Optional[str]* | :heavy_minus_sign: | N/A | en | -| `auto_select_audio` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `default_subtitle_language` | *Optional[str]* | :heavy_minus_sign: | N/A | en | -| `subtitle_mode` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | https://plex.tv/users/50d83634246da1de/avatar?c=1707110967 | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------- | ------------------- | ------------------- | ------------------- | +| `global_view_count` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/action.md b/docs/models/operations/action.md index 4afc67e..495ab7e 100644 --- a/docs/models/operations/action.md +++ b/docs/models/operations/action.md @@ -1,9 +1,12 @@ # Action +The action to perform for this item on this optimizer queue -## Fields -| Field | Type | Required | Description | Example | -| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | -| `id` | *str* | :heavy_check_mark: | N/A | addToContinueWatching | -| `key` | *str* | :heavy_check_mark: | N/A | /actions/addToContinueWatching | \ No newline at end of file +## Values + +| Name | Value | +| ----------- | ----------- | +| `REPROCESS` | reprocess | +| `DISABLE` | disable | +| `ENABLE` | enable | \ No newline at end of file diff --git a/docs/models/operations/activedirection.md b/docs/models/operations/activedirection.md deleted file mode 100644 index 0c1320a..0000000 --- a/docs/models/operations/activedirection.md +++ /dev/null @@ -1,12 +0,0 @@ -# ActiveDirection - -The direction of the sort. Can be either `asc` or `desc`. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `ASCENDING` | asc | -| `DESCENDING` | desc | \ No newline at end of file diff --git a/docs/models/operations/activity.md b/docs/models/operations/activity.md index 464fa72..9f9883a 100644 --- a/docs/models/operations/activity.md +++ b/docs/models/operations/activity.md @@ -3,13 +3,14 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `cancellable` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `user_id` | *Optional[float]* | :heavy_minus_sign: | N/A | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `subtitle` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `progress` | *Optional[float]* | :heavy_minus_sign: | N/A | -| `context` | [Optional[operations.Context]](../../models/operations/context.md) | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| `cancellable` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether this activity can be cancelled | +| `context` | Dict[str, *Any*] | :heavy_minus_sign: | An object with additional values | +| `progress` | *Optional[float]* | :heavy_minus_sign: | A progress percentage. A value of -1 means the progress is indeterminate | +| `response` | Dict[str, *Any*] | :heavy_minus_sign: | An object with the response to the async opperation | +| `subtitle` | *Optional[str]* | :heavy_minus_sign: | A user-friendly sub-title for this activity | +| `title` | *Optional[str]* | :heavy_minus_sign: | A user-friendly title for this activity | +| `type` | *Optional[str]* | :heavy_minus_sign: | The type of activity | +| `user_id` | *Optional[int]* | :heavy_minus_sign: | The user this activity belongs to | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | The ID of the activity | \ No newline at end of file diff --git a/docs/models/operations/addcollectionitemsglobals.md b/docs/models/operations/addcollectionitemsglobals.md new file mode 100644 index 0000000..7ef4c3d --- /dev/null +++ b/docs/models/operations/addcollectionitemsglobals.md @@ -0,0 +1,18 @@ +# AddCollectionItemsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/addcollectionitemsrequest.md b/docs/models/operations/addcollectionitemsrequest.md new file mode 100644 index 0000000..1afab93 --- /dev/null +++ b/docs/models/operations/addcollectionitemsrequest.md @@ -0,0 +1,20 @@ +# AddCollectionItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `collection_id` | *int* | :heavy_check_mark: | The collection id | | +| `uri` | *str* | :heavy_check_mark: | The URI describing the items to add to this collection | | \ No newline at end of file diff --git a/docs/models/operations/addcollectionitemsresponse.md b/docs/models/operations/addcollectionitemsresponse.md new file mode 100644 index 0000000..da98872 --- /dev/null +++ b/docs/models/operations/addcollectionitemsresponse.md @@ -0,0 +1,11 @@ +# AddCollectionItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/adddeviceglobals.md b/docs/models/operations/adddeviceglobals.md new file mode 100644 index 0000000..fedba64 --- /dev/null +++ b/docs/models/operations/adddeviceglobals.md @@ -0,0 +1,18 @@ +# AddDeviceGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/adddevicerequest.md b/docs/models/operations/adddevicerequest.md new file mode 100644 index 0000000..c190f18 --- /dev/null +++ b/docs/models/operations/adddevicerequest.md @@ -0,0 +1,19 @@ +# AddDeviceRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `uri` | *Optional[str]* | :heavy_minus_sign: | The URI of the device. | http://10.0.0.5 | \ No newline at end of file diff --git a/docs/models/operations/adddeviceresponse.md b/docs/models/operations/adddeviceresponse.md new file mode 100644 index 0000000..f2ae086 --- /dev/null +++ b/docs/models/operations/adddeviceresponse.md @@ -0,0 +1,11 @@ +# AddDeviceResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_device` | [Optional[components.MediaContainerWithDevice]](../../models/components/mediacontainerwithdevice.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/adddevicetodvrdvr.md b/docs/models/operations/adddevicetodvrdvr.md new file mode 100644 index 0000000..46539dc --- /dev/null +++ b/docs/models/operations/adddevicetodvrdvr.md @@ -0,0 +1,12 @@ +# AddDeviceToDVRDVR + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `device` | List[[components.Device](../../models/components/device.md)] | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `lineup` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/adddevicetodvrdvrsmediacontainer.md b/docs/models/operations/adddevicetodvrdvrsmediacontainer.md new file mode 100644 index 0000000..d4ba222 --- /dev/null +++ b/docs/models/operations/adddevicetodvrdvrsmediacontainer.md @@ -0,0 +1,17 @@ +# AddDeviceToDVRDVRsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `status` | *Optional[int]* | :heavy_minus_sign: | A status indicator. If present and non-zero, indicates an error | \ No newline at end of file diff --git a/docs/models/operations/adddevicetodvrglobals.md b/docs/models/operations/adddevicetodvrglobals.md new file mode 100644 index 0000000..251c018 --- /dev/null +++ b/docs/models/operations/adddevicetodvrglobals.md @@ -0,0 +1,18 @@ +# AddDeviceToDVRGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/adddevicetodvrmediacontainer.md b/docs/models/operations/adddevicetodvrmediacontainer.md new file mode 100644 index 0000000..7ab6515 --- /dev/null +++ b/docs/models/operations/adddevicetodvrmediacontainer.md @@ -0,0 +1,9 @@ +# AddDeviceToDVRMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.AddDeviceToDVRDVRsMediaContainer]](../../models/operations/adddevicetodvrdvrsmediacontainer.md) | :heavy_minus_sign: | N/A | +| `dvr` | List[[operations.AddDeviceToDVRDVR](../../models/operations/adddevicetodvrdvr.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/adddevicetodvrrequest.md b/docs/models/operations/adddevicetodvrrequest.md new file mode 100644 index 0000000..534c7a8 --- /dev/null +++ b/docs/models/operations/adddevicetodvrrequest.md @@ -0,0 +1,20 @@ +# AddDeviceToDVRRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `dvr_id` | *int* | :heavy_check_mark: | The ID of the DVR. | | +| `device_id` | *int* | :heavy_check_mark: | The ID of the device to add. | | \ No newline at end of file diff --git a/docs/models/operations/adddevicetodvrresponse.md b/docs/models/operations/adddevicetodvrresponse.md new file mode 100644 index 0000000..b94ee2e --- /dev/null +++ b/docs/models/operations/adddevicetodvrresponse.md @@ -0,0 +1,12 @@ +# AddDeviceToDVRResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.AddDeviceToDVRResponseBody]](../../models/operations/adddevicetodvrresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/adddevicetodvrresponsebody.md b/docs/models/operations/adddevicetodvrresponsebody.md new file mode 100644 index 0000000..a09d44a --- /dev/null +++ b/docs/models/operations/adddevicetodvrresponsebody.md @@ -0,0 +1,10 @@ +# AddDeviceToDVRResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.AddDeviceToDVRMediaContainer]](../../models/operations/adddevicetodvrmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/adddownloadqueueitemsglobals.md b/docs/models/operations/adddownloadqueueitemsglobals.md new file mode 100644 index 0000000..d62469f --- /dev/null +++ b/docs/models/operations/adddownloadqueueitemsglobals.md @@ -0,0 +1,18 @@ +# AddDownloadQueueItemsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/adddownloadqueueitemsmediacontainer.md b/docs/models/operations/adddownloadqueueitemsmediacontainer.md new file mode 100644 index 0000000..20a9cc3 --- /dev/null +++ b/docs/models/operations/adddownloadqueueitemsmediacontainer.md @@ -0,0 +1,17 @@ +# AddDownloadQueueItemsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `added_queue_items` | List[[operations.AddedQueueItems](../../models/operations/addedqueueitems.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/adddownloadqueueitemsrequest.md b/docs/models/operations/adddownloadqueueitemsrequest.md new file mode 100644 index 0000000..8dbf949 --- /dev/null +++ b/docs/models/operations/adddownloadqueueitemsrequest.md @@ -0,0 +1,46 @@ +# AddDownloadQueueItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `queue_id` | *int* | :heavy_check_mark: | The queue id | | +| `keys` | List[*str*] | :heavy_check_mark: | Keys to add | [
"/library/metadata/3",
"/library/metadata/6"
] | +| `advanced_subtitles` | [Optional[components.AdvancedSubtitles]](../../models/components/advancedsubtitles.md) | :heavy_minus_sign: | Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost
| burn | +| `audio_boost` | *Optional[int]* | :heavy_minus_sign: | Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) | 50 | +| `audio_channel_count` | *Optional[int]* | :heavy_minus_sign: | Target video number of audio channels. | 5 | +| `auto_adjust_quality` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates the client supports ABR. | 1 | +| `auto_adjust_subtitle` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates if the server should adjust subtitles based on Voice Activity Data. | 1 | +| `direct_play` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates the client supports direct playing the indicated content. | 1 | +| `direct_stream` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the video of the indicated content. | 1 | +| `direct_stream_audio` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the audio of the indicated content. | 1 | +| `disable_resolution_rotation` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates if resolution should be adjusted for orientation. | 1 | +| `has_mde` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 | 1 | +| `location` | [Optional[components.Location]](../../models/components/location.md) | :heavy_minus_sign: | Network type of the client, can be used to help determine target bitrate. | wan | +| `media_buffer_size` | *Optional[int]* | :heavy_minus_sign: | Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. | 102400 | +| `media_index` | *Optional[int]* | :heavy_minus_sign: | Index of the media to transcode. -1 or not specified indicates let the server choose. | 0 | +| `music_bitrate` | *Optional[int]* | :heavy_minus_sign: | Target bitrate for audio only files (in kbps, used to transcode). | 5000 | +| `offset` | *Optional[float]* | :heavy_minus_sign: | Offset from the start of the media (in seconds). | 90.5 | +| `part_index` | *Optional[int]* | :heavy_minus_sign: | Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode | 0 | +| `path` | *Optional[str]* | :heavy_minus_sign: | Internal PMS path of the media to transcode. | /library/metadata/151671 | +| `peak_bitrate` | *Optional[int]* | :heavy_minus_sign: | Maximum bitrate (in kbps) to use in ABR. | 12000 | +| `photo_resolution` | *Optional[str]* | :heavy_minus_sign: | Target photo resolution. | 1080x1080 | +| `protocol` | [Optional[components.Protocol]](../../models/components/protocol.md) | :heavy_minus_sign: | Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
| dash | +| `seconds_per_segment` | *Optional[int]* | :heavy_minus_sign: | Number of seconds to include in each transcoded segment | 5 | +| `subtitle_size` | *Optional[int]* | :heavy_minus_sign: | Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) | 50 | +| `subtitles` | [Optional[components.Subtitles]](../../models/components/subtitles.md) | :heavy_minus_sign: | Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
| Burn | +| `video_bitrate` | *Optional[int]* | :heavy_minus_sign: | Target video bitrate (in kbps). | 12000 | +| `video_quality` | *Optional[int]* | :heavy_minus_sign: | Target photo quality. | 50 | +| `video_resolution` | *Optional[str]* | :heavy_minus_sign: | Target maximum video resolution. | 1080x1080 | \ No newline at end of file diff --git a/docs/models/operations/adddownloadqueueitemsresponse.md b/docs/models/operations/adddownloadqueueitemsresponse.md new file mode 100644 index 0000000..2a3a039 --- /dev/null +++ b/docs/models/operations/adddownloadqueueitemsresponse.md @@ -0,0 +1,11 @@ +# AddDownloadQueueItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.AddDownloadQueueItemsResponseBody]](../../models/operations/adddownloadqueueitemsresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/adddownloadqueueitemsresponsebody.md b/docs/models/operations/adddownloadqueueitemsresponsebody.md new file mode 100644 index 0000000..4c6a722 --- /dev/null +++ b/docs/models/operations/adddownloadqueueitemsresponsebody.md @@ -0,0 +1,10 @@ +# AddDownloadQueueItemsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.AddDownloadQueueItemsMediaContainer]](../../models/operations/adddownloadqueueitemsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/addedqueueitems.md b/docs/models/operations/addedqueueitems.md new file mode 100644 index 0000000..dcb68cc --- /dev/null +++ b/docs/models/operations/addedqueueitems.md @@ -0,0 +1,9 @@ +# AddedQueueItems + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | +| `id` | *Optional[int]* | :heavy_minus_sign: | The queue item id that was added or the existing one if an item already exists in this queue with the same parameters | +| `key` | *Optional[str]* | :heavy_minus_sign: | The key added to the queue | \ No newline at end of file diff --git a/docs/models/operations/addextrasglobals.md b/docs/models/operations/addextrasglobals.md new file mode 100644 index 0000000..226a0b1 --- /dev/null +++ b/docs/models/operations/addextrasglobals.md @@ -0,0 +1,18 @@ +# AddExtrasGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/addextrasrequest.md b/docs/models/operations/addextrasrequest.md new file mode 100644 index 0000000..ee73126 --- /dev/null +++ b/docs/models/operations/addextrasrequest.md @@ -0,0 +1,22 @@ +# AddExtrasRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `extra_type` | *Optional[int]* | :heavy_minus_sign: | The metadata type of the extra | | +| `url` | *str* | :heavy_check_mark: | The URL of the extra | | +| `title` | *Optional[str]* | :heavy_minus_sign: | The title to filter by or assign | | \ No newline at end of file diff --git a/docs/models/operations/addextrasresponse.md b/docs/models/operations/addextrasresponse.md new file mode 100644 index 0000000..a9269b8 --- /dev/null +++ b/docs/models/operations/addextrasresponse.md @@ -0,0 +1,10 @@ +# AddExtrasResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/addlineupdvr.md b/docs/models/operations/addlineupdvr.md new file mode 100644 index 0000000..1610f2a --- /dev/null +++ b/docs/models/operations/addlineupdvr.md @@ -0,0 +1,12 @@ +# AddLineupDVR + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `device` | List[[components.Device](../../models/components/device.md)] | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `lineup` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/addlineupdvrsmediacontainer.md b/docs/models/operations/addlineupdvrsmediacontainer.md new file mode 100644 index 0000000..c0bbdc5 --- /dev/null +++ b/docs/models/operations/addlineupdvrsmediacontainer.md @@ -0,0 +1,17 @@ +# AddLineupDVRsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `status` | *Optional[int]* | :heavy_minus_sign: | A status indicator. If present and non-zero, indicates an error | \ No newline at end of file diff --git a/docs/models/operations/addlineupglobals.md b/docs/models/operations/addlineupglobals.md new file mode 100644 index 0000000..a5f6c1b --- /dev/null +++ b/docs/models/operations/addlineupglobals.md @@ -0,0 +1,18 @@ +# AddLineupGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/addlineupmediacontainer.md b/docs/models/operations/addlineupmediacontainer.md new file mode 100644 index 0000000..8bb2618 --- /dev/null +++ b/docs/models/operations/addlineupmediacontainer.md @@ -0,0 +1,9 @@ +# AddLineupMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.AddLineupDVRsMediaContainer]](../../models/operations/addlineupdvrsmediacontainer.md) | :heavy_minus_sign: | N/A | +| `dvr` | List[[operations.AddLineupDVR](../../models/operations/addlineupdvr.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/addlineuprequest.md b/docs/models/operations/addlineuprequest.md new file mode 100644 index 0000000..a14aaa2 --- /dev/null +++ b/docs/models/operations/addlineuprequest.md @@ -0,0 +1,20 @@ +# AddLineupRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `dvr_id` | *int* | :heavy_check_mark: | The ID of the DVR. | | +| `lineup` | *str* | :heavy_check_mark: | The lineup to delete | | \ No newline at end of file diff --git a/docs/models/operations/addlineupresponse.md b/docs/models/operations/addlineupresponse.md new file mode 100644 index 0000000..4780d9d --- /dev/null +++ b/docs/models/operations/addlineupresponse.md @@ -0,0 +1,12 @@ +# AddLineupResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.AddLineupResponseBody]](../../models/operations/addlineupresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/addlineupresponsebody.md b/docs/models/operations/addlineupresponsebody.md new file mode 100644 index 0000000..5237e6b --- /dev/null +++ b/docs/models/operations/addlineupresponsebody.md @@ -0,0 +1,10 @@ +# AddLineupResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.AddLineupMediaContainer]](../../models/operations/addlineupmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/addplaylistcontentsmediacontainer.md b/docs/models/operations/addplaylistcontentsmediacontainer.md deleted file mode 100644 index 064f5f1..0000000 --- a/docs/models/operations/addplaylistcontentsmediacontainer.md +++ /dev/null @@ -1,11 +0,0 @@ -# AddPlaylistContentsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `leaf_count_added` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `leaf_count_requested` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `metadata` | List[[operations.AddPlaylistContentsMetadata](../../models/operations/addplaylistcontentsmetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/addplaylistcontentsmetadata.md b/docs/models/operations/addplaylistcontentsmetadata.md deleted file mode 100644 index e303272..0000000 --- a/docs/models/operations/addplaylistcontentsmetadata.md +++ /dev/null @@ -1,20 +0,0 @@ -# AddPlaylistContentsMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 94 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /playlists/94/items | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.agents.none://972e3047-83d6-4848-a000-261f0af26ba2 | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | playlist | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | A great playlist | -| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | One of my great playlists | -| `smart` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `playlist_type` | *Optional[str]* | :heavy_minus_sign: | N/A | video | -| `composite` | *Optional[str]* | :heavy_minus_sign: | N/A | /playlists/94/composite/1705800070 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 423000 | -| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 3 | -| `added_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705716458 | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705800070 | \ No newline at end of file diff --git a/docs/models/operations/addplaylistcontentsrequest.md b/docs/models/operations/addplaylistcontentsrequest.md deleted file mode 100644 index 192438a..0000000 --- a/docs/models/operations/addplaylistcontentsrequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# AddPlaylistContentsRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | ------------------------------------------------------------- | -| `playlist_id` | *float* | :heavy_check_mark: | the ID of the playlist | | -| `uri` | *str* | :heavy_check_mark: | the content URI for the playlist | server://12345/com.plexapp.plugins.library/library/metadata/1 | -| `play_queue_id` | *Optional[float]* | :heavy_minus_sign: | the play queue to add to a playlist | 123 | \ No newline at end of file diff --git a/docs/models/operations/addplaylistcontentsresponse.md b/docs/models/operations/addplaylistcontentsresponse.md deleted file mode 100644 index af1a6cd..0000000 --- a/docs/models/operations/addplaylistcontentsresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# AddPlaylistContentsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.AddPlaylistContentsResponseBody]](../../models/operations/addplaylistcontentsresponsebody.md) | :heavy_minus_sign: | Playlist Updated | \ No newline at end of file diff --git a/docs/models/operations/addplaylistcontentsresponsebody.md b/docs/models/operations/addplaylistcontentsresponsebody.md deleted file mode 100644 index 6a842aa..0000000 --- a/docs/models/operations/addplaylistcontentsresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# AddPlaylistContentsResponseBody - -Playlist Updated - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.AddPlaylistContentsMediaContainer]](../../models/operations/addplaylistcontentsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/addplaylistitemsglobals.md b/docs/models/operations/addplaylistitemsglobals.md new file mode 100644 index 0000000..d77e7f8 --- /dev/null +++ b/docs/models/operations/addplaylistitemsglobals.md @@ -0,0 +1,18 @@ +# AddPlaylistItemsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/addplaylistitemsrequest.md b/docs/models/operations/addplaylistitemsrequest.md new file mode 100644 index 0000000..914fbc2 --- /dev/null +++ b/docs/models/operations/addplaylistitemsrequest.md @@ -0,0 +1,21 @@ +# AddPlaylistItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `playlist_id` | *int* | :heavy_check_mark: | The ID of the playlist | | +| `uri` | *Optional[str]* | :heavy_minus_sign: | The content URI for the playlist. | | +| `play_queue_id` | *Optional[int]* | :heavy_minus_sign: | The play queue to add to a playlist. | | \ No newline at end of file diff --git a/docs/models/operations/addplaylistitemsresponse.md b/docs/models/operations/addplaylistitemsresponse.md new file mode 100644 index 0000000..74efb5c --- /dev/null +++ b/docs/models/operations/addplaylistitemsresponse.md @@ -0,0 +1,11 @@ +# AddPlaylistItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_playlist_metadata` | [Optional[components.MediaContainerWithPlaylistMetadata]](../../models/components/mediacontainerwithplaylistmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/addproviderglobals.md b/docs/models/operations/addproviderglobals.md new file mode 100644 index 0000000..52d0c49 --- /dev/null +++ b/docs/models/operations/addproviderglobals.md @@ -0,0 +1,18 @@ +# AddProviderGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/addproviderrequest.md b/docs/models/operations/addproviderrequest.md new file mode 100644 index 0000000..cab9f06 --- /dev/null +++ b/docs/models/operations/addproviderrequest.md @@ -0,0 +1,19 @@ +# AddProviderRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `url` | *str* | :heavy_check_mark: | The URL of the media provider to add. | | \ No newline at end of file diff --git a/docs/models/operations/addproviderresponse.md b/docs/models/operations/addproviderresponse.md new file mode 100644 index 0000000..c4e1182 --- /dev/null +++ b/docs/models/operations/addproviderresponse.md @@ -0,0 +1,10 @@ +# AddProviderResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/addsectionglobals.md b/docs/models/operations/addsectionglobals.md new file mode 100644 index 0000000..36e8410 --- /dev/null +++ b/docs/models/operations/addsectionglobals.md @@ -0,0 +1,18 @@ +# AddSectionGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/addsectionrequest.md b/docs/models/operations/addsectionrequest.md new file mode 100644 index 0000000..9952d84 --- /dev/null +++ b/docs/models/operations/addsectionrequest.md @@ -0,0 +1,28 @@ +# AddSectionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `name` | *str* | :heavy_check_mark: | The name of the new section | | +| `type` | *int* | :heavy_check_mark: | The type of library section | | +| `scanner` | *Optional[str]* | :heavy_minus_sign: | The scanner this section should use | | +| `agent` | *str* | :heavy_check_mark: | The agent this section should use for metadata | | +| `metadata_agent_provider_group_id` | *Optional[str]* | :heavy_minus_sign: | The agent group id for this section | | +| `language` | *str* | :heavy_check_mark: | The language of this section | | +| `locations` | List[*str*] | :heavy_minus_sign: | The locations on disk to add to this section | [
"O:\\fatboy\\Media\\Ripped\\Music",
"O:\\fatboy\\Media\\My Music"
] | +| `prefs` | [Optional[operations.QueryParamPrefs]](../../models/operations/queryparamprefs.md) | :heavy_minus_sign: | The preferences for this section | {
"collectionMode": 2,
"hidden": 0
} | +| `relative` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | If set, paths are relative to `Media Upload` path | 1 | +| `import_fromi_tunes` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | If set, import media from iTunes. | 1 | \ No newline at end of file diff --git a/docs/models/operations/addsectionresponse.md b/docs/models/operations/addsectionresponse.md new file mode 100644 index 0000000..4b2b7eb --- /dev/null +++ b/docs/models/operations/addsectionresponse.md @@ -0,0 +1,11 @@ +# AddSectionResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `slash_get_responses_200` | [Optional[components.SlashGetResponses200]](../../models/components/slashgetresponses200.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/addsubtitlesglobals.md b/docs/models/operations/addsubtitlesglobals.md new file mode 100644 index 0000000..9edcafa --- /dev/null +++ b/docs/models/operations/addsubtitlesglobals.md @@ -0,0 +1,18 @@ +# AddSubtitlesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/addsubtitlesrequest.md b/docs/models/operations/addsubtitlesrequest.md new file mode 100644 index 0000000..fa68687 --- /dev/null +++ b/docs/models/operations/addsubtitlesrequest.md @@ -0,0 +1,26 @@ +# AddSubtitlesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `media_item_id` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `url` | *Optional[str]* | :heavy_minus_sign: | The URL of the subtitle. If not provided, the contents of the subtitle must be in the post body | | +| `format_` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `forced` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | N/A | 1 | +| `hearing_impaired` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/models/operations/addsubtitlesresponse.md b/docs/models/operations/addsubtitlesresponse.md new file mode 100644 index 0000000..5225c3f --- /dev/null +++ b/docs/models/operations/addsubtitlesresponse.md @@ -0,0 +1,10 @@ +# AddSubtitlesResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/addtoplayqueueglobals.md b/docs/models/operations/addtoplayqueueglobals.md new file mode 100644 index 0000000..9d4ea96 --- /dev/null +++ b/docs/models/operations/addtoplayqueueglobals.md @@ -0,0 +1,18 @@ +# AddToPlayQueueGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/addtoplayqueuerequest.md b/docs/models/operations/addtoplayqueuerequest.md new file mode 100644 index 0000000..ad60566 --- /dev/null +++ b/docs/models/operations/addtoplayqueuerequest.md @@ -0,0 +1,22 @@ +# AddToPlayQueueRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `play_queue_id` | *int* | :heavy_check_mark: | The ID of the play queue. | | +| `uri` | *Optional[str]* | :heavy_minus_sign: | The content URI for what we're adding to the queue. | | +| `playlist_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the playlist to add to the playQueue. | | +| `next` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Play this item next (defaults to 0 - queueing at the end of manually queued items). | 1 | \ No newline at end of file diff --git a/docs/models/operations/addtoplayqueueresponse.md b/docs/models/operations/addtoplayqueueresponse.md new file mode 100644 index 0000000..192a93a --- /dev/null +++ b/docs/models/operations/addtoplayqueueresponse.md @@ -0,0 +1,11 @@ +# AddToPlayQueueResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_playlist_metadata` | [Optional[components.MediaContainerWithPlaylistMetadata]](../../models/components/mediacontainerwithplaylistmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/advancedsubtitles.md b/docs/models/operations/advancedsubtitles.md new file mode 100644 index 0000000..2748c7b --- /dev/null +++ b/docs/models/operations/advancedsubtitles.md @@ -0,0 +1,13 @@ +# AdvancedSubtitles + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `AUTO` | auto | +| `BURN` | burn | +| `NONE` | none | +| `SIDECAR` | sidecar | +| `EMBEDDED` | embedded | +| `SEGMENTED` | segmented | \ No newline at end of file diff --git a/docs/models/operations/alllibraries.md b/docs/models/operations/alllibraries.md deleted file mode 100644 index 31424c0..0000000 --- a/docs/models/operations/alllibraries.md +++ /dev/null @@ -1,11 +0,0 @@ -# AllLibraries - -Indicates if the user has access to all libraries. - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/allowcameraupload.md b/docs/models/operations/allowcameraupload.md deleted file mode 100644 index 5baa5ec..0000000 --- a/docs/models/operations/allowcameraupload.md +++ /dev/null @@ -1,11 +0,0 @@ -# AllowCameraUpload - -Indicates if the user is allowed to upload from a camera. - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/allowchannels.md b/docs/models/operations/allowchannels.md deleted file mode 100644 index 1e9ef0e..0000000 --- a/docs/models/operations/allowchannels.md +++ /dev/null @@ -1,11 +0,0 @@ -# AllowChannels - -Indicates if the user has access to channels. - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/allowsubtitleadmin.md b/docs/models/operations/allowsubtitleadmin.md deleted file mode 100644 index 2078c0e..0000000 --- a/docs/models/operations/allowsubtitleadmin.md +++ /dev/null @@ -1,11 +0,0 @@ -# AllowSubtitleAdmin - -Indicates if the user can manage subtitles. - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/allowsync.md b/docs/models/operations/allowsync.md deleted file mode 100644 index 82d8fd4..0000000 --- a/docs/models/operations/allowsync.md +++ /dev/null @@ -1,11 +0,0 @@ -# AllowSync - -Indicates if the user is allowed to sync media. - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/allowtuners.md b/docs/models/operations/allowtuners.md deleted file mode 100644 index d0edbab..0000000 --- a/docs/models/operations/allowtuners.md +++ /dev/null @@ -1,11 +0,0 @@ -# AllowTuners - -Indicates if the user is allowed to use tuners. - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/analyzemetadataglobals.md b/docs/models/operations/analyzemetadataglobals.md new file mode 100644 index 0000000..7466d34 --- /dev/null +++ b/docs/models/operations/analyzemetadataglobals.md @@ -0,0 +1,18 @@ +# AnalyzeMetadataGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/analyzemetadatarequest.md b/docs/models/operations/analyzemetadatarequest.md new file mode 100644 index 0000000..fd2fce4 --- /dev/null +++ b/docs/models/operations/analyzemetadatarequest.md @@ -0,0 +1,21 @@ +# AnalyzeMetadataRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `thumb_offset` | *Optional[float]* | :heavy_minus_sign: | Set the offset to be used for thumbnails | | +| `art_offset` | *Optional[float]* | :heavy_minus_sign: | Set the offset to be used for artwork | | \ No newline at end of file diff --git a/docs/models/operations/analyzemetadataresponse.md b/docs/models/operations/analyzemetadataresponse.md new file mode 100644 index 0000000..459bed4 --- /dev/null +++ b/docs/models/operations/analyzemetadataresponse.md @@ -0,0 +1,10 @@ +# AnalyzeMetadataResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/applyupdatesglobals.md b/docs/models/operations/applyupdatesglobals.md new file mode 100644 index 0000000..cf367ac --- /dev/null +++ b/docs/models/operations/applyupdatesglobals.md @@ -0,0 +1,18 @@ +# ApplyUpdatesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/applyupdatesrequest.md b/docs/models/operations/applyupdatesrequest.md index 61e10a8..2983ca2 100644 --- a/docs/models/operations/applyupdatesrequest.md +++ b/docs/models/operations/applyupdatesrequest.md @@ -3,7 +3,18 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `tonight` | [Optional[operations.Tonight]](../../models/operations/tonight.md) | :heavy_minus_sign: | Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install | 1 | -| `skip` | [Optional[operations.Skip]](../../models/operations/skip.md) | :heavy_minus_sign: | Indicate that the latest version should be marked as skipped. The [Release] entry for this version will have the `state` set to `skipped`. | 1 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `tonight` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install immediately. | 1 | +| `skip` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicate that the latest version should be marked as skipped. The entry for this version will have the `state` set to `skipped`. | 1 | \ No newline at end of file diff --git a/docs/models/operations/args.md b/docs/models/operations/args.md new file mode 100644 index 0000000..40841ae --- /dev/null +++ b/docs/models/operations/args.md @@ -0,0 +1,9 @@ +# Args + +The new values for the metadata item + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/attributes.md b/docs/models/operations/attributes.md index 3880269..8fe3689 100644 --- a/docs/models/operations/attributes.md +++ b/docs/models/operations/attributes.md @@ -1,11 +1,9 @@ # Attributes -Attributes associated with the marker. +The attributes to assign to this marker ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The identifier for the attributes. | 306970 | -| `version` | *Optional[int]* | :heavy_minus_sign: | The version number of the marker attributes. | 4 | \ No newline at end of file +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/autocompleteglobals.md b/docs/models/operations/autocompleteglobals.md new file mode 100644 index 0000000..ae10c96 --- /dev/null +++ b/docs/models/operations/autocompleteglobals.md @@ -0,0 +1,18 @@ +# AutocompleteGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/autocompleterequest.md b/docs/models/operations/autocompleterequest.md new file mode 100644 index 0000000..d9f8150 --- /dev/null +++ b/docs/models/operations/autocompleterequest.md @@ -0,0 +1,22 @@ +# AutocompleteRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | +| `type` | *Optional[int]* | :heavy_minus_sign: | Item type | | +| `field_query` | *Optional[str]* | :heavy_minus_sign: | The "field" stands in for any field, the value is a partial string for matching | | +| `media_query` | [Optional[components.MediaQuery]](../../models/components/mediaquery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | \ No newline at end of file diff --git a/docs/models/operations/autocompleteresponse.md b/docs/models/operations/autocompleteresponse.md new file mode 100644 index 0000000..0442f3c --- /dev/null +++ b/docs/models/operations/autocompleteresponse.md @@ -0,0 +1,12 @@ +# AutocompleteResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/autoselectsubtitle.md b/docs/models/operations/autoselectsubtitle.md deleted file mode 100644 index 7639f25..0000000 --- a/docs/models/operations/autoselectsubtitle.md +++ /dev/null @@ -1,11 +0,0 @@ -# AutoSelectSubtitle - -The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled) - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/bandwidth.md b/docs/models/operations/bandwidth.md new file mode 100644 index 0000000..f8d4818 --- /dev/null +++ b/docs/models/operations/bandwidth.md @@ -0,0 +1,10 @@ +# Bandwidth + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `bandwidth` | *Optional[int]* | :heavy_minus_sign: | The bandwidth at this time in kbps | +| `resolution` | *Optional[str]* | :heavy_minus_sign: | The user-friendly resolution at this time | +| `time` | *Optional[int]* | :heavy_minus_sign: | Media playback time where this bandwidth started | \ No newline at end of file diff --git a/docs/models/operations/bandwidths.md b/docs/models/operations/bandwidths.md new file mode 100644 index 0000000..a8c11fa --- /dev/null +++ b/docs/models/operations/bandwidths.md @@ -0,0 +1,10 @@ +# Bandwidths + +A list of media times and bandwidths when trascoding is using with auto adjustment of bandwidth + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `bandwidth` | List[[operations.Bandwidth](../../models/operations/bandwidth.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/billing.md b/docs/models/operations/billing.md deleted file mode 100644 index b21aeca..0000000 --- a/docs/models/operations/billing.md +++ /dev/null @@ -1,9 +0,0 @@ -# Billing - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `internal_payment_method` | [operations.InternalPaymentMethod](../../models/operations/internalpaymentmethod.md) | :heavy_check_mark: | N/A | -| `payment_method_id` | *Nullable[int]* | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/butlertask.md b/docs/models/operations/butlertask.md index cfd69c2..9e31f51 100644 --- a/docs/models/operations/butlertask.md +++ b/docs/models/operations/butlertask.md @@ -3,11 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | BackupDatabase | -| `interval` | *Optional[float]* | :heavy_minus_sign: | N/A | 3 | -| `schedule_randomized` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `enabled` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Backup Database | -| `description` | *Optional[str]* | :heavy_minus_sign: | N/A | Create a backup copy of the server's database in the configured backup directory | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `description` | *Optional[str]* | :heavy_minus_sign: | A user-friendly description of the task | +| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Whether this task is enabled or not | +| `interval` | *Optional[int]* | :heavy_minus_sign: | The interval (in days) of when this task is run. A value of 1 is run every day, 7 is every week, etc. | +| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the task | +| `schedule_randomized` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether the timing of the task is randomized within the butler interval | +| `title` | *Optional[str]* | :heavy_minus_sign: | A user-friendly title of the task | \ No newline at end of file diff --git a/docs/models/operations/cancelactivityglobals.md b/docs/models/operations/cancelactivityglobals.md new file mode 100644 index 0000000..29de5f8 --- /dev/null +++ b/docs/models/operations/cancelactivityglobals.md @@ -0,0 +1,18 @@ +# CancelActivityGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/cancelactivityrequest.md b/docs/models/operations/cancelactivityrequest.md new file mode 100644 index 0000000..e9beea6 --- /dev/null +++ b/docs/models/operations/cancelactivityrequest.md @@ -0,0 +1,19 @@ +# CancelActivityRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `activity_id` | *str* | :heavy_check_mark: | The UUID of the activity to cancel. | d6199ba1-fb5e-4cae-bf17-1a5369c1cf1e | \ No newline at end of file diff --git a/docs/models/operations/cancelactivityresponse.md b/docs/models/operations/cancelactivityresponse.md new file mode 100644 index 0000000..03143e3 --- /dev/null +++ b/docs/models/operations/cancelactivityresponse.md @@ -0,0 +1,10 @@ +# CancelActivityResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/cancelgrabglobals.md b/docs/models/operations/cancelgrabglobals.md new file mode 100644 index 0000000..ebef67d --- /dev/null +++ b/docs/models/operations/cancelgrabglobals.md @@ -0,0 +1,18 @@ +# CancelGrabGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/cancelgrabrequest.md b/docs/models/operations/cancelgrabrequest.md new file mode 100644 index 0000000..aba4c4c --- /dev/null +++ b/docs/models/operations/cancelgrabrequest.md @@ -0,0 +1,19 @@ +# CancelGrabRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `operation_id` | *str* | :heavy_check_mark: | The ID of the operation. | | \ No newline at end of file diff --git a/docs/models/operations/cancelgrabresponse.md b/docs/models/operations/cancelgrabresponse.md new file mode 100644 index 0000000..223a96c --- /dev/null +++ b/docs/models/operations/cancelgrabresponse.md @@ -0,0 +1,10 @@ +# CancelGrabResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/cancelrefreshglobals.md b/docs/models/operations/cancelrefreshglobals.md new file mode 100644 index 0000000..c28d97c --- /dev/null +++ b/docs/models/operations/cancelrefreshglobals.md @@ -0,0 +1,18 @@ +# CancelRefreshGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/cancelrefreshrequest.md b/docs/models/operations/cancelrefreshrequest.md new file mode 100644 index 0000000..bc42a09 --- /dev/null +++ b/docs/models/operations/cancelrefreshrequest.md @@ -0,0 +1,19 @@ +# CancelRefreshRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/models/operations/cancelrefreshresponse.md b/docs/models/operations/cancelrefreshresponse.md new file mode 100644 index 0000000..7cd7580 --- /dev/null +++ b/docs/models/operations/cancelrefreshresponse.md @@ -0,0 +1,10 @@ +# CancelRefreshResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/cancelserveractivitiesrequest.md b/docs/models/operations/cancelserveractivitiesrequest.md deleted file mode 100644 index 626d991..0000000 --- a/docs/models/operations/cancelserveractivitiesrequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# CancelServerActivitiesRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | -| `activity_uuid` | *str* | :heavy_check_mark: | The UUID of the activity to cancel. | 25b71ed5-0f9d-461c-baa7-d404e9e10d3e | \ No newline at end of file diff --git a/docs/models/operations/cancelserveractivitiesresponse.md b/docs/models/operations/cancelserveractivitiesresponse.md deleted file mode 100644 index cdb7e43..0000000 --- a/docs/models/operations/cancelserveractivitiesresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# CancelServerActivitiesResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/channelmapping.md b/docs/models/operations/channelmapping.md new file mode 100644 index 0000000..9673f87 --- /dev/null +++ b/docs/models/operations/channelmapping.md @@ -0,0 +1,9 @@ +# ChannelMapping + +The mapping of changes, passed as a map of device channel to lineup VCN. + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/channelmappingbykey.md b/docs/models/operations/channelmappingbykey.md new file mode 100644 index 0000000..0d81ecb --- /dev/null +++ b/docs/models/operations/channelmappingbykey.md @@ -0,0 +1,9 @@ +# ChannelMappingByKey + +The mapping of changes, passed as a map of device channel to lineup key. + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/chapter.md b/docs/models/operations/chapter.md deleted file mode 100644 index 3424538..0000000 --- a/docs/models/operations/chapter.md +++ /dev/null @@ -1,15 +0,0 @@ -# Chapter - -The thumbnail for the chapter - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | -| `id` | *int* | :heavy_check_mark: | N/A | 4 | -| `filter_` | *str* | :heavy_check_mark: | N/A | thumb=4 | -| `index` | *int* | :heavy_check_mark: | N/A | 1 | -| `start_time_offset` | *int* | :heavy_check_mark: | N/A | 0 | -| `end_time_offset` | *int* | :heavy_check_mark: | N/A | 100100 | -| `thumb` | *str* | :heavy_check_mark: | N/A | /library/media/46883/chapterImages/1 | \ No newline at end of file diff --git a/docs/models/operations/checkforupdatesrequest.md b/docs/models/operations/checkforupdatesrequest.md deleted file mode 100644 index 1cb9759..0000000 --- a/docs/models/operations/checkforupdatesrequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# CheckForUpdatesRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `download` | [Optional[operations.Download]](../../models/operations/download.md) | :heavy_minus_sign: | Indicate that you want to start download any updates found. | 1 | \ No newline at end of file diff --git a/docs/models/operations/checkforupdatesresponse.md b/docs/models/operations/checkforupdatesresponse.md deleted file mode 100644 index 6bcf227..0000000 --- a/docs/models/operations/checkforupdatesresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# CheckForUpdatesResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/checkupdatesglobals.md b/docs/models/operations/checkupdatesglobals.md new file mode 100644 index 0000000..a085f6e --- /dev/null +++ b/docs/models/operations/checkupdatesglobals.md @@ -0,0 +1,18 @@ +# CheckUpdatesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/checkupdatesrequest.md b/docs/models/operations/checkupdatesrequest.md new file mode 100644 index 0000000..4d174bc --- /dev/null +++ b/docs/models/operations/checkupdatesrequest.md @@ -0,0 +1,19 @@ +# CheckUpdatesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `download` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicate that you want to start download any updates found. | 1 | \ No newline at end of file diff --git a/docs/models/operations/checkupdatesresponse.md b/docs/models/operations/checkupdatesresponse.md new file mode 100644 index 0000000..c422a88 --- /dev/null +++ b/docs/models/operations/checkupdatesresponse.md @@ -0,0 +1,10 @@ +# CheckUpdatesResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/chromasubsampling.md b/docs/models/operations/chromasubsampling.md new file mode 100644 index 0000000..ddb6c39 --- /dev/null +++ b/docs/models/operations/chromasubsampling.md @@ -0,0 +1,18 @@ +# ChromaSubsampling + +Use the specified chroma subsambling. + - 0: 411 + - 1: 420 + - 2: 422 + - 3: 444 +Defaults to 3 (444) + + +## Values + +| Name | Value | +| ------- | ------- | +| `ZERO` | 0 | +| `ONE` | 1 | +| `TWO` | 2 | +| `THREE` | 3 | \ No newline at end of file diff --git a/docs/models/operations/cleanbundlesresponse.md b/docs/models/operations/cleanbundlesresponse.md new file mode 100644 index 0000000..d240d88 --- /dev/null +++ b/docs/models/operations/cleanbundlesresponse.md @@ -0,0 +1,10 @@ +# CleanBundlesResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/clearplaylistcontentsrequest.md b/docs/models/operations/clearplaylistcontentsrequest.md deleted file mode 100644 index e410b79..0000000 --- a/docs/models/operations/clearplaylistcontentsrequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# ClearPlaylistContentsRequest - - -## Fields - -| Field | Type | Required | Description | -| ---------------------- | ---------------------- | ---------------------- | ---------------------- | -| `playlist_id` | *float* | :heavy_check_mark: | the ID of the playlist | \ No newline at end of file diff --git a/docs/models/operations/clearplaylistcontentsresponse.md b/docs/models/operations/clearplaylistcontentsresponse.md deleted file mode 100644 index 17d62b8..0000000 --- a/docs/models/operations/clearplaylistcontentsresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# ClearPlaylistContentsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/clearplaylistitemsglobals.md b/docs/models/operations/clearplaylistitemsglobals.md new file mode 100644 index 0000000..e72ee82 --- /dev/null +++ b/docs/models/operations/clearplaylistitemsglobals.md @@ -0,0 +1,18 @@ +# ClearPlaylistItemsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/clearplaylistitemsrequest.md b/docs/models/operations/clearplaylistitemsrequest.md new file mode 100644 index 0000000..dc78f50 --- /dev/null +++ b/docs/models/operations/clearplaylistitemsrequest.md @@ -0,0 +1,19 @@ +# ClearPlaylistItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `playlist_id` | *int* | :heavy_check_mark: | The ID of the playlist | | \ No newline at end of file diff --git a/docs/models/operations/clearplaylistitemsresponse.md b/docs/models/operations/clearplaylistitemsresponse.md new file mode 100644 index 0000000..45b80cf --- /dev/null +++ b/docs/models/operations/clearplaylistitemsresponse.md @@ -0,0 +1,11 @@ +# ClearPlaylistItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_playlist_metadata` | [Optional[components.MediaContainerWithPlaylistMetadata]](../../models/components/mediacontainerwithplaylistmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/clearplayqueueglobals.md b/docs/models/operations/clearplayqueueglobals.md new file mode 100644 index 0000000..48ab9e4 --- /dev/null +++ b/docs/models/operations/clearplayqueueglobals.md @@ -0,0 +1,18 @@ +# ClearPlayQueueGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/clearplayqueuerequest.md b/docs/models/operations/clearplayqueuerequest.md new file mode 100644 index 0000000..18cda88 --- /dev/null +++ b/docs/models/operations/clearplayqueuerequest.md @@ -0,0 +1,19 @@ +# ClearPlayQueueRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `play_queue_id` | *int* | :heavy_check_mark: | The ID of the play queue. | | \ No newline at end of file diff --git a/docs/models/operations/clearplayqueueresponse.md b/docs/models/operations/clearplayqueueresponse.md new file mode 100644 index 0000000..a0aa84c --- /dev/null +++ b/docs/models/operations/clearplayqueueresponse.md @@ -0,0 +1,11 @@ +# ClearPlayQueueResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_playlist_metadata` | [Optional[components.MediaContainerWithPlaylistMetadata]](../../models/components/mediacontainerwithplaylistmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/collection.md b/docs/models/operations/collection.md deleted file mode 100644 index 047c09d..0000000 --- a/docs/models/operations/collection.md +++ /dev/null @@ -1,8 +0,0 @@ -# Collection - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `tag` | *str* | :heavy_check_mark: | The user-made collection this media item belongs to | My Awesome Collection | \ No newline at end of file diff --git a/docs/models/operations/computechannelmapchannelmapping.md b/docs/models/operations/computechannelmapchannelmapping.md new file mode 100644 index 0000000..72fd5b2 --- /dev/null +++ b/docs/models/operations/computechannelmapchannelmapping.md @@ -0,0 +1,11 @@ +# ComputeChannelMapChannelMapping + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | +| `channel_key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `device_identifier` | *Optional[str]* | :heavy_minus_sign: | The channel description on the device | +| `favorite` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `lineup_identifier` | *Optional[str]* | :heavy_minus_sign: | The channel identifier in the lineup | \ No newline at end of file diff --git a/docs/models/operations/computechannelmapglobals.md b/docs/models/operations/computechannelmapglobals.md new file mode 100644 index 0000000..8eb2426 --- /dev/null +++ b/docs/models/operations/computechannelmapglobals.md @@ -0,0 +1,18 @@ +# ComputeChannelMapGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/computechannelmapmediacontainer.md b/docs/models/operations/computechannelmapmediacontainer.md new file mode 100644 index 0000000..a5a0fc2 --- /dev/null +++ b/docs/models/operations/computechannelmapmediacontainer.md @@ -0,0 +1,17 @@ +# ComputeChannelMapMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `channel_mapping` | List[[operations.ComputeChannelMapChannelMapping](../../models/operations/computechannelmapchannelmapping.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/computechannelmaprequest.md b/docs/models/operations/computechannelmaprequest.md new file mode 100644 index 0000000..c4a8a6c --- /dev/null +++ b/docs/models/operations/computechannelmaprequest.md @@ -0,0 +1,20 @@ +# ComputeChannelMapRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `device_query_parameter` | *str* | :heavy_check_mark: | The URI describing the device | | +| `lineup` | *str* | :heavy_check_mark: | The URI describing the lineup | | \ No newline at end of file diff --git a/docs/models/operations/computechannelmapresponse.md b/docs/models/operations/computechannelmapresponse.md new file mode 100644 index 0000000..63a122b --- /dev/null +++ b/docs/models/operations/computechannelmapresponse.md @@ -0,0 +1,12 @@ +# ComputeChannelMapResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.ComputeChannelMapResponseBody]](../../models/operations/computechannelmapresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/computechannelmapresponsebody.md b/docs/models/operations/computechannelmapresponsebody.md new file mode 100644 index 0000000..3bd497a --- /dev/null +++ b/docs/models/operations/computechannelmapresponsebody.md @@ -0,0 +1,10 @@ +# ComputeChannelMapResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.ComputeChannelMapMediaContainer]](../../models/operations/computechannelmapmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/connection.md b/docs/models/operations/connection.md new file mode 100644 index 0000000..db04e1c --- /dev/null +++ b/docs/models/operations/connection.md @@ -0,0 +1,13 @@ +# Connection + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | +| `address` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `local` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the connection is the server's LAN address | +| `port` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `protocol` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `relay` | *Optional[bool]* | :heavy_minus_sign: | Indicates the connection is over a relayed connection | +| `uri` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/connections.md b/docs/models/operations/connections.md deleted file mode 100644 index 6c3c576..0000000 --- a/docs/models/operations/connections.md +++ /dev/null @@ -1,14 +0,0 @@ -# Connections - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| `protocol` | [operations.Protocol](../../models/operations/protocol.md) | :heavy_check_mark: | The protocol used for the connection (http, https, etc) | http | -| `address` | *str* | :heavy_check_mark: | The (ip) address or domain name used for the connection | | -| `port` | *int* | :heavy_check_mark: | The port used for the connection | | -| `uri` | *str* | :heavy_check_mark: | The full URI of the connection | | -| `local` | *bool* | :heavy_check_mark: | If the connection is local address | | -| `relay` | *bool* | :heavy_check_mark: | If the connection is relayed through plex.direct | | -| `i_pv6` | *bool* | :heavy_check_mark: | If the connection is using IPv6 | | \ No newline at end of file diff --git a/docs/models/operations/connectwebsocketglobals.md b/docs/models/operations/connectwebsocketglobals.md new file mode 100644 index 0000000..a63a05a --- /dev/null +++ b/docs/models/operations/connectwebsocketglobals.md @@ -0,0 +1,18 @@ +# ConnectWebSocketGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/connectwebsocketrequest.md b/docs/models/operations/connectwebsocketrequest.md new file mode 100644 index 0000000..02e4ac7 --- /dev/null +++ b/docs/models/operations/connectwebsocketrequest.md @@ -0,0 +1,19 @@ +# ConnectWebSocketRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `filter_` | List[*str*] | :heavy_minus_sign: | By default, all events except logs are sent. A rich filtering mechanism is provided to allow clients to opt into or out of each event type using the `filters` parameter. For example:

- `filters=-log`: All event types except logs (the default).
- `filters=foo,bar`: Only the foo and bar event types.
- `filters=`: All events types.
- `filters=-foo,bar`: All event types except foo and bar.
| | \ No newline at end of file diff --git a/docs/models/operations/connectwebsocketresponse.md b/docs/models/operations/connectwebsocketresponse.md new file mode 100644 index 0000000..d7ebfed --- /dev/null +++ b/docs/models/operations/connectwebsocketresponse.md @@ -0,0 +1,11 @@ +# ConnectWebSocketResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/context.md b/docs/models/operations/context.md deleted file mode 100644 index f7c9e5e..0000000 --- a/docs/models/operations/context.md +++ /dev/null @@ -1,8 +0,0 @@ -# Context - - -## Fields - -| Field | Type | Required | Description | -| -------------------- | -------------------- | -------------------- | -------------------- | -| `library_section_id` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/country.md b/docs/models/operations/country.md index e01799e..bd2c844 100644 --- a/docs/models/operations/country.md +++ b/docs/models/operations/country.md @@ -1,12 +1,15 @@ # Country -The filter query string for country media items. - ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique identifier for the country.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | -| `tag` | *str* | :heavy_check_mark: | The country of origin of this media item | United States of America | -| `filter_` | *str* | :heavy_check_mark: | N/A | country=19 | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `code` | *Optional[str]* | :heavy_minus_sign: | Three letter code | +| `example` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `flavor` | [Optional[operations.Flavor]](../../models/operations/flavor.md) | :heavy_minus_sign: | - `0`: The country is divided into regions, and following the key will lead to a list of regions.
- `1`: The county is divided by postal codes, and an example code is returned in `example`.
- `2`: The country has a single postal code, returned in `example`.
| +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `language` | *Optional[str]* | :heavy_minus_sign: | Three letter language code | +| `language_title` | *Optional[str]* | :heavy_minus_sign: | The title of the language | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/createcollectionglobals.md b/docs/models/operations/createcollectionglobals.md new file mode 100644 index 0000000..2b18849 --- /dev/null +++ b/docs/models/operations/createcollectionglobals.md @@ -0,0 +1,18 @@ +# CreateCollectionGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/createcollectionrequest.md b/docs/models/operations/createcollectionrequest.md new file mode 100644 index 0000000..d48fcf4 --- /dev/null +++ b/docs/models/operations/createcollectionrequest.md @@ -0,0 +1,23 @@ +# CreateCollectionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *str* | :heavy_check_mark: | The section where this collection will be created | | +| `title` | *Optional[str]* | :heavy_minus_sign: | The title to filter by or assign | | +| `smart` | *Optional[bool]* | :heavy_minus_sign: | Whether this is a smart collection/playlist | | +| `uri` | *Optional[str]* | :heavy_minus_sign: | The URI for processing the smart collection. Required for a smart collection | | +| `type` | *Optional[int]* | :heavy_minus_sign: | The metadata type to filter by | | \ No newline at end of file diff --git a/docs/models/operations/createcollectionresponse.md b/docs/models/operations/createcollectionresponse.md new file mode 100644 index 0000000..85176bc --- /dev/null +++ b/docs/models/operations/createcollectionresponse.md @@ -0,0 +1,11 @@ +# CreateCollectionResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/createcustomhubglobals.md b/docs/models/operations/createcustomhubglobals.md new file mode 100644 index 0000000..7c00321 --- /dev/null +++ b/docs/models/operations/createcustomhubglobals.md @@ -0,0 +1,18 @@ +# CreateCustomHubGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/createcustomhubrequest.md b/docs/models/operations/createcustomhubrequest.md new file mode 100644 index 0000000..cd08a6d --- /dev/null +++ b/docs/models/operations/createcustomhubrequest.md @@ -0,0 +1,23 @@ +# CreateCustomHubRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | The section ID for the hubs to reorder | | +| `metadata_item_id` | *int* | :heavy_check_mark: | The metadata item on which to base this hub. This must currently be a collection | | +| `promoted_to_recommended` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether this hub should be displayed in recommended | 1 | +| `promoted_to_own_home` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether this hub should be displayed in admin's home | 1 | +| `promoted_to_shared_home` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether this hub should be displayed in shared user's home | 1 | \ No newline at end of file diff --git a/docs/models/operations/createcustomhubresponse.md b/docs/models/operations/createcustomhubresponse.md new file mode 100644 index 0000000..9814fb9 --- /dev/null +++ b/docs/models/operations/createcustomhubresponse.md @@ -0,0 +1,10 @@ +# CreateCustomHubResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/createdownloadqueuemediacontainer.md b/docs/models/operations/createdownloadqueuemediacontainer.md new file mode 100644 index 0000000..a364c60 --- /dev/null +++ b/docs/models/operations/createdownloadqueuemediacontainer.md @@ -0,0 +1,17 @@ +# CreateDownloadQueueMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `download_queue` | List[[operations.DownloadQueue](../../models/operations/downloadqueue.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/createdownloadqueueresponse.md b/docs/models/operations/createdownloadqueueresponse.md new file mode 100644 index 0000000..8bd96f4 --- /dev/null +++ b/docs/models/operations/createdownloadqueueresponse.md @@ -0,0 +1,11 @@ +# CreateDownloadQueueResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.CreateDownloadQueueResponseBody]](../../models/operations/createdownloadqueueresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/createdownloadqueueresponsebody.md b/docs/models/operations/createdownloadqueueresponsebody.md new file mode 100644 index 0000000..1941808 --- /dev/null +++ b/docs/models/operations/createdownloadqueueresponsebody.md @@ -0,0 +1,10 @@ +# CreateDownloadQueueResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.CreateDownloadQueueMediaContainer]](../../models/operations/createdownloadqueuemediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/createdvrglobals.md b/docs/models/operations/createdvrglobals.md new file mode 100644 index 0000000..2572b84 --- /dev/null +++ b/docs/models/operations/createdvrglobals.md @@ -0,0 +1,18 @@ +# CreateDVRGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/createdvrrequest.md b/docs/models/operations/createdvrrequest.md new file mode 100644 index 0000000..38f0981 --- /dev/null +++ b/docs/models/operations/createdvrrequest.md @@ -0,0 +1,21 @@ +# CreateDVRRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `lineup` | *Optional[str]* | :heavy_minus_sign: | The EPG lineup. | lineup://tv.plex.providers.epg.onconnect/USA-HI51418-DEFAULT | +| `device_query_parameter` | List[*str*] | :heavy_minus_sign: | The device. | device[]=device://tv.plex.grabbers.hdhomerun/1053C0CA | +| `language` | *Optional[str]* | :heavy_minus_sign: | The language. | eng | \ No newline at end of file diff --git a/docs/models/operations/createdvrresponse.md b/docs/models/operations/createdvrresponse.md new file mode 100644 index 0000000..bfa7644 --- /dev/null +++ b/docs/models/operations/createdvrresponse.md @@ -0,0 +1,12 @@ +# CreateDVRResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `dvr_request_handler_slash_get_responses_200` | [Optional[components.DvrRequestHandlerSlashGetResponses200]](../../models/components/dvrrequesthandlerslashgetresponses200.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/createmarkerglobals.md b/docs/models/operations/createmarkerglobals.md new file mode 100644 index 0000000..97d41c7 --- /dev/null +++ b/docs/models/operations/createmarkerglobals.md @@ -0,0 +1,18 @@ +# CreateMarkerGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/createmarkermediacontainer.md b/docs/models/operations/createmarkermediacontainer.md new file mode 100644 index 0000000..91cba49 --- /dev/null +++ b/docs/models/operations/createmarkermediacontainer.md @@ -0,0 +1,23 @@ +# CreateMarkerMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `color` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `end_time_offset` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `start_time_offset` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | [Optional[operations.CreateMarkerType]](../../models/operations/createmarkertype.md) | :heavy_minus_sign: | N/A | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/createmarkerrequest.md b/docs/models/operations/createmarkerrequest.md new file mode 100644 index 0000000..54ea679 --- /dev/null +++ b/docs/models/operations/createmarkerrequest.md @@ -0,0 +1,23 @@ +# CreateMarkerRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `type` | *int* | :heavy_check_mark: | The type of marker to edit/create | | +| `start_time_offset` | *int* | :heavy_check_mark: | The start time of the marker | | +| `end_time_offset` | *Optional[int]* | :heavy_minus_sign: | The end time of the marker | | +| `attributes` | [Optional[operations.Attributes]](../../models/operations/attributes.md) | :heavy_minus_sign: | The attributes to assign to this marker | {
"title": "My favorite spot"
} | \ No newline at end of file diff --git a/docs/models/operations/createmarkerresponse.md b/docs/models/operations/createmarkerresponse.md new file mode 100644 index 0000000..cd3d074 --- /dev/null +++ b/docs/models/operations/createmarkerresponse.md @@ -0,0 +1,11 @@ +# CreateMarkerResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.CreateMarkerResponseBody]](../../models/operations/createmarkerresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/createmarkerresponsebody.md b/docs/models/operations/createmarkerresponsebody.md new file mode 100644 index 0000000..60eff6f --- /dev/null +++ b/docs/models/operations/createmarkerresponsebody.md @@ -0,0 +1,10 @@ +# CreateMarkerResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.CreateMarkerMediaContainer]](../../models/operations/createmarkermediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/createmarkertype.md b/docs/models/operations/createmarkertype.md new file mode 100644 index 0000000..f605a7a --- /dev/null +++ b/docs/models/operations/createmarkertype.md @@ -0,0 +1,12 @@ +# CreateMarkerType + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `INTRO` | intro | +| `COMMERCIAL` | commercial | +| `BOOKMARK` | bookmark | +| `RESUME` | resume | +| `CREDIT` | credit | \ No newline at end of file diff --git a/docs/models/operations/createplaylistglobals.md b/docs/models/operations/createplaylistglobals.md new file mode 100644 index 0000000..151d8ff --- /dev/null +++ b/docs/models/operations/createplaylistglobals.md @@ -0,0 +1,18 @@ +# CreatePlaylistGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/createplaylistmediacontainer.md b/docs/models/operations/createplaylistmediacontainer.md deleted file mode 100644 index f8909d4..0000000 --- a/docs/models/operations/createplaylistmediacontainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# CreatePlaylistMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 7 | -| `metadata` | List[[operations.CreatePlaylistMetadata](../../models/operations/createplaylistmetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/createplaylistmetadata.md b/docs/models/operations/createplaylistmetadata.md deleted file mode 100644 index c1d1a11..0000000 --- a/docs/models/operations/createplaylistmetadata.md +++ /dev/null @@ -1,23 +0,0 @@ -# CreatePlaylistMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 96 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /playlists/96/items | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.agents.none://a2f92937-1408-40e2-b022-63a8a9377e55 | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | playlist | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | A Great Playlist | -| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | What a great playlist | -| `smart` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `playlist_type` | *Optional[str]* | :heavy_minus_sign: | N/A | video | -| `icon` | *Optional[str]* | :heavy_minus_sign: | N/A | playlist://image.smart | -| `view_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705719589 | -| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `added_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705719589 | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705724593 | -| `composite` | *Optional[str]* | :heavy_minus_sign: | N/A | /playlists/96/composite/1705724593 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 141000 | \ No newline at end of file diff --git a/docs/models/operations/createplaylistqueryparamtype.md b/docs/models/operations/createplaylistqueryparamtype.md deleted file mode 100644 index bb012f2..0000000 --- a/docs/models/operations/createplaylistqueryparamtype.md +++ /dev/null @@ -1,12 +0,0 @@ -# CreatePlaylistQueryParamType - -type of playlist to create - - -## Values - -| Name | Value | -| ------- | ------- | -| `AUDIO` | audio | -| `VIDEO` | video | -| `PHOTO` | photo | \ No newline at end of file diff --git a/docs/models/operations/createplaylistrequest.md b/docs/models/operations/createplaylistrequest.md index 8da6116..e571593 100644 --- a/docs/models/operations/createplaylistrequest.md +++ b/docs/models/operations/createplaylistrequest.md @@ -3,10 +3,18 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `title` | *str* | :heavy_check_mark: | name of the playlist | -| `type` | [operations.CreatePlaylistQueryParamType](../../models/operations/createplaylistqueryparamtype.md) | :heavy_check_mark: | type of playlist to create | -| `smart` | [operations.Smart](../../models/operations/smart.md) | :heavy_check_mark: | whether the playlist is smart or not | -| `uri` | *str* | :heavy_check_mark: | the content URI for the playlist | -| `play_queue_id` | *Optional[float]* | :heavy_minus_sign: | the play queue to copy to a playlist | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `uri` | *Optional[str]* | :heavy_minus_sign: | The content URI for what we're playing (e.g. `library://...`). | | +| `play_queue_id` | *Optional[int]* | :heavy_minus_sign: | To create a playlist from an existing play queue. | | \ No newline at end of file diff --git a/docs/models/operations/createplaylistresponse.md b/docs/models/operations/createplaylistresponse.md index cf543bd..b93c02a 100644 --- a/docs/models/operations/createplaylistresponse.md +++ b/docs/models/operations/createplaylistresponse.md @@ -3,9 +3,9 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.CreatePlaylistResponseBody]](../../models/operations/createplaylistresponsebody.md) | :heavy_minus_sign: | returns all playlists | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_playlist_metadata` | [Optional[components.MediaContainerWithPlaylistMetadata]](../../models/components/mediacontainerwithplaylistmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/createplaylistresponsebody.md b/docs/models/operations/createplaylistresponsebody.md deleted file mode 100644 index 801680c..0000000 --- a/docs/models/operations/createplaylistresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# CreatePlaylistResponseBody - -returns all playlists - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `media_container` | [Optional[operations.CreatePlaylistMediaContainer]](../../models/operations/createplaylistmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/createplayqueueglobals.md b/docs/models/operations/createplayqueueglobals.md new file mode 100644 index 0000000..339a3fa --- /dev/null +++ b/docs/models/operations/createplayqueueglobals.md @@ -0,0 +1,18 @@ +# CreatePlayQueueGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/createplayqueuemediacontainer.md b/docs/models/operations/createplayqueuemediacontainer.md new file mode 100644 index 0000000..2027384 --- /dev/null +++ b/docs/models/operations/createplayqueuemediacontainer.md @@ -0,0 +1,25 @@ +# CreatePlayQueueMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `play_queue_id` | *Optional[int]* | :heavy_minus_sign: | The ID of the play queue, which is used in subsequent requests. | +| `play_queue_last_added_item_id` | *Optional[str]* | :heavy_minus_sign: | Defines where the "Up Next" region starts | +| `play_queue_selected_item_id` | *Optional[int]* | :heavy_minus_sign: | The queue item ID of the currently selected item. | +| `play_queue_selected_item_offset` | *Optional[int]* | :heavy_minus_sign: | The offset of the selected item in the play queue, from the beginning of the queue. | +| `play_queue_selected_metadata_item_id` | *Optional[int]* | :heavy_minus_sign: | The metadata item ID of the currently selected item (matches `ratingKey` attribute in metadata item if the media provider is a library). | +| `play_queue_shuffled` | *Optional[bool]* | :heavy_minus_sign: | Whether or not the queue is shuffled. | +| `play_queue_source_uri` | *Optional[str]* | :heavy_minus_sign: | The original URI used to create the play queue. | +| `play_queue_total_count` | *Optional[int]* | :heavy_minus_sign: | The total number of items in the play queue. | +| `play_queue_version` | *Optional[int]* | :heavy_minus_sign: | The version of the play queue. It increments every time a change is made to the play queue to assist clients in knowing when to refresh. | \ No newline at end of file diff --git a/docs/models/operations/createplayqueuerequest.md b/docs/models/operations/createplayqueuerequest.md new file mode 100644 index 0000000..8d12f5e --- /dev/null +++ b/docs/models/operations/createplayqueuerequest.md @@ -0,0 +1,28 @@ +# CreatePlayQueueRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `uri` | *Optional[str]* | :heavy_minus_sign: | The content URI for what we're playing. | | +| `playlist_id` | *Optional[int]* | :heavy_minus_sign: | the ID of the playlist we're playing. | | +| `type` | [operations.Type](../../models/operations/type.md) | :heavy_check_mark: | The type of play queue to create | | +| `key` | *Optional[str]* | :heavy_minus_sign: | The key of the first item to play, defaults to the first in the play queue. | | +| `shuffle` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether to shuffle the playlist, defaults to 0. | 1 | +| `repeat` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | If the PQ is bigger than the window, fill any empty space with wraparound items, defaults to 0. | 1 | +| `continuous` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether to create a continuous play queue (e.g. from an episode), defaults to 0. | 1 | +| `extras_prefix_count` | *Optional[int]* | :heavy_minus_sign: | Number of trailers to prepend a movie with not including the pre-roll. If omitted the pre-roll will not be returned in the play queue. When resuming a movie `extrasPrefixCount` should be omitted as a parameter instead of passing 0. | | +| `recursive` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Only applies to queues of type photo, whether to retrieve all descendent photos from an album or section, defaults to 1. | 1 | +| `on_deck` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Only applies to queues of type show or seasons, whether to return a queue that is started on the On Deck episode if one exists. Otherwise begins the play queue on the beginning of the show or season. | 1 | \ No newline at end of file diff --git a/docs/models/operations/createplayqueueresponse.md b/docs/models/operations/createplayqueueresponse.md new file mode 100644 index 0000000..1ede91a --- /dev/null +++ b/docs/models/operations/createplayqueueresponse.md @@ -0,0 +1,12 @@ +# CreatePlayQueueResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.CreatePlayQueueResponseBody]](../../models/operations/createplayqueueresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/createplayqueueresponsebody.md b/docs/models/operations/createplayqueueresponsebody.md new file mode 100644 index 0000000..707c68d --- /dev/null +++ b/docs/models/operations/createplayqueueresponsebody.md @@ -0,0 +1,10 @@ +# CreatePlayQueueResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.CreatePlayQueueMediaContainer]](../../models/operations/createplayqueuemediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/createsubscriptionglobals.md b/docs/models/operations/createsubscriptionglobals.md new file mode 100644 index 0000000..2e79a39 --- /dev/null +++ b/docs/models/operations/createsubscriptionglobals.md @@ -0,0 +1,18 @@ +# CreateSubscriptionGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/createsubscriptionmediacontainer.md b/docs/models/operations/createsubscriptionmediacontainer.md new file mode 100644 index 0000000..7e71d47 --- /dev/null +++ b/docs/models/operations/createsubscriptionmediacontainer.md @@ -0,0 +1,17 @@ +# CreateSubscriptionMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `media_subscription` | List[[components.MediaSubscription](../../models/components/mediasubscription.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/createsubscriptionqueryparamprefs.md b/docs/models/operations/createsubscriptionqueryparamprefs.md new file mode 100644 index 0000000..b1cba5d --- /dev/null +++ b/docs/models/operations/createsubscriptionqueryparamprefs.md @@ -0,0 +1,9 @@ +# CreateSubscriptionQueryParamPrefs + +Subscription preferences. + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/createsubscriptionrequest.md b/docs/models/operations/createsubscriptionrequest.md new file mode 100644 index 0000000..cddeca5 --- /dev/null +++ b/docs/models/operations/createsubscriptionrequest.md @@ -0,0 +1,24 @@ +# CreateSubscriptionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `target_library_section_id` | *Optional[int]* | :heavy_minus_sign: | The library section into which we'll grab the media. Not actually required when the subscription is to a playlist. | 1 | +| `target_section_location_id` | *Optional[int]* | :heavy_minus_sign: | The section location into which to grab. | 3 | +| `type` | *Optional[int]* | :heavy_minus_sign: | The type of the thing we're subscribing too (e.g. show, season). | 2 | +| `hints` | [Optional[operations.Hints]](../../models/operations/hints.md) | :heavy_minus_sign: | Hints describing what we're looking for. Note: The hint `ratingKey` is required for downloading from a PMS remote. | {
"title": "Family Guy"
} | +| `prefs` | [Optional[operations.CreateSubscriptionQueryParamPrefs]](../../models/operations/createsubscriptionqueryparamprefs.md) | :heavy_minus_sign: | Subscription preferences. | {
"minVideoQuality": 720
} | +| `params` | [Optional[operations.Params]](../../models/operations/params.md) | :heavy_minus_sign: | Subscription parameters.
- `mediaProviderID`: Required for downloads to indicate which MP the subscription will download into
- `source`: Required for downloads to indicate the source of the downloaded content.
| {
"mediaProviderID": 1
} | \ No newline at end of file diff --git a/docs/models/operations/createsubscriptionresponse.md b/docs/models/operations/createsubscriptionresponse.md new file mode 100644 index 0000000..9efbbd7 --- /dev/null +++ b/docs/models/operations/createsubscriptionresponse.md @@ -0,0 +1,12 @@ +# CreateSubscriptionResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.CreateSubscriptionResponseBody]](../../models/operations/createsubscriptionresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/createsubscriptionresponsebody.md b/docs/models/operations/createsubscriptionresponsebody.md new file mode 100644 index 0000000..9376cd6 --- /dev/null +++ b/docs/models/operations/createsubscriptionresponsebody.md @@ -0,0 +1,10 @@ +# CreateSubscriptionResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.CreateSubscriptionMediaContainer]](../../models/operations/createsubscriptionmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/decisionresult.md b/docs/models/operations/decisionresult.md new file mode 100644 index 0000000..a31e76e --- /dev/null +++ b/docs/models/operations/decisionresult.md @@ -0,0 +1,16 @@ +# DecisionResult + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `available_bandwidth` | *Optional[int]* | :heavy_minus_sign: | The maximum bitrate set when item was added | +| `direct_play_decision_code` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `direct_play_decision_text` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `general_decision_code` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `general_decision_text` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `mde_decision_code` | *Optional[int]* | :heavy_minus_sign: | The code indicating the status of evaluation of playback when client indicates `hasMDE=1` | +| `mde_decision_text` | *Optional[str]* | :heavy_minus_sign: | Descriptive text for the above code | +| `transcode_decision_code` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `transcode_decision_text` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/defaultdirection.md b/docs/models/operations/defaultdirection.md deleted file mode 100644 index 1907c21..0000000 --- a/docs/models/operations/defaultdirection.md +++ /dev/null @@ -1,12 +0,0 @@ -# DefaultDirection - -The direction of the sort. Can be either `asc` or `desc`. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `ASCENDING` | asc | -| `DESCENDING` | desc | \ No newline at end of file diff --git a/docs/models/operations/defaultsubtitleaccessibility.md b/docs/models/operations/defaultsubtitleaccessibility.md deleted file mode 100644 index 759ce20..0000000 --- a/docs/models/operations/defaultsubtitleaccessibility.md +++ /dev/null @@ -1,11 +0,0 @@ -# DefaultSubtitleAccessibility - -The subtitles for the deaf or hard-of-hearing (SDH) searches mode (0 = Prefer non-SDH subtitles, 1 = Prefer SDH subtitles, 2 = Only show SDH subtitles, 3 = Only show non-SDH subtitles) - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/defaultsubtitleforced.md b/docs/models/operations/defaultsubtitleforced.md deleted file mode 100644 index 3cd4dcc..0000000 --- a/docs/models/operations/defaultsubtitleforced.md +++ /dev/null @@ -1,11 +0,0 @@ -# DefaultSubtitleForced - -The forced subtitles searches mode (0 = Prefer non-forced subtitles, 1 = Prefer forced subtitles, 2 = Only show forced subtitles, 3 = Only show non-forced subtitles) - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/deletecachesresponse.md b/docs/models/operations/deletecachesresponse.md new file mode 100644 index 0000000..e3f0b92 --- /dev/null +++ b/docs/models/operations/deletecachesresponse.md @@ -0,0 +1,10 @@ +# DeleteCachesResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/deletecollectionglobals.md b/docs/models/operations/deletecollectionglobals.md new file mode 100644 index 0000000..0ddaa7a --- /dev/null +++ b/docs/models/operations/deletecollectionglobals.md @@ -0,0 +1,18 @@ +# DeleteCollectionGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deletecollectionitemglobals.md b/docs/models/operations/deletecollectionitemglobals.md new file mode 100644 index 0000000..ac107ee --- /dev/null +++ b/docs/models/operations/deletecollectionitemglobals.md @@ -0,0 +1,18 @@ +# DeleteCollectionItemGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deletecollectionitemrequest.md b/docs/models/operations/deletecollectionitemrequest.md new file mode 100644 index 0000000..7436a8f --- /dev/null +++ b/docs/models/operations/deletecollectionitemrequest.md @@ -0,0 +1,20 @@ +# DeleteCollectionItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `collection_id` | *int* | :heavy_check_mark: | The collection id | | +| `item_id` | *int* | :heavy_check_mark: | The item to delete | | \ No newline at end of file diff --git a/docs/models/operations/deletecollectionitemresponse.md b/docs/models/operations/deletecollectionitemresponse.md new file mode 100644 index 0000000..42d9e3f --- /dev/null +++ b/docs/models/operations/deletecollectionitemresponse.md @@ -0,0 +1,11 @@ +# DeleteCollectionItemResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/deletecollectionrequest.md b/docs/models/operations/deletecollectionrequest.md new file mode 100644 index 0000000..4d498e7 --- /dev/null +++ b/docs/models/operations/deletecollectionrequest.md @@ -0,0 +1,20 @@ +# DeleteCollectionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | +| `collection_id` | *int* | :heavy_check_mark: | Collection Id | | \ No newline at end of file diff --git a/docs/models/operations/deletecollectionresponse.md b/docs/models/operations/deletecollectionresponse.md new file mode 100644 index 0000000..c3f5828 --- /dev/null +++ b/docs/models/operations/deletecollectionresponse.md @@ -0,0 +1,10 @@ +# DeleteCollectionResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/deletecustomhubglobals.md b/docs/models/operations/deletecustomhubglobals.md new file mode 100644 index 0000000..893fe9f --- /dev/null +++ b/docs/models/operations/deletecustomhubglobals.md @@ -0,0 +1,18 @@ +# DeleteCustomHubGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deletecustomhubrequest.md b/docs/models/operations/deletecustomhubrequest.md new file mode 100644 index 0000000..04a2389 --- /dev/null +++ b/docs/models/operations/deletecustomhubrequest.md @@ -0,0 +1,20 @@ +# DeleteCustomHubRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | The section ID for the hubs to change | | +| `identifier` | *str* | :heavy_check_mark: | The identifier of the hub to change | | \ No newline at end of file diff --git a/docs/models/operations/deletecustomhubresponse.md b/docs/models/operations/deletecustomhubresponse.md new file mode 100644 index 0000000..f697f79 --- /dev/null +++ b/docs/models/operations/deletecustomhubresponse.md @@ -0,0 +1,10 @@ +# DeleteCustomHubResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/deletedvrglobals.md b/docs/models/operations/deletedvrglobals.md new file mode 100644 index 0000000..c599950 --- /dev/null +++ b/docs/models/operations/deletedvrglobals.md @@ -0,0 +1,18 @@ +# DeleteDVRGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deletedvrrequest.md b/docs/models/operations/deletedvrrequest.md new file mode 100644 index 0000000..8be7e82 --- /dev/null +++ b/docs/models/operations/deletedvrrequest.md @@ -0,0 +1,19 @@ +# DeleteDVRRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `dvr_id` | *int* | :heavy_check_mark: | The ID of the DVR. | | \ No newline at end of file diff --git a/docs/models/operations/deletedvrresponse.md b/docs/models/operations/deletedvrresponse.md new file mode 100644 index 0000000..2ae2573 --- /dev/null +++ b/docs/models/operations/deletedvrresponse.md @@ -0,0 +1,10 @@ +# DeleteDVRResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/deletehistoryglobals.md b/docs/models/operations/deletehistoryglobals.md new file mode 100644 index 0000000..a0ef17c --- /dev/null +++ b/docs/models/operations/deletehistoryglobals.md @@ -0,0 +1,18 @@ +# DeleteHistoryGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deletehistoryrequest.md b/docs/models/operations/deletehistoryrequest.md new file mode 100644 index 0000000..48923a2 --- /dev/null +++ b/docs/models/operations/deletehistoryrequest.md @@ -0,0 +1,19 @@ +# DeleteHistoryRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `history_id` | *int* | :heavy_check_mark: | The id of the history item (the `historyKey` from above) | | \ No newline at end of file diff --git a/docs/models/operations/deletehistoryresponse.md b/docs/models/operations/deletehistoryresponse.md new file mode 100644 index 0000000..0c514f3 --- /dev/null +++ b/docs/models/operations/deletehistoryresponse.md @@ -0,0 +1,12 @@ +# DeleteHistoryResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container` | [Optional[components.MediaContainer]](../../models/components/mediacontainer.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/deleteindexesglobals.md b/docs/models/operations/deleteindexesglobals.md new file mode 100644 index 0000000..b90cf3f --- /dev/null +++ b/docs/models/operations/deleteindexesglobals.md @@ -0,0 +1,18 @@ +# DeleteIndexesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deleteindexesrequest.md b/docs/models/operations/deleteindexesrequest.md new file mode 100644 index 0000000..ab6a554 --- /dev/null +++ b/docs/models/operations/deleteindexesrequest.md @@ -0,0 +1,19 @@ +# DeleteIndexesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/models/operations/deleteindexesresponse.md b/docs/models/operations/deleteindexesresponse.md new file mode 100644 index 0000000..181e112 --- /dev/null +++ b/docs/models/operations/deleteindexesresponse.md @@ -0,0 +1,10 @@ +# DeleteIndexesResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/deleteintrosglobals.md b/docs/models/operations/deleteintrosglobals.md new file mode 100644 index 0000000..d879252 --- /dev/null +++ b/docs/models/operations/deleteintrosglobals.md @@ -0,0 +1,18 @@ +# DeleteIntrosGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deleteintrosrequest.md b/docs/models/operations/deleteintrosrequest.md new file mode 100644 index 0000000..f9a3dc2 --- /dev/null +++ b/docs/models/operations/deleteintrosrequest.md @@ -0,0 +1,19 @@ +# DeleteIntrosRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/models/operations/deleteintrosresponse.md b/docs/models/operations/deleteintrosresponse.md new file mode 100644 index 0000000..9b74a61 --- /dev/null +++ b/docs/models/operations/deleteintrosresponse.md @@ -0,0 +1,10 @@ +# DeleteIntrosResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/deletelibraryrequest.md b/docs/models/operations/deletelibraryrequest.md deleted file mode 100644 index c030394..0000000 --- a/docs/models/operations/deletelibraryrequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# DeleteLibraryRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | \ No newline at end of file diff --git a/docs/models/operations/deletelibraryresponse.md b/docs/models/operations/deletelibraryresponse.md deleted file mode 100644 index 51da590..0000000 --- a/docs/models/operations/deletelibraryresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# DeleteLibraryResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/deletelibrarysectionglobals.md b/docs/models/operations/deletelibrarysectionglobals.md new file mode 100644 index 0000000..a0ce97e --- /dev/null +++ b/docs/models/operations/deletelibrarysectionglobals.md @@ -0,0 +1,18 @@ +# DeleteLibrarySectionGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deletelibrarysectionrequest.md b/docs/models/operations/deletelibrarysectionrequest.md new file mode 100644 index 0000000..7e58df8 --- /dev/null +++ b/docs/models/operations/deletelibrarysectionrequest.md @@ -0,0 +1,20 @@ +# DeleteLibrarySectionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *str* | :heavy_check_mark: | The section identifier | | +| `async_` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | If set, response will return an activity with the actual deletion process. Otherwise request will return when deletion is complete | 1 | \ No newline at end of file diff --git a/docs/models/operations/deletelibrarysectionresponse.md b/docs/models/operations/deletelibrarysectionresponse.md new file mode 100644 index 0000000..7f4df24 --- /dev/null +++ b/docs/models/operations/deletelibrarysectionresponse.md @@ -0,0 +1,10 @@ +# DeleteLibrarySectionResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/deletelineupdvr.md b/docs/models/operations/deletelineupdvr.md new file mode 100644 index 0000000..b5e6376 --- /dev/null +++ b/docs/models/operations/deletelineupdvr.md @@ -0,0 +1,12 @@ +# DeleteLineupDVR + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `device` | List[[components.Device](../../models/components/device.md)] | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `lineup` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/deletelineupdvrsmediacontainer.md b/docs/models/operations/deletelineupdvrsmediacontainer.md new file mode 100644 index 0000000..0f5ed1a --- /dev/null +++ b/docs/models/operations/deletelineupdvrsmediacontainer.md @@ -0,0 +1,17 @@ +# DeleteLineupDVRsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `status` | *Optional[int]* | :heavy_minus_sign: | A status indicator. If present and non-zero, indicates an error | \ No newline at end of file diff --git a/docs/models/operations/deletelineupglobals.md b/docs/models/operations/deletelineupglobals.md new file mode 100644 index 0000000..655d447 --- /dev/null +++ b/docs/models/operations/deletelineupglobals.md @@ -0,0 +1,18 @@ +# DeleteLineupGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deletelineupmediacontainer.md b/docs/models/operations/deletelineupmediacontainer.md new file mode 100644 index 0000000..bcc35ed --- /dev/null +++ b/docs/models/operations/deletelineupmediacontainer.md @@ -0,0 +1,9 @@ +# DeleteLineupMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.DeleteLineupDVRsMediaContainer]](../../models/operations/deletelineupdvrsmediacontainer.md) | :heavy_minus_sign: | N/A | +| `dvr` | List[[operations.DeleteLineupDVR](../../models/operations/deletelineupdvr.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/deletelineuprequest.md b/docs/models/operations/deletelineuprequest.md new file mode 100644 index 0000000..85986bf --- /dev/null +++ b/docs/models/operations/deletelineuprequest.md @@ -0,0 +1,20 @@ +# DeleteLineupRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `dvr_id` | *int* | :heavy_check_mark: | The ID of the DVR. | | +| `lineup` | *str* | :heavy_check_mark: | The lineup to delete | | \ No newline at end of file diff --git a/docs/models/operations/deletelineupresponse.md b/docs/models/operations/deletelineupresponse.md new file mode 100644 index 0000000..112d0cb --- /dev/null +++ b/docs/models/operations/deletelineupresponse.md @@ -0,0 +1,12 @@ +# DeleteLineupResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.DeleteLineupResponseBody]](../../models/operations/deletelineupresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/deletelineupresponsebody.md b/docs/models/operations/deletelineupresponsebody.md new file mode 100644 index 0000000..55bb2f4 --- /dev/null +++ b/docs/models/operations/deletelineupresponsebody.md @@ -0,0 +1,10 @@ +# DeleteLineupResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.DeleteLineupMediaContainer]](../../models/operations/deletelineupmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/deletemarkerglobals.md b/docs/models/operations/deletemarkerglobals.md new file mode 100644 index 0000000..e9d039f --- /dev/null +++ b/docs/models/operations/deletemarkerglobals.md @@ -0,0 +1,18 @@ +# DeleteMarkerGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deletemarkerrequest.md b/docs/models/operations/deletemarkerrequest.md new file mode 100644 index 0000000..f9be138 --- /dev/null +++ b/docs/models/operations/deletemarkerrequest.md @@ -0,0 +1,20 @@ +# DeleteMarkerRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `marker` | *str* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/deletemarkerresponse.md b/docs/models/operations/deletemarkerresponse.md new file mode 100644 index 0000000..8ed8bf2 --- /dev/null +++ b/docs/models/operations/deletemarkerresponse.md @@ -0,0 +1,10 @@ +# DeleteMarkerResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/deletemediaitemglobals.md b/docs/models/operations/deletemediaitemglobals.md new file mode 100644 index 0000000..72798e6 --- /dev/null +++ b/docs/models/operations/deletemediaitemglobals.md @@ -0,0 +1,18 @@ +# DeleteMediaItemGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deletemediaitemrequest.md b/docs/models/operations/deletemediaitemrequest.md new file mode 100644 index 0000000..4016d29 --- /dev/null +++ b/docs/models/operations/deletemediaitemrequest.md @@ -0,0 +1,21 @@ +# DeleteMediaItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `media_item` | *str* | :heavy_check_mark: | N/A | | +| `proxy` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false. | 1 | \ No newline at end of file diff --git a/docs/models/operations/deletemediaitemresponse.md b/docs/models/operations/deletemediaitemresponse.md new file mode 100644 index 0000000..d390bfe --- /dev/null +++ b/docs/models/operations/deletemediaitemresponse.md @@ -0,0 +1,10 @@ +# DeleteMediaItemResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/deletemediaproviderglobals.md b/docs/models/operations/deletemediaproviderglobals.md new file mode 100644 index 0000000..323d951 --- /dev/null +++ b/docs/models/operations/deletemediaproviderglobals.md @@ -0,0 +1,18 @@ +# DeleteMediaProviderGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deletemediaproviderrequest.md b/docs/models/operations/deletemediaproviderrequest.md new file mode 100644 index 0000000..acc900b --- /dev/null +++ b/docs/models/operations/deletemediaproviderrequest.md @@ -0,0 +1,19 @@ +# DeleteMediaProviderRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `provider` | *str* | :heavy_check_mark: | The ID of the media provider to delete | | \ No newline at end of file diff --git a/docs/models/operations/deletemediaproviderresponse.md b/docs/models/operations/deletemediaproviderresponse.md new file mode 100644 index 0000000..5063c10 --- /dev/null +++ b/docs/models/operations/deletemediaproviderresponse.md @@ -0,0 +1,10 @@ +# DeleteMediaProviderResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/deletemetadataitemglobals.md b/docs/models/operations/deletemetadataitemglobals.md new file mode 100644 index 0000000..7326248 --- /dev/null +++ b/docs/models/operations/deletemetadataitemglobals.md @@ -0,0 +1,18 @@ +# DeleteMetadataItemGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deletemetadataitemrequest.md b/docs/models/operations/deletemetadataitemrequest.md new file mode 100644 index 0000000..43361e5 --- /dev/null +++ b/docs/models/operations/deletemetadataitemrequest.md @@ -0,0 +1,20 @@ +# DeleteMetadataItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `proxy` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false. | 1 | \ No newline at end of file diff --git a/docs/models/operations/deletemetadataitemresponse.md b/docs/models/operations/deletemetadataitemresponse.md new file mode 100644 index 0000000..bc605d8 --- /dev/null +++ b/docs/models/operations/deletemetadataitemresponse.md @@ -0,0 +1,10 @@ +# DeleteMetadataItemResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/deleteplaylistglobals.md b/docs/models/operations/deleteplaylistglobals.md new file mode 100644 index 0000000..5f98447 --- /dev/null +++ b/docs/models/operations/deleteplaylistglobals.md @@ -0,0 +1,18 @@ +# DeletePlaylistGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deleteplaylistitemglobals.md b/docs/models/operations/deleteplaylistitemglobals.md new file mode 100644 index 0000000..6bc59ce --- /dev/null +++ b/docs/models/operations/deleteplaylistitemglobals.md @@ -0,0 +1,18 @@ +# DeletePlaylistItemGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deleteplaylistitemrequest.md b/docs/models/operations/deleteplaylistitemrequest.md new file mode 100644 index 0000000..b525653 --- /dev/null +++ b/docs/models/operations/deleteplaylistitemrequest.md @@ -0,0 +1,20 @@ +# DeletePlaylistItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `playlist_id` | *int* | :heavy_check_mark: | The ID of the playlist | | +| `generator_id` | *int* | :heavy_check_mark: | The generator item ID to delete. | | \ No newline at end of file diff --git a/docs/models/operations/deleteplaylistitemresponse.md b/docs/models/operations/deleteplaylistitemresponse.md new file mode 100644 index 0000000..3e0cd21 --- /dev/null +++ b/docs/models/operations/deleteplaylistitemresponse.md @@ -0,0 +1,11 @@ +# DeletePlaylistItemResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_playlist_metadata` | [Optional[components.MediaContainerWithPlaylistMetadata]](../../models/components/mediacontainerwithplaylistmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/deleteplaylistrequest.md b/docs/models/operations/deleteplaylistrequest.md index 4e34b55..08de657 100644 --- a/docs/models/operations/deleteplaylistrequest.md +++ b/docs/models/operations/deleteplaylistrequest.md @@ -3,6 +3,17 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------- | ---------------------- | ---------------------- | ---------------------- | -| `playlist_id` | *float* | :heavy_check_mark: | the ID of the playlist | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `playlist_id` | *int* | :heavy_check_mark: | The ID of the playlist | | \ No newline at end of file diff --git a/docs/models/operations/deleteplayqueueitemglobals.md b/docs/models/operations/deleteplayqueueitemglobals.md new file mode 100644 index 0000000..54750e5 --- /dev/null +++ b/docs/models/operations/deleteplayqueueitemglobals.md @@ -0,0 +1,18 @@ +# DeletePlayQueueItemGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deleteplayqueueitemrequest.md b/docs/models/operations/deleteplayqueueitemrequest.md new file mode 100644 index 0000000..12f83d6 --- /dev/null +++ b/docs/models/operations/deleteplayqueueitemrequest.md @@ -0,0 +1,20 @@ +# DeletePlayQueueItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `play_queue_id` | *int* | :heavy_check_mark: | The ID of the play queue. | | +| `play_queue_item_id` | *int* | :heavy_check_mark: | The play queue item ID to delete. | | \ No newline at end of file diff --git a/docs/models/operations/deleteplayqueueitemresponse.md b/docs/models/operations/deleteplayqueueitemresponse.md new file mode 100644 index 0000000..4d5e19f --- /dev/null +++ b/docs/models/operations/deleteplayqueueitemresponse.md @@ -0,0 +1,11 @@ +# DeletePlayQueueItemResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_playlist_metadata` | [Optional[components.MediaContainerWithPlaylistMetadata]](../../models/components/mediacontainerwithplaylistmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/deletestreamglobals.md b/docs/models/operations/deletestreamglobals.md new file mode 100644 index 0000000..c887460 --- /dev/null +++ b/docs/models/operations/deletestreamglobals.md @@ -0,0 +1,18 @@ +# DeleteStreamGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deletestreamrequest.md b/docs/models/operations/deletestreamrequest.md new file mode 100644 index 0000000..68fb483 --- /dev/null +++ b/docs/models/operations/deletestreamrequest.md @@ -0,0 +1,20 @@ +# DeleteStreamRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `stream_id` | *int* | :heavy_check_mark: | The id of the stream | | +| `ext` | *str* | :heavy_check_mark: | This is not a part of this endpoint but documented here to satisfy OpenAPI | | \ No newline at end of file diff --git a/docs/models/operations/deletestreamresponse.md b/docs/models/operations/deletestreamresponse.md new file mode 100644 index 0000000..b25e94c --- /dev/null +++ b/docs/models/operations/deletestreamresponse.md @@ -0,0 +1,10 @@ +# DeleteStreamResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/deletesubscriptionglobals.md b/docs/models/operations/deletesubscriptionglobals.md new file mode 100644 index 0000000..f5bdef9 --- /dev/null +++ b/docs/models/operations/deletesubscriptionglobals.md @@ -0,0 +1,18 @@ +# DeleteSubscriptionGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/deletesubscriptionrequest.md b/docs/models/operations/deletesubscriptionrequest.md new file mode 100644 index 0000000..8a9a723 --- /dev/null +++ b/docs/models/operations/deletesubscriptionrequest.md @@ -0,0 +1,19 @@ +# DeleteSubscriptionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `subscription_id` | *int* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/deletesubscriptionresponse.md b/docs/models/operations/deletesubscriptionresponse.md new file mode 100644 index 0000000..eb3593c --- /dev/null +++ b/docs/models/operations/deletesubscriptionresponse.md @@ -0,0 +1,10 @@ +# DeleteSubscriptionResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/detectadsglobals.md b/docs/models/operations/detectadsglobals.md new file mode 100644 index 0000000..0b240ad --- /dev/null +++ b/docs/models/operations/detectadsglobals.md @@ -0,0 +1,18 @@ +# DetectAdsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/detectadsrequest.md b/docs/models/operations/detectadsrequest.md new file mode 100644 index 0000000..7567bf0 --- /dev/null +++ b/docs/models/operations/detectadsrequest.md @@ -0,0 +1,19 @@ +# DetectAdsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/detectadsresponse.md b/docs/models/operations/detectadsresponse.md new file mode 100644 index 0000000..5a9971d --- /dev/null +++ b/docs/models/operations/detectadsresponse.md @@ -0,0 +1,10 @@ +# DetectAdsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/detectcreditsglobals.md b/docs/models/operations/detectcreditsglobals.md new file mode 100644 index 0000000..33e5539 --- /dev/null +++ b/docs/models/operations/detectcreditsglobals.md @@ -0,0 +1,18 @@ +# DetectCreditsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/detectcreditsrequest.md b/docs/models/operations/detectcreditsrequest.md new file mode 100644 index 0000000..2ad7e4f --- /dev/null +++ b/docs/models/operations/detectcreditsrequest.md @@ -0,0 +1,21 @@ +# DetectCreditsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `force` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | N/A | 1 | +| `manual` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/models/operations/detectcreditsresponse.md b/docs/models/operations/detectcreditsresponse.md new file mode 100644 index 0000000..ceb9dba --- /dev/null +++ b/docs/models/operations/detectcreditsresponse.md @@ -0,0 +1,10 @@ +# DetectCreditsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/detectintrosglobals.md b/docs/models/operations/detectintrosglobals.md new file mode 100644 index 0000000..5cff00c --- /dev/null +++ b/docs/models/operations/detectintrosglobals.md @@ -0,0 +1,18 @@ +# DetectIntrosGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/detectintrosrequest.md b/docs/models/operations/detectintrosrequest.md new file mode 100644 index 0000000..a5217ce --- /dev/null +++ b/docs/models/operations/detectintrosrequest.md @@ -0,0 +1,21 @@ +# DetectIntrosRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `force` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicate whether detection should be re-run | 1 | +| `threshold` | *Optional[float]* | :heavy_minus_sign: | The threshold for determining if content is an intro or not | | \ No newline at end of file diff --git a/docs/models/operations/detectintrosresponse.md b/docs/models/operations/detectintrosresponse.md new file mode 100644 index 0000000..aecc7f7 --- /dev/null +++ b/docs/models/operations/detectintrosresponse.md @@ -0,0 +1,10 @@ +# DetectIntrosResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/detectvoiceactivityglobals.md b/docs/models/operations/detectvoiceactivityglobals.md new file mode 100644 index 0000000..acd672a --- /dev/null +++ b/docs/models/operations/detectvoiceactivityglobals.md @@ -0,0 +1,18 @@ +# DetectVoiceActivityGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/detectvoiceactivityrequest.md b/docs/models/operations/detectvoiceactivityrequest.md new file mode 100644 index 0000000..cf36310 --- /dev/null +++ b/docs/models/operations/detectvoiceactivityrequest.md @@ -0,0 +1,21 @@ +# DetectVoiceActivityRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `force` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicate whether detection should be re-run | 1 | +| `manual` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicate whether detection is manually run | 1 | \ No newline at end of file diff --git a/docs/models/operations/detectvoiceactivityresponse.md b/docs/models/operations/detectvoiceactivityresponse.md new file mode 100644 index 0000000..f4039ea --- /dev/null +++ b/docs/models/operations/detectvoiceactivityresponse.md @@ -0,0 +1,10 @@ +# DetectVoiceActivityResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/device.md b/docs/models/operations/device.md index 1e5b98f..f81dba2 100644 --- a/docs/models/operations/device.md +++ b/docs/models/operations/device.md @@ -3,10 +3,9 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | -| `id` | *Optional[float]* | :heavy_minus_sign: | N/A | 1 | -| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | iPhone | -| `platform` | *Optional[str]* | :heavy_minus_sign: | N/A | iOS | -| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | | -| `created_at` | *Optional[float]* | :heavy_minus_sign: | N/A | 1654131230 | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `access_token` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `connection` | List[[operations.Connection](../../models/operations/connection.md)] | :heavy_minus_sign: | N/A | +| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/devicechannel.md b/docs/models/operations/devicechannel.md new file mode 100644 index 0000000..ee08d90 --- /dev/null +++ b/docs/models/operations/devicechannel.md @@ -0,0 +1,15 @@ +# DeviceChannel + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `drm` | *Optional[bool]* | :heavy_minus_sign: | Indicates the channel is DRMed and thus may not be playable | +| `favorite` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `hd` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `signal_quality` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `signal_strength` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/director.md b/docs/models/operations/director.md deleted file mode 100644 index 441569c..0000000 --- a/docs/models/operations/director.md +++ /dev/null @@ -1,12 +0,0 @@ -# Director - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique identifier for the director. | 126522 | -| `filter_` | *str* | :heavy_check_mark: | The filter string used to query this director. | director=235876 | -| `tag` | *str* | :heavy_check_mark: | The role of Director | Danny Boyle | -| `tag_key` | *str* | :heavy_check_mark: | A unique 24-character hexadecimal key associated with the director's tag, used for internal identification. | 5d776831151a60001f24d031 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the director. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/models/operations/directory.md b/docs/models/operations/directory.md index e467fd7..8abf2d2 100644 --- a/docs/models/operations/directory.md +++ b/docs/models/operations/directory.md @@ -3,8 +3,11 @@ ## Fields -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `count` | *Optional[float]* | :heavy_minus_sign: | N/A | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| `filter_` | *Optional[str]* | :heavy_minus_sign: | The filter string to view metadata wit this tag | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `tag` | *Optional[str]* | :heavy_minus_sign: | The name of the tag | +| `tag_key` | *Optional[str]* | :heavy_minus_sign: | The key of this tag. This is a universal key across all PMS instances and plex.tv services | +| `tag_type` | *Optional[int]* | :heavy_minus_sign: | The type of the tag | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | The URL to a thumbnail for this tag | \ No newline at end of file diff --git a/docs/models/operations/discoverdevicesresponse.md b/docs/models/operations/discoverdevicesresponse.md new file mode 100644 index 0000000..def62ed --- /dev/null +++ b/docs/models/operations/discoverdevicesresponse.md @@ -0,0 +1,11 @@ +# DiscoverDevicesResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_device` | [Optional[components.MediaContainerWithDevice]](../../models/components/mediacontainerwithdevice.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/download.md b/docs/models/operations/download.md deleted file mode 100644 index 1eb27ea..0000000 --- a/docs/models/operations/download.md +++ /dev/null @@ -1,11 +0,0 @@ -# Download - -Indicate that you want to start download any updates found. - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/downloadqueue.md b/docs/models/operations/downloadqueue.md new file mode 100644 index 0000000..e1141a9 --- /dev/null +++ b/docs/models/operations/downloadqueue.md @@ -0,0 +1,10 @@ +# DownloadQueue + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `item_count` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `status` | [Optional[operations.Status]](../../models/operations/status.md) | :heavy_minus_sign: | The state of this queue
- deciding: At least one item is still being decided
- waiting: At least one item is waiting for transcode and none are currently transcoding
- processing: At least one item is being transcoded
- done: All items are available (or potentially expired)
- error: At least one item has encountered an error
| \ No newline at end of file diff --git a/docs/models/operations/downloadqueueitem.md b/docs/models/operations/downloadqueueitem.md new file mode 100644 index 0000000..2760844 --- /dev/null +++ b/docs/models/operations/downloadqueueitem.md @@ -0,0 +1,15 @@ +# DownloadQueueItem + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `decision_result` | [Optional[operations.DecisionResult]](../../models/operations/decisionresult.md) | :heavy_minus_sign: | N/A | +| `error` | *Optional[str]* | :heavy_minus_sign: | The error encountered in transcoding or decision | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `queue_id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `status` | [Optional[operations.ListDownloadQueueItemsStatus]](../../models/operations/listdownloadqueueitemsstatus.md) | :heavy_minus_sign: | The state of the item:
- deciding: The item decision is pending
- waiting: The item is waiting for transcode
- processing: The item is being transcoded
- available: The item is available for download
- error: The item encountered an error in the decision or transcode
- expired: The transcoded item has timed out and is no longer available
| +| `transcode` | [Optional[operations.Transcode]](../../models/operations/transcode.md) | :heavy_minus_sign: | The transcode session object which is not yet documented otherwise it'd be a $ref here. | +| `transcode_session` | [Optional[components.TranscodeSession]](../../models/components/transcodesession.md) | :heavy_minus_sign: | The transcode session if item is currently being transcoded | \ No newline at end of file diff --git a/docs/models/operations/dvr.md b/docs/models/operations/dvr.md new file mode 100644 index 0000000..819b455 --- /dev/null +++ b/docs/models/operations/dvr.md @@ -0,0 +1,12 @@ +# Dvr + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `device` | List[[components.Device](../../models/components/device.md)] | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `lineup` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/editmarkerglobals.md b/docs/models/operations/editmarkerglobals.md new file mode 100644 index 0000000..91200da --- /dev/null +++ b/docs/models/operations/editmarkerglobals.md @@ -0,0 +1,18 @@ +# EditMarkerGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/editmarkerrequest.md b/docs/models/operations/editmarkerrequest.md new file mode 100644 index 0000000..4fdf460 --- /dev/null +++ b/docs/models/operations/editmarkerrequest.md @@ -0,0 +1,24 @@ +# EditMarkerRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `marker` | *str* | :heavy_check_mark: | The id of the marker to edit | | +| `type` | *int* | :heavy_check_mark: | The type of marker to edit/create | | +| `start_time_offset` | *int* | :heavy_check_mark: | The start time of the marker | | +| `end_time_offset` | *Optional[int]* | :heavy_minus_sign: | The end time of the marker | | +| `attributes` | [Optional[operations.QueryParamAttributes]](../../models/operations/queryparamattributes.md) | :heavy_minus_sign: | The attributes to assign to this marker | {
"title": "My favorite spot"
} | \ No newline at end of file diff --git a/docs/models/operations/editmarkerresponse.md b/docs/models/operations/editmarkerresponse.md new file mode 100644 index 0000000..7f529c8 --- /dev/null +++ b/docs/models/operations/editmarkerresponse.md @@ -0,0 +1,11 @@ +# EditMarkerResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `post_responses_200` | [Optional[components.PostResponses200]](../../models/components/postresponses200.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/editmetadataitemglobals.md b/docs/models/operations/editmetadataitemglobals.md new file mode 100644 index 0000000..a41515f --- /dev/null +++ b/docs/models/operations/editmetadataitemglobals.md @@ -0,0 +1,18 @@ +# EditMetadataItemGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/editmetadataitemrequest.md b/docs/models/operations/editmetadataitemrequest.md new file mode 100644 index 0000000..ffdedcc --- /dev/null +++ b/docs/models/operations/editmetadataitemrequest.md @@ -0,0 +1,20 @@ +# EditMetadataItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | List[*str*] | :heavy_check_mark: | N/A | | +| `args` | [Optional[operations.Args]](../../models/operations/args.md) | :heavy_minus_sign: | The new values for the metadata item | | \ No newline at end of file diff --git a/docs/models/operations/editmetadataitemresponse.md b/docs/models/operations/editmetadataitemresponse.md new file mode 100644 index 0000000..57692b0 --- /dev/null +++ b/docs/models/operations/editmetadataitemresponse.md @@ -0,0 +1,10 @@ +# EditMetadataItemResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/editsectionglobals.md b/docs/models/operations/editsectionglobals.md new file mode 100644 index 0000000..fe370ec --- /dev/null +++ b/docs/models/operations/editsectionglobals.md @@ -0,0 +1,18 @@ +# EditSectionGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/editsectionqueryparamprefs.md b/docs/models/operations/editsectionqueryparamprefs.md new file mode 100644 index 0000000..713e00f --- /dev/null +++ b/docs/models/operations/editsectionqueryparamprefs.md @@ -0,0 +1,9 @@ +# EditSectionQueryParamPrefs + +The preferences for this section + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/editsectionrequest.md b/docs/models/operations/editsectionrequest.md new file mode 100644 index 0000000..019c72a --- /dev/null +++ b/docs/models/operations/editsectionrequest.md @@ -0,0 +1,26 @@ +# EditSectionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *str* | :heavy_check_mark: | The section identifier | | +| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the new section | | +| `scanner` | *Optional[str]* | :heavy_minus_sign: | The scanner this section should use | | +| `agent` | *str* | :heavy_check_mark: | The agent this section should use for metadata | | +| `metadata_agent_provider_group_id` | *Optional[str]* | :heavy_minus_sign: | The agent group id for this section | | +| `language` | *Optional[str]* | :heavy_minus_sign: | The language of this section | | +| `locations` | List[*str*] | :heavy_minus_sign: | The locations on disk to add to this section | [
"O:\\fatboy\\Media\\Ripped\\Music",
"O:\\fatboy\\Media\\My Music"
] | +| `prefs` | [Optional[operations.EditSectionQueryParamPrefs]](../../models/operations/editsectionqueryparamprefs.md) | :heavy_minus_sign: | The preferences for this section | {
"collectionMode": 2,
"hidden": 0
} | \ No newline at end of file diff --git a/docs/models/operations/editsectionresponse.md b/docs/models/operations/editsectionresponse.md new file mode 100644 index 0000000..1c630fc --- /dev/null +++ b/docs/models/operations/editsectionresponse.md @@ -0,0 +1,10 @@ +# EditSectionResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/editsubscriptionpreferencesglobals.md b/docs/models/operations/editsubscriptionpreferencesglobals.md new file mode 100644 index 0000000..dd70af3 --- /dev/null +++ b/docs/models/operations/editsubscriptionpreferencesglobals.md @@ -0,0 +1,18 @@ +# EditSubscriptionPreferencesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/editsubscriptionpreferencesqueryparamprefs.md b/docs/models/operations/editsubscriptionpreferencesqueryparamprefs.md new file mode 100644 index 0000000..1f4aba5 --- /dev/null +++ b/docs/models/operations/editsubscriptionpreferencesqueryparamprefs.md @@ -0,0 +1,7 @@ +# EditSubscriptionPreferencesQueryParamPrefs + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/editsubscriptionpreferencesrequest.md b/docs/models/operations/editsubscriptionpreferencesrequest.md new file mode 100644 index 0000000..a7aa80e --- /dev/null +++ b/docs/models/operations/editsubscriptionpreferencesrequest.md @@ -0,0 +1,20 @@ +# EditSubscriptionPreferencesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `subscription_id` | *int* | :heavy_check_mark: | N/A | | +| `prefs` | [Optional[operations.EditSubscriptionPreferencesQueryParamPrefs]](../../models/operations/editsubscriptionpreferencesqueryparamprefs.md) | :heavy_minus_sign: | N/A | {
"minVideoQuality": 720
} | \ No newline at end of file diff --git a/docs/models/operations/editsubscriptionpreferencesresponse.md b/docs/models/operations/editsubscriptionpreferencesresponse.md new file mode 100644 index 0000000..017be37 --- /dev/null +++ b/docs/models/operations/editsubscriptionpreferencesresponse.md @@ -0,0 +1,11 @@ +# EditSubscriptionPreferencesResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_subscription` | [Optional[components.MediaContainerWithSubscription]](../../models/components/mediacontainerwithsubscription.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/element.md b/docs/models/operations/element.md new file mode 100644 index 0000000..f0b5f2f --- /dev/null +++ b/docs/models/operations/element.md @@ -0,0 +1,13 @@ +# Element + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `THUMB` | thumb | +| `ART` | art | +| `CLEAR_LOGO` | clearLogo | +| `BANNER` | banner | +| `POSTER` | poster | +| `THEME` | theme | \ No newline at end of file diff --git a/docs/models/operations/emptytrashglobals.md b/docs/models/operations/emptytrashglobals.md new file mode 100644 index 0000000..489f7f4 --- /dev/null +++ b/docs/models/operations/emptytrashglobals.md @@ -0,0 +1,18 @@ +# EmptyTrashGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/emptytrashrequest.md b/docs/models/operations/emptytrashrequest.md new file mode 100644 index 0000000..7bb9b4e --- /dev/null +++ b/docs/models/operations/emptytrashrequest.md @@ -0,0 +1,19 @@ +# EmptyTrashRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/models/operations/emptytrashresponse.md b/docs/models/operations/emptytrashresponse.md new file mode 100644 index 0000000..3d897b8 --- /dev/null +++ b/docs/models/operations/emptytrashresponse.md @@ -0,0 +1,10 @@ +# EmptyTrashResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/enablepapertrailglobals.md b/docs/models/operations/enablepapertrailglobals.md new file mode 100644 index 0000000..acff269 --- /dev/null +++ b/docs/models/operations/enablepapertrailglobals.md @@ -0,0 +1,18 @@ +# EnablePapertrailGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/enablepapertrailrequest.md b/docs/models/operations/enablepapertrailrequest.md new file mode 100644 index 0000000..862c10f --- /dev/null +++ b/docs/models/operations/enablepapertrailrequest.md @@ -0,0 +1,19 @@ +# EnablePapertrailRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `minutes` | *Optional[int]* | :heavy_minus_sign: | The number of minutes logging should be sent to Papertrail | | \ No newline at end of file diff --git a/docs/models/operations/enablepapertrailresponse.md b/docs/models/operations/enablepapertrailresponse.md index 2c86b6e..fa92d89 100644 --- a/docs/models/operations/enablepapertrailresponse.md +++ b/docs/models/operations/enablepapertrailresponse.md @@ -1,4 +1,4 @@ -# EnablePaperTrailResponse +# EnablePapertrailResponse ## Fields diff --git a/docs/models/operations/extension.md b/docs/models/operations/extension.md new file mode 100644 index 0000000..11f49c6 --- /dev/null +++ b/docs/models/operations/extension.md @@ -0,0 +1,12 @@ +# Extension + +Extension + + + +## Values + +| Name | Value | +| ------ | ------ | +| `M3U8` | m3u8 | +| `MPD` | mpd | \ No newline at end of file diff --git a/docs/models/operations/extras.md b/docs/models/operations/extras.md deleted file mode 100644 index 099cf05..0000000 --- a/docs/models/operations/extras.md +++ /dev/null @@ -1,8 +0,0 @@ -# Extras - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------- | ----------------------- | ----------------------- | ----------------------- | ----------------------- | -| `size` | *Optional[int]* | :heavy_minus_sign: | The size of the extras. | 1 | \ No newline at end of file diff --git a/docs/models/operations/feature.md b/docs/models/operations/feature.md index 941b520..0ba893b 100644 --- a/docs/models/operations/feature.md +++ b/docs/models/operations/feature.md @@ -3,12 +3,8 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | | -| `type` | *str* | :heavy_check_mark: | N/A | | -| `flavor` | *Optional[str]* | :heavy_minus_sign: | N/A | global | -| `scrobble_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /:/scrobble/new | -| `unscrobble_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /:/unscrobble/new | -| `directory` | List[[operations.GetMediaProvidersDirectory](../../models/operations/getmediaprovidersdirectory.md)] | :heavy_minus_sign: | N/A | | -| `action` | List[[operations.Action](../../models/operations/action.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `directory` | List[[components.Directory](../../models/components/directory.md)] | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/fieldt.md b/docs/models/operations/fieldt.md deleted file mode 100644 index 38da447..0000000 --- a/docs/models/operations/fieldt.md +++ /dev/null @@ -1,11 +0,0 @@ -# FieldT - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `key` | *str* | :heavy_check_mark: | N/A | show.title | -| `title` | *str* | :heavy_check_mark: | N/A | Show Title | -| `type` | *str* | :heavy_check_mark: | N/A | string | -| `sub_type` | *Optional[str]* | :heavy_minus_sign: | N/A | rating | \ No newline at end of file diff --git a/docs/models/operations/fieldtype.md b/docs/models/operations/fieldtype.md deleted file mode 100644 index 24b9178..0000000 --- a/docs/models/operations/fieldtype.md +++ /dev/null @@ -1,9 +0,0 @@ -# FieldType - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| `type` | *str* | :heavy_check_mark: | N/A | tag | -| `operator` | List[[operations.Operator](../../models/operations/operator.md)] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/filter_.md b/docs/models/operations/filter_.md deleted file mode 100644 index 2736d3d..0000000 --- a/docs/models/operations/filter_.md +++ /dev/null @@ -1,12 +0,0 @@ -# Filter - -Filter - - -## Values - -| Name | Value | -| ----------- | ----------- | -| `ALL` | all | -| `AVAILABLE` | available | -| `RELEASED` | released | \ No newline at end of file diff --git a/docs/models/operations/flattenseasons.md b/docs/models/operations/flattenseasons.md deleted file mode 100644 index 7106305..0000000 --- a/docs/models/operations/flattenseasons.md +++ /dev/null @@ -1,13 +0,0 @@ -# FlattenSeasons - -Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). - - - -## Values - -| Name | Value | -| ----------------- | ----------------- | -| `LIBRARY_DEFAULT` | -1 | -| `HIDE` | 0 | -| `SHOW` | 1 | \ No newline at end of file diff --git a/docs/models/operations/flavor.md b/docs/models/operations/flavor.md new file mode 100644 index 0000000..b43f961 --- /dev/null +++ b/docs/models/operations/flavor.md @@ -0,0 +1,15 @@ +# Flavor + +- `0`: The country is divided into regions, and following the key will lead to a list of regions. +- `1`: The county is divided by postal codes, and an example code is returned in `example`. +- `2`: The country has a single postal code, returned in `example`. + + + +## Values + +| Name | Value | +| ------ | ------ | +| `ZERO` | 0 | +| `ONE` | 1 | +| `TWO` | 2 | \ No newline at end of file diff --git a/docs/models/operations/force.md b/docs/models/operations/force.md deleted file mode 100644 index 97b7709..0000000 --- a/docs/models/operations/force.md +++ /dev/null @@ -1,11 +0,0 @@ -# Force - -Force the refresh even if the library is already being refreshed. - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/format_.md b/docs/models/operations/format_.md new file mode 100644 index 0000000..bc596c7 --- /dev/null +++ b/docs/models/operations/format_.md @@ -0,0 +1,13 @@ +# Format + +The output format for the image; defaults to jpg + + +## Values + +| Name | Value | +| ------ | ------ | +| `JPG` | jpg | +| `JPEG` | jpeg | +| `PNG` | png | +| `PPM` | ppm | \ No newline at end of file diff --git a/docs/models/operations/friend.md b/docs/models/operations/friend.md deleted file mode 100644 index 0601ed6..0000000 --- a/docs/models/operations/friend.md +++ /dev/null @@ -1,19 +0,0 @@ -# Friend - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `email` | *str* | :heavy_check_mark: | The account email address | username@email.com | -| `friendly_name` | *Nullable[str]* | :heavy_check_mark: | The account full name | exampleUser | -| `home` | *bool* | :heavy_check_mark: | If the account is a Plex Home user | | -| `id` | *int* | :heavy_check_mark: | The Plex account ID | | -| `restricted` | *Optional[bool]* | :heavy_minus_sign: | If the account is a Plex Home managed user | | -| `shared_servers` | List[[operations.SharedServers](../../models/operations/sharedservers.md)] | :heavy_check_mark: | N/A | | -| `shared_sources` | List[[operations.SharedSources](../../models/operations/sharedsources.md)] | :heavy_check_mark: | N/A | | -| `status` | [operations.Status](../../models/operations/status.md) | :heavy_check_mark: | Current friend request status | accepted | -| `thumb` | *str* | :heavy_check_mark: | URL of the account thumbnail | https://plex.tv/users/7d1916e0d8f6e76b/avatar?c=1694481578 | -| `title` | *str* | :heavy_check_mark: | The title of the account (username or friendly name) | username123 | -| `username` | *str* | :heavy_check_mark: | The account username | username123 | -| `uuid` | *str* | :heavy_check_mark: | The account Universally Unique Identifier (UUID) | 7d1916e0d8f6e76b | \ No newline at end of file diff --git a/docs/models/operations/generatethumbsglobals.md b/docs/models/operations/generatethumbsglobals.md new file mode 100644 index 0000000..7eec83e --- /dev/null +++ b/docs/models/operations/generatethumbsglobals.md @@ -0,0 +1,18 @@ +# GenerateThumbsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/generatethumbsrequest.md b/docs/models/operations/generatethumbsrequest.md new file mode 100644 index 0000000..edd9aee --- /dev/null +++ b/docs/models/operations/generatethumbsrequest.md @@ -0,0 +1,20 @@ +# GenerateThumbsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `force` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/models/operations/generatethumbsresponse.md b/docs/models/operations/generatethumbsresponse.md new file mode 100644 index 0000000..50d4064 --- /dev/null +++ b/docs/models/operations/generatethumbsresponse.md @@ -0,0 +1,10 @@ +# GenerateThumbsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/genre.md b/docs/models/operations/genre.md deleted file mode 100644 index 6d80dc2..0000000 --- a/docs/models/operations/genre.md +++ /dev/null @@ -1,12 +0,0 @@ -# Genre - -The filter query string for similar items. - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique identifier for the genre.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | -| `filter_` | *str* | :heavy_check_mark: | N/A | genre=19 | -| `tag` | *str* | :heavy_check_mark: | The genre name of this media-item
| Crime | \ No newline at end of file diff --git a/docs/models/operations/geodata.md b/docs/models/operations/geodata.md deleted file mode 100644 index 1c09224..0000000 --- a/docs/models/operations/geodata.md +++ /dev/null @@ -1,20 +0,0 @@ -# GeoData - -Geo location data - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `code` | *str* | :heavy_check_mark: | The ISO 3166-1 alpha-2 code of the country. | VI | -| `continent_code` | *str* | :heavy_check_mark: | The continent code where the country is located. | NA | -| `country` | *str* | :heavy_check_mark: | The official name of the country. | United States Virgin Islands | -| `city` | *str* | :heavy_check_mark: | The name of the city. | Amsterdam | -| `european_union_member` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the country is a member of the European Union. | true | -| `time_zone` | *str* | :heavy_check_mark: | The time zone of the country. | America/St_Thomas | -| `postal_code` | *str* | :heavy_check_mark: | The postal code of the location. | 802 | -| `in_privacy_restricted_country` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the country has privacy restrictions. | true | -| `in_privacy_restricted_region` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the region has privacy restrictions. | true | -| `subdivisions` | *str* | :heavy_check_mark: | The name of the primary administrative subdivision. | Saint Thomas | -| `coordinates` | *str* | :heavy_check_mark: | The geographical coordinates (latitude, longitude) of the location. | 18.3381, -64.8941 | \ No newline at end of file diff --git a/docs/models/operations/getactorslibrarydirectory.md b/docs/models/operations/getactorslibrarydirectory.md deleted file mode 100644 index 05a91e0..0000000 --- a/docs/models/operations/getactorslibrarydirectory.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetActorsLibraryDirectory - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `fast_key` | *str* | :heavy_check_mark: | A fast lookup key for the actor relative url. | /library/sections/2/all?actor=134671 | -| `thumb` | *str* | :heavy_check_mark: | URL for the thumbnail image of the actor. | https://metadata-static.plex.tv/e/people/e2a915b537ef720252b6d408bc1f91b3.jpg | -| `key` | *str* | :heavy_check_mark: | A unique key representing the actor. | 134671 | -| `title` | *str* | :heavy_check_mark: | The name of the actor. | Aaron Paul | \ No newline at end of file diff --git a/docs/models/operations/getactorslibrarymediacontainer.md b/docs/models/operations/getactorslibrarymediacontainer.md deleted file mode 100644 index 0b0288f..0000000 --- a/docs/models/operations/getactorslibrarymediacontainer.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetActorsLibraryMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `allow_sync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `art` | *str* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | -| `identifier` | *str* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `media_tag_prefix` | *str* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `media_tag_version` | *int* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `nocache` | *bool* | :heavy_check_mark: | Specifies whether caching is disabled. | true | -| `thumb` | *str* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | -| `title1` | *str* | :heavy_check_mark: | The primary title of the media container. | TV Series | -| `title2` | *str* | :heavy_check_mark: | The secondary title of the media container. | By Starring Actor | -| `view_group` | *str* | :heavy_check_mark: | Identifier for the view group layout. | secondary | -| `view_mode` | *Optional[str]* | :heavy_minus_sign: | Identifier for the view mode. | 131131 | -| `directory` | List[[operations.GetActorsLibraryDirectory](../../models/operations/getactorslibrarydirectory.md)] | :heavy_minus_sign: | An array of actor entries for media items. | | \ No newline at end of file diff --git a/docs/models/operations/getactorslibraryqueryparamtype.md b/docs/models/operations/getactorslibraryqueryparamtype.md deleted file mode 100644 index 82dd3d8..0000000 --- a/docs/models/operations/getactorslibraryqueryparamtype.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetActorsLibraryQueryParamType - -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `MOVIE` | 1 | -| `TV_SHOW` | 2 | -| `SEASON` | 3 | -| `EPISODE` | 4 | -| `ARTIST` | 5 | -| `ALBUM` | 6 | -| `TRACK` | 7 | -| `PHOTO_ALBUM` | 8 | -| `PHOTO` | 9 | \ No newline at end of file diff --git a/docs/models/operations/getactorslibraryrequest.md b/docs/models/operations/getactorslibraryrequest.md deleted file mode 100644 index f4d47d4..0000000 --- a/docs/models/operations/getactorslibraryrequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetActorsLibraryRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `type` | [operations.GetActorsLibraryQueryParamType](../../models/operations/getactorslibraryqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | \ No newline at end of file diff --git a/docs/models/operations/getactorslibraryresponse.md b/docs/models/operations/getactorslibraryresponse.md deleted file mode 100644 index 3de927f..0000000 --- a/docs/models/operations/getactorslibraryresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetActorsLibraryResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetActorsLibraryResponseBody]](../../models/operations/getactorslibraryresponsebody.md) | :heavy_minus_sign: | Successful response containing media container data. | \ No newline at end of file diff --git a/docs/models/operations/getactorslibraryresponsebody.md b/docs/models/operations/getactorslibraryresponsebody.md deleted file mode 100644 index 58cb38a..0000000 --- a/docs/models/operations/getactorslibraryresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetActorsLibraryResponseBody - -Successful response containing media container data. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetActorsLibraryMediaContainer]](../../models/operations/getactorslibrarymediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getalbumsglobals.md b/docs/models/operations/getalbumsglobals.md new file mode 100644 index 0000000..915b0c2 --- /dev/null +++ b/docs/models/operations/getalbumsglobals.md @@ -0,0 +1,18 @@ +# GetAlbumsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getalbumsrequest.md b/docs/models/operations/getalbumsrequest.md new file mode 100644 index 0000000..1645604 --- /dev/null +++ b/docs/models/operations/getalbumsrequest.md @@ -0,0 +1,19 @@ +# GetAlbumsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/models/operations/getalbumsresponse.md b/docs/models/operations/getalbumsresponse.md new file mode 100644 index 0000000..f1620a9 --- /dev/null +++ b/docs/models/operations/getalbumsresponse.md @@ -0,0 +1,11 @@ +# GetAlbumsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getallhubsglobals.md b/docs/models/operations/getallhubsglobals.md new file mode 100644 index 0000000..3d2df51 --- /dev/null +++ b/docs/models/operations/getallhubsglobals.md @@ -0,0 +1,18 @@ +# GetAllHubsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getallhubsmediacontainer.md b/docs/models/operations/getallhubsmediacontainer.md new file mode 100644 index 0000000..142ebe3 --- /dev/null +++ b/docs/models/operations/getallhubsmediacontainer.md @@ -0,0 +1,17 @@ +# GetAllHubsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `hub` | List[[components.Hub](../../models/components/hub.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getallhubsrequest.md b/docs/models/operations/getallhubsrequest.md new file mode 100644 index 0000000..ad038db --- /dev/null +++ b/docs/models/operations/getallhubsrequest.md @@ -0,0 +1,21 @@ +# GetAllHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `count` | *Optional[int]* | :heavy_minus_sign: | Limit results to count items | | +| `only_transient` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added) | 1 | +| `identifier` | List[*str*] | :heavy_minus_sign: | If provided, limit to only specified hubs | | \ No newline at end of file diff --git a/docs/models/operations/getallhubsresponse.md b/docs/models/operations/getallhubsresponse.md new file mode 100644 index 0000000..542a888 --- /dev/null +++ b/docs/models/operations/getallhubsresponse.md @@ -0,0 +1,12 @@ +# GetAllHubsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetAllHubsResponseBody]](../../models/operations/getallhubsresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getallhubsresponsebody.md b/docs/models/operations/getallhubsresponsebody.md new file mode 100644 index 0000000..6dcf866 --- /dev/null +++ b/docs/models/operations/getallhubsresponsebody.md @@ -0,0 +1,10 @@ +# GetAllHubsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetAllHubsMediaContainer]](../../models/operations/getallhubsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getallitemleavesglobals.md b/docs/models/operations/getallitemleavesglobals.md new file mode 100644 index 0000000..75090ba --- /dev/null +++ b/docs/models/operations/getallitemleavesglobals.md @@ -0,0 +1,18 @@ +# GetAllItemLeavesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getallitemleavesrequest.md b/docs/models/operations/getallitemleavesrequest.md new file mode 100644 index 0000000..36d83be --- /dev/null +++ b/docs/models/operations/getallitemleavesrequest.md @@ -0,0 +1,19 @@ +# GetAllItemLeavesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getallitemleavesresponse.md b/docs/models/operations/getallitemleavesresponse.md new file mode 100644 index 0000000..89b5603 --- /dev/null +++ b/docs/models/operations/getallitemleavesresponse.md @@ -0,0 +1,12 @@ +# GetAllItemLeavesResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getalllanguagesmediacontainer.md b/docs/models/operations/getalllanguagesmediacontainer.md new file mode 100644 index 0000000..a62fa5d --- /dev/null +++ b/docs/models/operations/getalllanguagesmediacontainer.md @@ -0,0 +1,17 @@ +# GetAllLanguagesMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `language` | List[[operations.Language](../../models/operations/language.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getalllanguagesresponse.md b/docs/models/operations/getalllanguagesresponse.md new file mode 100644 index 0000000..dd13085 --- /dev/null +++ b/docs/models/operations/getalllanguagesresponse.md @@ -0,0 +1,12 @@ +# GetAllLanguagesResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetAllLanguagesResponseBody]](../../models/operations/getalllanguagesresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getalllanguagesresponsebody.md b/docs/models/operations/getalllanguagesresponsebody.md new file mode 100644 index 0000000..8b670c3 --- /dev/null +++ b/docs/models/operations/getalllanguagesresponsebody.md @@ -0,0 +1,10 @@ +# GetAllLanguagesResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetAllLanguagesMediaContainer]](../../models/operations/getalllanguagesmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getallleavesglobals.md b/docs/models/operations/getallleavesglobals.md new file mode 100644 index 0000000..f244ee1 --- /dev/null +++ b/docs/models/operations/getallleavesglobals.md @@ -0,0 +1,18 @@ +# GetAllLeavesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getallleavesrequest.md b/docs/models/operations/getallleavesrequest.md new file mode 100644 index 0000000..b442ce6 --- /dev/null +++ b/docs/models/operations/getallleavesrequest.md @@ -0,0 +1,19 @@ +# GetAllLeavesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/models/operations/getallleavesresponse.md b/docs/models/operations/getallleavesresponse.md new file mode 100644 index 0000000..127040c --- /dev/null +++ b/docs/models/operations/getallleavesresponse.md @@ -0,0 +1,11 @@ +# GetAllLeavesResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getalllibrariesdirectory.md b/docs/models/operations/getalllibrariesdirectory.md deleted file mode 100644 index ae009de..0000000 --- a/docs/models/operations/getalllibrariesdirectory.md +++ /dev/null @@ -1,28 +0,0 @@ -# GetAllLibrariesDirectory - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `allow_sync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `art` | *str* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | -| `composite` | *str* | :heavy_check_mark: | The relative path to the composite media item. | /library/sections/1/composite/1743824484 | -| `filters` | *bool* | :heavy_check_mark: | UNKNOWN | true | -| `refreshing` | *bool* | :heavy_check_mark: | Indicates whether the library is currently being refreshed or updated | true | -| `thumb` | *str* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | -| `key` | *str* | :heavy_check_mark: | The library key representing the unique identifier | 1 | -| `type` | [operations.GetAllLibrariesType](../../models/operations/getalllibrariestype.md) | :heavy_check_mark: | N/A | movie | -| `title` | *str* | :heavy_check_mark: | The title of the library | Movies | -| `agent` | *str* | :heavy_check_mark: | The Plex agent used to match and retrieve media metadata. | tv.plex.agents.movie | -| `scanner` | *str* | :heavy_check_mark: | UNKNOWN | Plex Movie | -| `language` | *str* | :heavy_check_mark: | The Plex library language that has been set | en-US | -| `uuid` | *str* | :heavy_check_mark: | The universally unique identifier for the library. | e69655a2-ef48-4aba-bb19-01e7d3cc34d6 | -| `updated_at` | *int* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | -| `created_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1556281940 | -| `scanned_at` | *int* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | -| `content` | *bool* | :heavy_check_mark: | UNKNOWN | true | -| `directory` | *bool* | :heavy_check_mark: | UNKNOWN | true | -| `content_changed_at` | *int* | :heavy_check_mark: | Timestamp (in seconds) representing the last time the content was modified.
NOTE: Some Plex server have some absurd values for this field, like 8457612157633039800 so it should be int64
| 9173960 | -| `hidden` | [Optional[operations.Hidden]](../../models/operations/hidden.md) | :heavy_minus_sign: | The Plex library visibility setting | 1 | -| `location` | List[[operations.GetAllLibrariesLocation](../../models/operations/getalllibrarieslocation.md)] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getalllibrarieslocation.md b/docs/models/operations/getalllibrarieslocation.md deleted file mode 100644 index d4f1c95..0000000 --- a/docs/models/operations/getalllibrarieslocation.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetAllLibrariesLocation - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------- | --------------------------- | --------------------------- | --------------------------- | --------------------------- | -| `id` | *int* | :heavy_check_mark: | The ID of the location. | 1 | -| `path` | *str* | :heavy_check_mark: | The path to the media item. | /Movies | \ No newline at end of file diff --git a/docs/models/operations/getalllibrariesmediacontainer.md b/docs/models/operations/getalllibrariesmediacontainer.md deleted file mode 100644 index 5552e60..0000000 --- a/docs/models/operations/getalllibrariesmediacontainer.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetAllLibrariesMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `allow_sync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `title1` | *str* | :heavy_check_mark: | The primary title of the media container. | TV Series | -| `directory` | List[[operations.GetAllLibrariesDirectory](../../models/operations/getalllibrariesdirectory.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getalllibrariesresponse.md b/docs/models/operations/getalllibrariesresponse.md deleted file mode 100644 index 001251f..0000000 --- a/docs/models/operations/getalllibrariesresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetAllLibrariesResponse - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetAllLibrariesResponseBody]](../../models/operations/getalllibrariesresponsebody.md) | :heavy_minus_sign: | The libraries available on the Server | \ No newline at end of file diff --git a/docs/models/operations/getalllibrariesresponsebody.md b/docs/models/operations/getalllibrariesresponsebody.md deleted file mode 100644 index 8f8269e..0000000 --- a/docs/models/operations/getalllibrariesresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetAllLibrariesResponseBody - -The libraries available on the Server - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetAllLibrariesMediaContainer]](../../models/operations/getalllibrariesmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getalllibrariestype.md b/docs/models/operations/getalllibrariestype.md deleted file mode 100644 index c69a39d..0000000 --- a/docs/models/operations/getalllibrariestype.md +++ /dev/null @@ -1,19 +0,0 @@ -# GetAllLibrariesType - -The library type - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `MOVIE` | movie | -| `TV_SHOW` | show | -| `SEASON` | season | -| `EPISODE` | episode | -| `ARTIST` | artist | -| `ALBUM` | album | -| `TRACK` | track | -| `PHOTO_ALBUM` | photoalbum | -| `PHOTO` | photo | -| `COLLECTION` | collection | \ No newline at end of file diff --git a/docs/models/operations/getallpreferencesresponse.md b/docs/models/operations/getallpreferencesresponse.md new file mode 100644 index 0000000..20d6bc0 --- /dev/null +++ b/docs/models/operations/getallpreferencesresponse.md @@ -0,0 +1,11 @@ +# GetAllPreferencesResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_settings` | [Optional[components.MediaContainerWithSettings]](../../models/components/mediacontainerwithsettings.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getallsubscriptionsglobals.md b/docs/models/operations/getallsubscriptionsglobals.md new file mode 100644 index 0000000..c7d40cb --- /dev/null +++ b/docs/models/operations/getallsubscriptionsglobals.md @@ -0,0 +1,18 @@ +# GetAllSubscriptionsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getallsubscriptionsrequest.md b/docs/models/operations/getallsubscriptionsrequest.md new file mode 100644 index 0000000..8803c71 --- /dev/null +++ b/docs/models/operations/getallsubscriptionsrequest.md @@ -0,0 +1,20 @@ +# GetAllSubscriptionsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `include_grabs` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates whether the active grabs should be included as well | 1 | +| `include_storage` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Compute the storage of recorded items desired by this subscription | 1 | \ No newline at end of file diff --git a/docs/models/operations/getallsubscriptionsresponse.md b/docs/models/operations/getallsubscriptionsresponse.md new file mode 100644 index 0000000..d9d0d57 --- /dev/null +++ b/docs/models/operations/getallsubscriptionsresponse.md @@ -0,0 +1,12 @@ +# GetAllSubscriptionsResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_subscription` | [Optional[components.MediaContainerWithSubscription]](../../models/components/mediacontainerwithsubscription.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getartsglobals.md b/docs/models/operations/getartsglobals.md new file mode 100644 index 0000000..21adbfe --- /dev/null +++ b/docs/models/operations/getartsglobals.md @@ -0,0 +1,18 @@ +# GetArtsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getartsrequest.md b/docs/models/operations/getartsrequest.md new file mode 100644 index 0000000..1c7a573 --- /dev/null +++ b/docs/models/operations/getartsrequest.md @@ -0,0 +1,19 @@ +# GetArtsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/models/operations/getartsresponse.md b/docs/models/operations/getartsresponse.md new file mode 100644 index 0000000..449ab75 --- /dev/null +++ b/docs/models/operations/getartsresponse.md @@ -0,0 +1,11 @@ +# GetArtsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_artwork` | [Optional[components.MediaContainerWithArtwork]](../../models/components/mediacontainerwithartwork.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getaugmentationstatusglobals.md b/docs/models/operations/getaugmentationstatusglobals.md new file mode 100644 index 0000000..6bca1ff --- /dev/null +++ b/docs/models/operations/getaugmentationstatusglobals.md @@ -0,0 +1,18 @@ +# GetAugmentationStatusGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getaugmentationstatusrequest.md b/docs/models/operations/getaugmentationstatusrequest.md new file mode 100644 index 0000000..c03ec67 --- /dev/null +++ b/docs/models/operations/getaugmentationstatusrequest.md @@ -0,0 +1,20 @@ +# GetAugmentationStatusRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `augmentation_id` | *str* | :heavy_check_mark: | The id of the augmentation | | +| `wait` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Wait for augmentation completion before returning | 1 | \ No newline at end of file diff --git a/docs/models/operations/getaugmentationstatusresponse.md b/docs/models/operations/getaugmentationstatusresponse.md new file mode 100644 index 0000000..3c786e9 --- /dev/null +++ b/docs/models/operations/getaugmentationstatusresponse.md @@ -0,0 +1,10 @@ +# GetAugmentationStatusResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/getavailableclientsmediacontainer.md b/docs/models/operations/getavailableclientsmediacontainer.md deleted file mode 100644 index e3b362b..0000000 --- a/docs/models/operations/getavailableclientsmediacontainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetAvailableClientsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `size` | *Optional[float]* | :heavy_minus_sign: | N/A | 1 | -| `server` | List[[operations.Server](../../models/operations/server.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getavailableclientsresponse.md b/docs/models/operations/getavailableclientsresponse.md deleted file mode 100644 index 019b760..0000000 --- a/docs/models/operations/getavailableclientsresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetAvailableClientsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetAvailableClientsResponseBody]](../../models/operations/getavailableclientsresponsebody.md) | :heavy_minus_sign: | Available Clients | \ No newline at end of file diff --git a/docs/models/operations/getavailableclientsresponsebody.md b/docs/models/operations/getavailableclientsresponsebody.md deleted file mode 100644 index a7a42cf..0000000 --- a/docs/models/operations/getavailableclientsresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetAvailableClientsResponseBody - -Available Clients - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetAvailableClientsMediaContainer]](../../models/operations/getavailableclientsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getavailablegrabbersglobals.md b/docs/models/operations/getavailablegrabbersglobals.md new file mode 100644 index 0000000..83f4cf7 --- /dev/null +++ b/docs/models/operations/getavailablegrabbersglobals.md @@ -0,0 +1,18 @@ +# GetAvailableGrabbersGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getavailablegrabbersmediacontainer.md b/docs/models/operations/getavailablegrabbersmediacontainer.md new file mode 100644 index 0000000..9feb1dd --- /dev/null +++ b/docs/models/operations/getavailablegrabbersmediacontainer.md @@ -0,0 +1,17 @@ +# GetAvailableGrabbersMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `media_grabber` | List[[operations.MediaGrabber](../../models/operations/mediagrabber.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getavailablegrabbersrequest.md b/docs/models/operations/getavailablegrabbersrequest.md new file mode 100644 index 0000000..5b6850f --- /dev/null +++ b/docs/models/operations/getavailablegrabbersrequest.md @@ -0,0 +1,19 @@ +# GetAvailableGrabbersRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `protocol` | *Optional[str]* | :heavy_minus_sign: | Only return grabbers providing this protocol. | livetv | \ No newline at end of file diff --git a/docs/models/operations/getavailablegrabbersresponse.md b/docs/models/operations/getavailablegrabbersresponse.md new file mode 100644 index 0000000..f5070e7 --- /dev/null +++ b/docs/models/operations/getavailablegrabbersresponse.md @@ -0,0 +1,12 @@ +# GetAvailableGrabbersResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetAvailableGrabbersResponseBody]](../../models/operations/getavailablegrabbersresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getavailablegrabbersresponsebody.md b/docs/models/operations/getavailablegrabbersresponsebody.md new file mode 100644 index 0000000..bd870ad --- /dev/null +++ b/docs/models/operations/getavailablegrabbersresponsebody.md @@ -0,0 +1,10 @@ +# GetAvailableGrabbersResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.GetAvailableGrabbersMediaContainer]](../../models/operations/getavailablegrabbersmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getavailablesortsglobals.md b/docs/models/operations/getavailablesortsglobals.md new file mode 100644 index 0000000..7c6806c --- /dev/null +++ b/docs/models/operations/getavailablesortsglobals.md @@ -0,0 +1,18 @@ +# GetAvailableSortsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getavailablesortsmediacontainer.md b/docs/models/operations/getavailablesortsmediacontainer.md new file mode 100644 index 0000000..a5b065d --- /dev/null +++ b/docs/models/operations/getavailablesortsmediacontainer.md @@ -0,0 +1,17 @@ +# GetAvailableSortsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `directory` | List[[components.Sort](../../models/components/sort.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getavailablesortsrequest.md b/docs/models/operations/getavailablesortsrequest.md new file mode 100644 index 0000000..62c7f8c --- /dev/null +++ b/docs/models/operations/getavailablesortsrequest.md @@ -0,0 +1,19 @@ +# GetAvailableSortsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/models/operations/getavailablesortsresponse.md b/docs/models/operations/getavailablesortsresponse.md new file mode 100644 index 0000000..f577a07 --- /dev/null +++ b/docs/models/operations/getavailablesortsresponse.md @@ -0,0 +1,11 @@ +# GetAvailableSortsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetAvailableSortsResponseBody]](../../models/operations/getavailablesortsresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getavailablesortsresponsebody.md b/docs/models/operations/getavailablesortsresponsebody.md new file mode 100644 index 0000000..5e58aac --- /dev/null +++ b/docs/models/operations/getavailablesortsresponsebody.md @@ -0,0 +1,10 @@ +# GetAvailableSortsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.GetAvailableSortsMediaContainer]](../../models/operations/getavailablesortsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getbackgroundtasksmediacontainer.md b/docs/models/operations/getbackgroundtasksmediacontainer.md new file mode 100644 index 0000000..86de235 --- /dev/null +++ b/docs/models/operations/getbackgroundtasksmediacontainer.md @@ -0,0 +1,17 @@ +# GetBackgroundTasksMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `transcode_job` | List[[operations.TranscodeJob](../../models/operations/transcodejob.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getbackgroundtasksresponse.md b/docs/models/operations/getbackgroundtasksresponse.md new file mode 100644 index 0000000..6ed65f7 --- /dev/null +++ b/docs/models/operations/getbackgroundtasksresponse.md @@ -0,0 +1,11 @@ +# GetBackgroundTasksResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetBackgroundTasksResponseBody]](../../models/operations/getbackgroundtasksresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getbackgroundtasksresponsebody.md b/docs/models/operations/getbackgroundtasksresponsebody.md new file mode 100644 index 0000000..5ccd7f5 --- /dev/null +++ b/docs/models/operations/getbackgroundtasksresponsebody.md @@ -0,0 +1,10 @@ +# GetBackgroundTasksResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetBackgroundTasksMediaContainer]](../../models/operations/getbackgroundtasksmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getbackgroundtaskstype.md b/docs/models/operations/getbackgroundtaskstype.md new file mode 100644 index 0000000..12b9d11 --- /dev/null +++ b/docs/models/operations/getbackgroundtaskstype.md @@ -0,0 +1,8 @@ +# GetBackgroundTasksType + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `TRANSCODE` | transcode | \ No newline at end of file diff --git a/docs/models/operations/getbandwidthstatisticsaccount.md b/docs/models/operations/getbandwidthstatisticsaccount.md deleted file mode 100644 index 1fa06e8..0000000 --- a/docs/models/operations/getbandwidthstatisticsaccount.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetBandwidthStatisticsAccount - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 238960586 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /accounts/238960586 | -| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | Diane | -| `default_audio_language` | *Optional[str]* | :heavy_minus_sign: | N/A | en | -| `auto_select_audio` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `default_subtitle_language` | *Optional[str]* | :heavy_minus_sign: | N/A | en | -| `subtitle_mode` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | https://plex.tv/users/50d83634246da1de/avatar?c=1707110967 | \ No newline at end of file diff --git a/docs/models/operations/getbandwidthstatisticsdevice.md b/docs/models/operations/getbandwidthstatisticsdevice.md deleted file mode 100644 index 55b4f8b..0000000 --- a/docs/models/operations/getbandwidthstatisticsdevice.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetBandwidthStatisticsDevice - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 208 | -| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | Roku Express | -| `platform` | *Optional[str]* | :heavy_minus_sign: | N/A | Roku | -| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | 793095d235660625108ef785cc7646e9 | -| `created_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1706470556 | \ No newline at end of file diff --git a/docs/models/operations/getbandwidthstatisticsmediacontainer.md b/docs/models/operations/getbandwidthstatisticsmediacontainer.md deleted file mode 100644 index 9c34355..0000000 --- a/docs/models/operations/getbandwidthstatisticsmediacontainer.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetBandwidthStatisticsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 5497 | -| `device` | List[[operations.GetBandwidthStatisticsDevice](../../models/operations/getbandwidthstatisticsdevice.md)] | :heavy_minus_sign: | N/A | | -| `account` | List[[operations.GetBandwidthStatisticsAccount](../../models/operations/getbandwidthstatisticsaccount.md)] | :heavy_minus_sign: | N/A | | -| `statistics_bandwidth` | List[[operations.StatisticsBandwidth](../../models/operations/statisticsbandwidth.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getbandwidthstatisticsrequest.md b/docs/models/operations/getbandwidthstatisticsrequest.md deleted file mode 100644 index a107856..0000000 --- a/docs/models/operations/getbandwidthstatisticsrequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetBandwidthStatisticsRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `timespan` | *Optional[int]* | :heavy_minus_sign: | The timespan to retrieve statistics for
the exact meaning of this parameter is not known
| 4 | \ No newline at end of file diff --git a/docs/models/operations/getbandwidthstatisticsresponse.md b/docs/models/operations/getbandwidthstatisticsresponse.md deleted file mode 100644 index bb8e036..0000000 --- a/docs/models/operations/getbandwidthstatisticsresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetBandwidthStatisticsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetBandwidthStatisticsResponseBody]](../../models/operations/getbandwidthstatisticsresponsebody.md) | :heavy_minus_sign: | Bandwidth Statistics | \ No newline at end of file diff --git a/docs/models/operations/getbandwidthstatisticsresponsebody.md b/docs/models/operations/getbandwidthstatisticsresponsebody.md deleted file mode 100644 index 5ae18ba..0000000 --- a/docs/models/operations/getbandwidthstatisticsresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetBandwidthStatisticsResponseBody - -Bandwidth Statistics - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetBandwidthStatisticsMediaContainer]](../../models/operations/getbandwidthstatisticsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getbannerimagerequest.md b/docs/models/operations/getbannerimagerequest.md deleted file mode 100644 index 7505584..0000000 --- a/docs/models/operations/getbannerimagerequest.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetBannerImageRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | -| `rating_key` | *int* | :heavy_check_mark: | the id of the library item to return the children of. | 9518 | -| `width` | *int* | :heavy_check_mark: | N/A | 396 | -| `height` | *int* | :heavy_check_mark: | N/A | 396 | -| `min_size` | *int* | :heavy_check_mark: | N/A | 1 | -| `upscale` | *int* | :heavy_check_mark: | N/A | 1 | -| `x_plex_token` | *str* | :heavy_check_mark: | An authentication token, obtained from plex.tv | CV5xoxjTpFKUzBTShsaf | \ No newline at end of file diff --git a/docs/models/operations/getbannerimageresponse.md b/docs/models/operations/getbannerimageresponse.md deleted file mode 100644 index 7dce428..0000000 --- a/docs/models/operations/getbannerimageresponse.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetBannerImageResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | Successful response returning an image | -| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getbutlertasksresponse.md b/docs/models/operations/getbutlertasksresponse.md deleted file mode 100644 index 914be1f..0000000 --- a/docs/models/operations/getbutlertasksresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetButlerTasksResponse - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetButlerTasksResponseBody]](../../models/operations/getbutlertasksresponsebody.md) | :heavy_minus_sign: | All butler tasks | \ No newline at end of file diff --git a/docs/models/operations/getbutlertasksresponsebody.md b/docs/models/operations/getbutlertasksresponsebody.md deleted file mode 100644 index 93b73c2..0000000 --- a/docs/models/operations/getbutlertasksresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetButlerTasksResponseBody - -All butler tasks - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `butler_tasks` | [Optional[operations.ButlerTasks]](../../models/operations/butlertasks.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getcategoriesglobals.md b/docs/models/operations/getcategoriesglobals.md new file mode 100644 index 0000000..881938b --- /dev/null +++ b/docs/models/operations/getcategoriesglobals.md @@ -0,0 +1,18 @@ +# GetCategoriesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getcategoriesrequest.md b/docs/models/operations/getcategoriesrequest.md new file mode 100644 index 0000000..a3e2b65 --- /dev/null +++ b/docs/models/operations/getcategoriesrequest.md @@ -0,0 +1,19 @@ +# GetCategoriesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/models/operations/getcategoriesresponse.md b/docs/models/operations/getcategoriesresponse.md new file mode 100644 index 0000000..9632947 --- /dev/null +++ b/docs/models/operations/getcategoriesresponse.md @@ -0,0 +1,11 @@ +# GetCategoriesResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_artwork` | [Optional[components.MediaContainerWithArtwork]](../../models/components/mediacontainerwithartwork.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getchannelsglobals.md b/docs/models/operations/getchannelsglobals.md new file mode 100644 index 0000000..8374e53 --- /dev/null +++ b/docs/models/operations/getchannelsglobals.md @@ -0,0 +1,18 @@ +# GetChannelsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getchannelsmediacontainer.md b/docs/models/operations/getchannelsmediacontainer.md new file mode 100644 index 0000000..377ec92 --- /dev/null +++ b/docs/models/operations/getchannelsmediacontainer.md @@ -0,0 +1,17 @@ +# GetChannelsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `channel` | List[[components.Channel](../../models/components/channel.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getchannelsrequest.md b/docs/models/operations/getchannelsrequest.md new file mode 100644 index 0000000..4eb9e82 --- /dev/null +++ b/docs/models/operations/getchannelsrequest.md @@ -0,0 +1,19 @@ +# GetChannelsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `lineup` | *str* | :heavy_check_mark: | The URI describing the lineup | | \ No newline at end of file diff --git a/docs/models/operations/getchannelsresponse.md b/docs/models/operations/getchannelsresponse.md new file mode 100644 index 0000000..796fa3e --- /dev/null +++ b/docs/models/operations/getchannelsresponse.md @@ -0,0 +1,12 @@ +# GetChannelsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetChannelsResponseBody]](../../models/operations/getchannelsresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getchannelsresponsebody.md b/docs/models/operations/getchannelsresponsebody.md new file mode 100644 index 0000000..8ba995a --- /dev/null +++ b/docs/models/operations/getchannelsresponsebody.md @@ -0,0 +1,10 @@ +# GetChannelsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.GetChannelsMediaContainer]](../../models/operations/getchannelsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getchapterimageglobals.md b/docs/models/operations/getchapterimageglobals.md new file mode 100644 index 0000000..6415dc4 --- /dev/null +++ b/docs/models/operations/getchapterimageglobals.md @@ -0,0 +1,18 @@ +# GetChapterImageGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getchapterimagerequest.md b/docs/models/operations/getchapterimagerequest.md new file mode 100644 index 0000000..ea469fb --- /dev/null +++ b/docs/models/operations/getchapterimagerequest.md @@ -0,0 +1,20 @@ +# GetChapterImageRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `media_id` | *int* | :heavy_check_mark: | The id of the media item | | +| `chapter` | *int* | :heavy_check_mark: | The index of the chapter | | \ No newline at end of file diff --git a/docs/models/operations/getchapterimageresponse.md b/docs/models/operations/getchapterimageresponse.md new file mode 100644 index 0000000..497e82f --- /dev/null +++ b/docs/models/operations/getchapterimageresponse.md @@ -0,0 +1,11 @@ +# GetChapterImageResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getclusterglobals.md b/docs/models/operations/getclusterglobals.md new file mode 100644 index 0000000..ce72dc5 --- /dev/null +++ b/docs/models/operations/getclusterglobals.md @@ -0,0 +1,18 @@ +# GetClusterGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getclusterrequest.md b/docs/models/operations/getclusterrequest.md new file mode 100644 index 0000000..f514291 --- /dev/null +++ b/docs/models/operations/getclusterrequest.md @@ -0,0 +1,19 @@ +# GetClusterRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/models/operations/getclusterresponse.md b/docs/models/operations/getclusterresponse.md new file mode 100644 index 0000000..3deb62b --- /dev/null +++ b/docs/models/operations/getclusterresponse.md @@ -0,0 +1,11 @@ +# GetClusterResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_artwork` | [Optional[components.MediaContainerWithArtwork]](../../models/components/mediacontainerwithartwork.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getcollectionimageglobals.md b/docs/models/operations/getcollectionimageglobals.md new file mode 100644 index 0000000..9317355 --- /dev/null +++ b/docs/models/operations/getcollectionimageglobals.md @@ -0,0 +1,18 @@ +# GetCollectionImageGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getcollectionimagerequest.md b/docs/models/operations/getcollectionimagerequest.md new file mode 100644 index 0000000..70bda5f --- /dev/null +++ b/docs/models/operations/getcollectionimagerequest.md @@ -0,0 +1,21 @@ +# GetCollectionImageRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `collection_id` | *int* | :heavy_check_mark: | The collection id | | +| `updated_at` | *int* | :heavy_check_mark: | The update time of the image. Used for busting cache. | | +| `composite` | [Optional[components.Composite]](../../models/components/composite.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getcollectionimageresponse.md b/docs/models/operations/getcollectionimageresponse.md new file mode 100644 index 0000000..5630945 --- /dev/null +++ b/docs/models/operations/getcollectionimageresponse.md @@ -0,0 +1,11 @@ +# GetCollectionImageResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getcollectionitemsglobals.md b/docs/models/operations/getcollectionitemsglobals.md new file mode 100644 index 0000000..1aac930 --- /dev/null +++ b/docs/models/operations/getcollectionitemsglobals.md @@ -0,0 +1,18 @@ +# GetCollectionItemsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getcollectionitemsrequest.md b/docs/models/operations/getcollectionitemsrequest.md new file mode 100644 index 0000000..99db64c --- /dev/null +++ b/docs/models/operations/getcollectionitemsrequest.md @@ -0,0 +1,19 @@ +# GetCollectionItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `collection_id` | *int* | :heavy_check_mark: | The collection id | | \ No newline at end of file diff --git a/docs/models/operations/getcollectionitemsresponse.md b/docs/models/operations/getcollectionitemsresponse.md new file mode 100644 index 0000000..b084414 --- /dev/null +++ b/docs/models/operations/getcollectionitemsresponse.md @@ -0,0 +1,11 @@ +# GetCollectionItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getcollectionsglobals.md b/docs/models/operations/getcollectionsglobals.md new file mode 100644 index 0000000..9031841 --- /dev/null +++ b/docs/models/operations/getcollectionsglobals.md @@ -0,0 +1,18 @@ +# GetCollectionsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getcollectionsrequest.md b/docs/models/operations/getcollectionsrequest.md new file mode 100644 index 0000000..13a6bf7 --- /dev/null +++ b/docs/models/operations/getcollectionsrequest.md @@ -0,0 +1,20 @@ +# GetCollectionsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | +| `media_query` | [Optional[components.MediaQuery]](../../models/components/mediaquery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | \ No newline at end of file diff --git a/docs/models/operations/getcollectionsresponse.md b/docs/models/operations/getcollectionsresponse.md new file mode 100644 index 0000000..182ef82 --- /dev/null +++ b/docs/models/operations/getcollectionsresponse.md @@ -0,0 +1,12 @@ +# GetCollectionsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getcolorsglobals.md b/docs/models/operations/getcolorsglobals.md new file mode 100644 index 0000000..e9c908b --- /dev/null +++ b/docs/models/operations/getcolorsglobals.md @@ -0,0 +1,18 @@ +# GetColorsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getcolorsmediacontainer.md b/docs/models/operations/getcolorsmediacontainer.md new file mode 100644 index 0000000..9bea3de --- /dev/null +++ b/docs/models/operations/getcolorsmediacontainer.md @@ -0,0 +1,17 @@ +# GetColorsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `ultra_blur_colors` | List[[operations.UltraBlurColors](../../models/operations/ultrablurcolors.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getcolorsrequest.md b/docs/models/operations/getcolorsrequest.md new file mode 100644 index 0000000..4a242dc --- /dev/null +++ b/docs/models/operations/getcolorsrequest.md @@ -0,0 +1,19 @@ +# GetColorsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `url` | *Optional[str]* | :heavy_minus_sign: | Url for image which requires color extraction. Can be relative PMS library path or absolute url. | /library/metadata/217745/art/1718931408 | \ No newline at end of file diff --git a/docs/models/operations/getcolorsresponse.md b/docs/models/operations/getcolorsresponse.md new file mode 100644 index 0000000..962ca72 --- /dev/null +++ b/docs/models/operations/getcolorsresponse.md @@ -0,0 +1,11 @@ +# GetColorsResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetColorsResponseBody]](../../models/operations/getcolorsresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getcolorsresponsebody.md b/docs/models/operations/getcolorsresponsebody.md new file mode 100644 index 0000000..0816509 --- /dev/null +++ b/docs/models/operations/getcolorsresponsebody.md @@ -0,0 +1,10 @@ +# GetColorsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetColorsMediaContainer]](../../models/operations/getcolorsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getcommonglobals.md b/docs/models/operations/getcommonglobals.md new file mode 100644 index 0000000..8cb5313 --- /dev/null +++ b/docs/models/operations/getcommonglobals.md @@ -0,0 +1,18 @@ +# GetCommonGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getcommonrequest.md b/docs/models/operations/getcommonrequest.md new file mode 100644 index 0000000..01c0f0d --- /dev/null +++ b/docs/models/operations/getcommonrequest.md @@ -0,0 +1,21 @@ +# GetCommonRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | +| `type` | *Optional[int]* | :heavy_minus_sign: | Item type | | +| `media_query` | [Optional[components.MediaQuery]](../../models/components/mediaquery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | \ No newline at end of file diff --git a/docs/models/operations/getcommonresponse.md b/docs/models/operations/getcommonresponse.md new file mode 100644 index 0000000..37f5995 --- /dev/null +++ b/docs/models/operations/getcommonresponse.md @@ -0,0 +1,12 @@ +# GetCommonResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getcompanionsdataresponse.md b/docs/models/operations/getcompanionsdataresponse.md deleted file mode 100644 index 194df2f..0000000 --- a/docs/models/operations/getcompanionsdataresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetCompanionsDataResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `response_bodies` | List[[operations.ResponseBody](../../models/operations/responsebody.md)] | :heavy_minus_sign: | Companions Data | \ No newline at end of file diff --git a/docs/models/operations/getcontinuewatchingglobals.md b/docs/models/operations/getcontinuewatchingglobals.md new file mode 100644 index 0000000..1b34ee8 --- /dev/null +++ b/docs/models/operations/getcontinuewatchingglobals.md @@ -0,0 +1,18 @@ +# GetContinueWatchingGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getcontinuewatchingmediacontainer.md b/docs/models/operations/getcontinuewatchingmediacontainer.md new file mode 100644 index 0000000..2eae161 --- /dev/null +++ b/docs/models/operations/getcontinuewatchingmediacontainer.md @@ -0,0 +1,17 @@ +# GetContinueWatchingMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `hub` | List[[components.Hub](../../models/components/hub.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getcontinuewatchingrequest.md b/docs/models/operations/getcontinuewatchingrequest.md new file mode 100644 index 0000000..c606ffe --- /dev/null +++ b/docs/models/operations/getcontinuewatchingrequest.md @@ -0,0 +1,19 @@ +# GetContinueWatchingRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `count` | *Optional[int]* | :heavy_minus_sign: | Limit results to count items | | \ No newline at end of file diff --git a/docs/models/operations/getcontinuewatchingresponse.md b/docs/models/operations/getcontinuewatchingresponse.md new file mode 100644 index 0000000..c7e12ad --- /dev/null +++ b/docs/models/operations/getcontinuewatchingresponse.md @@ -0,0 +1,12 @@ +# GetContinueWatchingResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetContinueWatchingResponseBody]](../../models/operations/getcontinuewatchingresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getcontinuewatchingresponsebody.md b/docs/models/operations/getcontinuewatchingresponsebody.md new file mode 100644 index 0000000..da8b951 --- /dev/null +++ b/docs/models/operations/getcontinuewatchingresponsebody.md @@ -0,0 +1,10 @@ +# GetContinueWatchingResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetContinueWatchingMediaContainer]](../../models/operations/getcontinuewatchingmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getcountrieslibrarydirectory.md b/docs/models/operations/getcountrieslibrarydirectory.md deleted file mode 100644 index e8a2678..0000000 --- a/docs/models/operations/getcountrieslibrarydirectory.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetCountriesLibraryDirectory - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- | -| `fast_key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/all?country=15491 | -| `key` | *str* | :heavy_check_mark: | N/A | 15491 | -| `title` | *str* | :heavy_check_mark: | N/A | Japan | \ No newline at end of file diff --git a/docs/models/operations/getcountrieslibrarymediacontainer.md b/docs/models/operations/getcountrieslibrarymediacontainer.md deleted file mode 100644 index 300c6c5..0000000 --- a/docs/models/operations/getcountrieslibrarymediacontainer.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetCountriesLibraryMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `allow_sync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `art` | *str* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | -| `content` | *str* | :heavy_check_mark: | The content type or mode. | secondary | -| `identifier` | *str* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `media_tag_prefix` | *str* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `media_tag_version` | *int* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `nocache` | *bool* | :heavy_check_mark: | Specifies whether caching is disabled. | true | -| `thumb` | *str* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | -| `title1` | *str* | :heavy_check_mark: | The primary title of the media container. | TV Series | -| `title2` | *str* | :heavy_check_mark: | The secondary title of the media container. | By Starring Actor | -| `view_group` | *str* | :heavy_check_mark: | Identifier for the view group layout. | secondary | -| `directory` | List[[operations.GetCountriesLibraryDirectory](../../models/operations/getcountrieslibrarydirectory.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getcountrieslibraryqueryparamtype.md b/docs/models/operations/getcountrieslibraryqueryparamtype.md deleted file mode 100644 index 333dcd6..0000000 --- a/docs/models/operations/getcountrieslibraryqueryparamtype.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetCountriesLibraryQueryParamType - -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `MOVIE` | 1 | -| `TV_SHOW` | 2 | -| `SEASON` | 3 | -| `EPISODE` | 4 | -| `ARTIST` | 5 | -| `ALBUM` | 6 | -| `TRACK` | 7 | -| `PHOTO_ALBUM` | 8 | -| `PHOTO` | 9 | \ No newline at end of file diff --git a/docs/models/operations/getcountrieslibraryrequest.md b/docs/models/operations/getcountrieslibraryrequest.md deleted file mode 100644 index 0c60cca..0000000 --- a/docs/models/operations/getcountrieslibraryrequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetCountriesLibraryRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `type` | [operations.GetCountriesLibraryQueryParamType](../../models/operations/getcountrieslibraryqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | \ No newline at end of file diff --git a/docs/models/operations/getcountrieslibraryresponse.md b/docs/models/operations/getcountrieslibraryresponse.md deleted file mode 100644 index 495d975..0000000 --- a/docs/models/operations/getcountrieslibraryresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetCountriesLibraryResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetCountriesLibraryResponseBody]](../../models/operations/getcountrieslibraryresponsebody.md) | :heavy_minus_sign: | Successful response containing media container data. | \ No newline at end of file diff --git a/docs/models/operations/getcountrieslibraryresponsebody.md b/docs/models/operations/getcountrieslibraryresponsebody.md deleted file mode 100644 index 49dd12d..0000000 --- a/docs/models/operations/getcountrieslibraryresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetCountriesLibraryResponseBody - -Successful response containing media container data. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetCountriesLibraryMediaContainer]](../../models/operations/getcountrieslibrarymediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getcountrieslineupsglobals.md b/docs/models/operations/getcountrieslineupsglobals.md new file mode 100644 index 0000000..0b3de47 --- /dev/null +++ b/docs/models/operations/getcountrieslineupsglobals.md @@ -0,0 +1,18 @@ +# GetCountriesLineupsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getcountrieslineupsrequest.md b/docs/models/operations/getcountrieslineupsrequest.md new file mode 100644 index 0000000..f3a42ce --- /dev/null +++ b/docs/models/operations/getcountrieslineupsrequest.md @@ -0,0 +1,21 @@ +# GetCountriesLineupsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `country` | *str* | :heavy_check_mark: | 3 letter country code | | +| `epg_id` | *str* | :heavy_check_mark: | The `providerIdentifier` of the provider | | +| `postal_code` | *Optional[str]* | :heavy_minus_sign: | The postal code for the lineups to fetch | | \ No newline at end of file diff --git a/docs/models/operations/getcountrieslineupsresponse.md b/docs/models/operations/getcountrieslineupsresponse.md new file mode 100644 index 0000000..4f4f2f8 --- /dev/null +++ b/docs/models/operations/getcountrieslineupsresponse.md @@ -0,0 +1,11 @@ +# GetCountriesLineupsResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_lineup` | [Optional[components.MediaContainerWithLineup]](../../models/components/mediacontainerwithlineup.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getcountriesmediacontainer.md b/docs/models/operations/getcountriesmediacontainer.md new file mode 100644 index 0000000..c40df35 --- /dev/null +++ b/docs/models/operations/getcountriesmediacontainer.md @@ -0,0 +1,17 @@ +# GetCountriesMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `country` | List[[operations.Country](../../models/operations/country.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getcountriesresponse.md b/docs/models/operations/getcountriesresponse.md new file mode 100644 index 0000000..aca9fef --- /dev/null +++ b/docs/models/operations/getcountriesresponse.md @@ -0,0 +1,12 @@ +# GetCountriesResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetCountriesResponseBody]](../../models/operations/getcountriesresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getcountriesresponsebody.md b/docs/models/operations/getcountriesresponsebody.md new file mode 100644 index 0000000..3d8249d --- /dev/null +++ b/docs/models/operations/getcountriesresponsebody.md @@ -0,0 +1,10 @@ +# GetCountriesResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetCountriesMediaContainer]](../../models/operations/getcountriesmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getcountryregionscountry.md b/docs/models/operations/getcountryregionscountry.md new file mode 100644 index 0000000..952c59a --- /dev/null +++ b/docs/models/operations/getcountryregionscountry.md @@ -0,0 +1,11 @@ +# GetCountryRegionsCountry + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `national` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getcountryregionsglobals.md b/docs/models/operations/getcountryregionsglobals.md new file mode 100644 index 0000000..2436bcb --- /dev/null +++ b/docs/models/operations/getcountryregionsglobals.md @@ -0,0 +1,18 @@ +# GetCountryRegionsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getcountryregionsmediacontainer.md b/docs/models/operations/getcountryregionsmediacontainer.md new file mode 100644 index 0000000..1656e41 --- /dev/null +++ b/docs/models/operations/getcountryregionsmediacontainer.md @@ -0,0 +1,17 @@ +# GetCountryRegionsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `country` | List[[operations.GetCountryRegionsCountry](../../models/operations/getcountryregionscountry.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getcountryregionsrequest.md b/docs/models/operations/getcountryregionsrequest.md new file mode 100644 index 0000000..b1fcc19 --- /dev/null +++ b/docs/models/operations/getcountryregionsrequest.md @@ -0,0 +1,20 @@ +# GetCountryRegionsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `country` | *str* | :heavy_check_mark: | 3 letter country code | | +| `epg_id` | *str* | :heavy_check_mark: | The `providerIdentifier` of the provider | | \ No newline at end of file diff --git a/docs/models/operations/getcountryregionsresponse.md b/docs/models/operations/getcountryregionsresponse.md new file mode 100644 index 0000000..c326dba --- /dev/null +++ b/docs/models/operations/getcountryregionsresponse.md @@ -0,0 +1,12 @@ +# GetCountryRegionsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetCountryRegionsResponseBody]](../../models/operations/getcountryregionsresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getcountryregionsresponsebody.md b/docs/models/operations/getcountryregionsresponsebody.md new file mode 100644 index 0000000..96c27f0 --- /dev/null +++ b/docs/models/operations/getcountryregionsresponsebody.md @@ -0,0 +1,10 @@ +# GetCountryRegionsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.GetCountryRegionsMediaContainer]](../../models/operations/getcountryregionsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getdevicedetailsglobals.md b/docs/models/operations/getdevicedetailsglobals.md new file mode 100644 index 0000000..0946aef --- /dev/null +++ b/docs/models/operations/getdevicedetailsglobals.md @@ -0,0 +1,18 @@ +# GetDeviceDetailsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getdevicedetailsrequest.md b/docs/models/operations/getdevicedetailsrequest.md new file mode 100644 index 0000000..7fb00c7 --- /dev/null +++ b/docs/models/operations/getdevicedetailsrequest.md @@ -0,0 +1,19 @@ +# GetDeviceDetailsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `device_id` | *int* | :heavy_check_mark: | The ID of the device. | | \ No newline at end of file diff --git a/docs/models/operations/getdevicedetailsresponse.md b/docs/models/operations/getdevicedetailsresponse.md new file mode 100644 index 0000000..7395b5d --- /dev/null +++ b/docs/models/operations/getdevicedetailsresponse.md @@ -0,0 +1,11 @@ +# GetDeviceDetailsResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_device` | [Optional[components.MediaContainerWithDevice]](../../models/components/mediacontainerwithdevice.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getdeviceschannelsglobals.md b/docs/models/operations/getdeviceschannelsglobals.md new file mode 100644 index 0000000..5a02d2b --- /dev/null +++ b/docs/models/operations/getdeviceschannelsglobals.md @@ -0,0 +1,18 @@ +# GetDevicesChannelsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getdeviceschannelsmediacontainer.md b/docs/models/operations/getdeviceschannelsmediacontainer.md new file mode 100644 index 0000000..a3a5184 --- /dev/null +++ b/docs/models/operations/getdeviceschannelsmediacontainer.md @@ -0,0 +1,17 @@ +# GetDevicesChannelsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `device_channel` | List[[operations.DeviceChannel](../../models/operations/devicechannel.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getdeviceschannelsrequest.md b/docs/models/operations/getdeviceschannelsrequest.md new file mode 100644 index 0000000..8bbdf93 --- /dev/null +++ b/docs/models/operations/getdeviceschannelsrequest.md @@ -0,0 +1,19 @@ +# GetDevicesChannelsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `device_id` | *int* | :heavy_check_mark: | The ID of the device. | | \ No newline at end of file diff --git a/docs/models/operations/getdeviceschannelsresponse.md b/docs/models/operations/getdeviceschannelsresponse.md new file mode 100644 index 0000000..be8a96d --- /dev/null +++ b/docs/models/operations/getdeviceschannelsresponse.md @@ -0,0 +1,12 @@ +# GetDevicesChannelsResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetDevicesChannelsResponseBody]](../../models/operations/getdeviceschannelsresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getdeviceschannelsresponsebody.md b/docs/models/operations/getdeviceschannelsresponsebody.md new file mode 100644 index 0000000..dbe52c4 --- /dev/null +++ b/docs/models/operations/getdeviceschannelsresponsebody.md @@ -0,0 +1,10 @@ +# GetDevicesChannelsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetDevicesChannelsMediaContainer]](../../models/operations/getdeviceschannelsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getdevicesmediacontainer.md b/docs/models/operations/getdevicesmediacontainer.md deleted file mode 100644 index 017210c..0000000 --- a/docs/models/operations/getdevicesmediacontainer.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetDevicesMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `size` | *Optional[float]* | :heavy_minus_sign: | N/A | 151 | -| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.system.devices | -| `device` | List[[operations.Device](../../models/operations/device.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getdevicesresponse.md b/docs/models/operations/getdevicesresponse.md deleted file mode 100644 index 37d8d3b..0000000 --- a/docs/models/operations/getdevicesresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetDevicesResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetDevicesResponseBody]](../../models/operations/getdevicesresponsebody.md) | :heavy_minus_sign: | Devices | \ No newline at end of file diff --git a/docs/models/operations/getdevicesresponsebody.md b/docs/models/operations/getdevicesresponsebody.md deleted file mode 100644 index a16be68..0000000 --- a/docs/models/operations/getdevicesresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetDevicesResponseBody - -Devices - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetDevicesMediaContainer]](../../models/operations/getdevicesmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueuedownloadqueue.md b/docs/models/operations/getdownloadqueuedownloadqueue.md new file mode 100644 index 0000000..649bb14 --- /dev/null +++ b/docs/models/operations/getdownloadqueuedownloadqueue.md @@ -0,0 +1,10 @@ +# GetDownloadQueueDownloadQueue + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `item_count` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `status` | [Optional[operations.GetDownloadQueueStatus]](../../models/operations/getdownloadqueuestatus.md) | :heavy_minus_sign: | The state of this queue
- deciding: At least one item is still being decided
- waiting: At least one item is waiting for transcode and none are currently transcoding
- processing: At least one item is being transcoded
- done: All items are available (or potentially expired)
- error: At least one item has encountered an error
| \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueueglobals.md b/docs/models/operations/getdownloadqueueglobals.md new file mode 100644 index 0000000..3a12eff --- /dev/null +++ b/docs/models/operations/getdownloadqueueglobals.md @@ -0,0 +1,18 @@ +# GetDownloadQueueGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueueitemsdecisionresult.md b/docs/models/operations/getdownloadqueueitemsdecisionresult.md new file mode 100644 index 0000000..e4f06ae --- /dev/null +++ b/docs/models/operations/getdownloadqueueitemsdecisionresult.md @@ -0,0 +1,16 @@ +# GetDownloadQueueItemsDecisionResult + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `available_bandwidth` | *Optional[int]* | :heavy_minus_sign: | The maximum bitrate set when item was added | +| `direct_play_decision_code` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `direct_play_decision_text` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `general_decision_code` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `general_decision_text` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `mde_decision_code` | *Optional[int]* | :heavy_minus_sign: | The code indicating the status of evaluation of playback when client indicates `hasMDE=1` | +| `mde_decision_text` | *Optional[str]* | :heavy_minus_sign: | Descriptive text for the above code | +| `transcode_decision_code` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `transcode_decision_text` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueueitemsdownloadqueueitem.md b/docs/models/operations/getdownloadqueueitemsdownloadqueueitem.md new file mode 100644 index 0000000..d0cccfd --- /dev/null +++ b/docs/models/operations/getdownloadqueueitemsdownloadqueueitem.md @@ -0,0 +1,15 @@ +# GetDownloadQueueItemsDownloadQueueItem + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `decision_result` | [Optional[operations.GetDownloadQueueItemsDecisionResult]](../../models/operations/getdownloadqueueitemsdecisionresult.md) | :heavy_minus_sign: | N/A | +| `error` | *Optional[str]* | :heavy_minus_sign: | The error encountered in transcoding or decision | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `queue_id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `status` | [Optional[operations.GetDownloadQueueItemsStatus]](../../models/operations/getdownloadqueueitemsstatus.md) | :heavy_minus_sign: | The state of the item:
- deciding: The item decision is pending
- waiting: The item is waiting for transcode
- processing: The item is being transcoded
- available: The item is available for download
- error: The item encountered an error in the decision or transcode
- expired: The transcoded item has timed out and is no longer available
| +| `transcode` | [Optional[operations.GetDownloadQueueItemsTranscode]](../../models/operations/getdownloadqueueitemstranscode.md) | :heavy_minus_sign: | The transcode session object which is not yet documented otherwise it'd be a $ref here. | +| `transcode_session` | [Optional[components.TranscodeSession]](../../models/components/transcodesession.md) | :heavy_minus_sign: | The transcode session if item is currently being transcoded | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueueitemsglobals.md b/docs/models/operations/getdownloadqueueitemsglobals.md new file mode 100644 index 0000000..4a94f0c --- /dev/null +++ b/docs/models/operations/getdownloadqueueitemsglobals.md @@ -0,0 +1,18 @@ +# GetDownloadQueueItemsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueueitemsmediacontainer.md b/docs/models/operations/getdownloadqueueitemsmediacontainer.md new file mode 100644 index 0000000..53aa817 --- /dev/null +++ b/docs/models/operations/getdownloadqueueitemsmediacontainer.md @@ -0,0 +1,17 @@ +# GetDownloadQueueItemsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `download_queue_item` | List[[operations.GetDownloadQueueItemsDownloadQueueItem](../../models/operations/getdownloadqueueitemsdownloadqueueitem.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueueitemsrequest.md b/docs/models/operations/getdownloadqueueitemsrequest.md new file mode 100644 index 0000000..57aa92e --- /dev/null +++ b/docs/models/operations/getdownloadqueueitemsrequest.md @@ -0,0 +1,20 @@ +# GetDownloadQueueItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `queue_id` | *int* | :heavy_check_mark: | The queue id | | +| `item_id` | List[*int*] | :heavy_check_mark: | The item ids | [
32,
345,
23
] | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueueitemsresponse.md b/docs/models/operations/getdownloadqueueitemsresponse.md new file mode 100644 index 0000000..aa838e8 --- /dev/null +++ b/docs/models/operations/getdownloadqueueitemsresponse.md @@ -0,0 +1,11 @@ +# GetDownloadQueueItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetDownloadQueueItemsResponseBody]](../../models/operations/getdownloadqueueitemsresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueueitemsresponsebody.md b/docs/models/operations/getdownloadqueueitemsresponsebody.md new file mode 100644 index 0000000..b556e4f --- /dev/null +++ b/docs/models/operations/getdownloadqueueitemsresponsebody.md @@ -0,0 +1,10 @@ +# GetDownloadQueueItemsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetDownloadQueueItemsMediaContainer]](../../models/operations/getdownloadqueueitemsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueueitemsstatus.md b/docs/models/operations/getdownloadqueueitemsstatus.md new file mode 100644 index 0000000..2d3c673 --- /dev/null +++ b/docs/models/operations/getdownloadqueueitemsstatus.md @@ -0,0 +1,22 @@ +# GetDownloadQueueItemsStatus + +The state of the item: + - deciding: The item decision is pending + - waiting: The item is waiting for transcode + - processing: The item is being transcoded + - available: The item is available for download + - error: The item encountered an error in the decision or transcode + - expired: The transcoded item has timed out and is no longer available + + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `DECIDING` | deciding | +| `WAITING` | waiting | +| `PROCESSING` | processing | +| `AVAILABLE` | available | +| `ERROR` | error | +| `EXPIRED` | expired | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueueitemstranscode.md b/docs/models/operations/getdownloadqueueitemstranscode.md new file mode 100644 index 0000000..cf4954a --- /dev/null +++ b/docs/models/operations/getdownloadqueueitemstranscode.md @@ -0,0 +1,9 @@ +# GetDownloadQueueItemsTranscode + +The transcode session object which is not yet documented otherwise it'd be a $ref here. + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueuemediacontainer.md b/docs/models/operations/getdownloadqueuemediacontainer.md new file mode 100644 index 0000000..0df2dea --- /dev/null +++ b/docs/models/operations/getdownloadqueuemediacontainer.md @@ -0,0 +1,17 @@ +# GetDownloadQueueMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `download_queue` | List[[operations.GetDownloadQueueDownloadQueue](../../models/operations/getdownloadqueuedownloadqueue.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueuemediaglobals.md b/docs/models/operations/getdownloadqueuemediaglobals.md new file mode 100644 index 0000000..20378ca --- /dev/null +++ b/docs/models/operations/getdownloadqueuemediaglobals.md @@ -0,0 +1,18 @@ +# GetDownloadQueueMediaGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueuemediarequest.md b/docs/models/operations/getdownloadqueuemediarequest.md new file mode 100644 index 0000000..9e80047 --- /dev/null +++ b/docs/models/operations/getdownloadqueuemediarequest.md @@ -0,0 +1,20 @@ +# GetDownloadQueueMediaRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `queue_id` | *int* | :heavy_check_mark: | The queue id | | +| `item_id` | *int* | :heavy_check_mark: | The item ids | 32 | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueuemediaresponse.md b/docs/models/operations/getdownloadqueuemediaresponse.md new file mode 100644 index 0000000..1a6542b --- /dev/null +++ b/docs/models/operations/getdownloadqueuemediaresponse.md @@ -0,0 +1,11 @@ +# GetDownloadQueueMediaResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueuerequest.md b/docs/models/operations/getdownloadqueuerequest.md new file mode 100644 index 0000000..f908035 --- /dev/null +++ b/docs/models/operations/getdownloadqueuerequest.md @@ -0,0 +1,19 @@ +# GetDownloadQueueRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `queue_id` | *int* | :heavy_check_mark: | The queue id | | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueueresponse.md b/docs/models/operations/getdownloadqueueresponse.md new file mode 100644 index 0000000..7231891 --- /dev/null +++ b/docs/models/operations/getdownloadqueueresponse.md @@ -0,0 +1,11 @@ +# GetDownloadQueueResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetDownloadQueueResponseBody]](../../models/operations/getdownloadqueueresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueueresponsebody.md b/docs/models/operations/getdownloadqueueresponsebody.md new file mode 100644 index 0000000..28435ed --- /dev/null +++ b/docs/models/operations/getdownloadqueueresponsebody.md @@ -0,0 +1,10 @@ +# GetDownloadQueueResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetDownloadQueueMediaContainer]](../../models/operations/getdownloadqueuemediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getdownloadqueuestatus.md b/docs/models/operations/getdownloadqueuestatus.md new file mode 100644 index 0000000..6aa946d --- /dev/null +++ b/docs/models/operations/getdownloadqueuestatus.md @@ -0,0 +1,20 @@ +# GetDownloadQueueStatus + +The state of this queue + - deciding: At least one item is still being decided + - waiting: At least one item is waiting for transcode and none are currently transcoding + - processing: At least one item is being transcoded + - done: All items are available (or potentially expired) + - error: At least one item has encountered an error + + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `DECIDING` | deciding | +| `WAITING` | waiting | +| `PROCESSING` | processing | +| `DONE` | done | +| `ERROR` | error | \ No newline at end of file diff --git a/docs/models/operations/getdvrdvr.md b/docs/models/operations/getdvrdvr.md new file mode 100644 index 0000000..48a5b44 --- /dev/null +++ b/docs/models/operations/getdvrdvr.md @@ -0,0 +1,12 @@ +# GetDVRDVR + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `device` | List[[components.Device](../../models/components/device.md)] | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `lineup` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getdvrdvrsmediacontainer.md b/docs/models/operations/getdvrdvrsmediacontainer.md new file mode 100644 index 0000000..812718d --- /dev/null +++ b/docs/models/operations/getdvrdvrsmediacontainer.md @@ -0,0 +1,17 @@ +# GetDVRDVRsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `status` | *Optional[int]* | :heavy_minus_sign: | A status indicator. If present and non-zero, indicates an error | \ No newline at end of file diff --git a/docs/models/operations/getdvrglobals.md b/docs/models/operations/getdvrglobals.md new file mode 100644 index 0000000..496aad9 --- /dev/null +++ b/docs/models/operations/getdvrglobals.md @@ -0,0 +1,18 @@ +# GetDVRGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getdvrmediacontainer.md b/docs/models/operations/getdvrmediacontainer.md new file mode 100644 index 0000000..7ccd9e7 --- /dev/null +++ b/docs/models/operations/getdvrmediacontainer.md @@ -0,0 +1,9 @@ +# GetDVRMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetDVRDVRsMediaContainer]](../../models/operations/getdvrdvrsmediacontainer.md) | :heavy_minus_sign: | N/A | +| `dvr` | List[[operations.GetDVRDVR](../../models/operations/getdvrdvr.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getdvrrequest.md b/docs/models/operations/getdvrrequest.md new file mode 100644 index 0000000..01fd7a0 --- /dev/null +++ b/docs/models/operations/getdvrrequest.md @@ -0,0 +1,19 @@ +# GetDVRRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `dvr_id` | *int* | :heavy_check_mark: | The ID of the DVR. | | \ No newline at end of file diff --git a/docs/models/operations/getdvrresponse.md b/docs/models/operations/getdvrresponse.md new file mode 100644 index 0000000..f4aebbc --- /dev/null +++ b/docs/models/operations/getdvrresponse.md @@ -0,0 +1,12 @@ +# GetDVRResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetDVRResponseBody]](../../models/operations/getdvrresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getdvrresponsebody.md b/docs/models/operations/getdvrresponsebody.md new file mode 100644 index 0000000..97b99e3 --- /dev/null +++ b/docs/models/operations/getdvrresponsebody.md @@ -0,0 +1,10 @@ +# GetDVRResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetDVRMediaContainer]](../../models/operations/getdvrmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getextrasglobals.md b/docs/models/operations/getextrasglobals.md new file mode 100644 index 0000000..28c891d --- /dev/null +++ b/docs/models/operations/getextrasglobals.md @@ -0,0 +1,18 @@ +# GetExtrasGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getextrasrequest.md b/docs/models/operations/getextrasrequest.md new file mode 100644 index 0000000..cbe5573 --- /dev/null +++ b/docs/models/operations/getextrasrequest.md @@ -0,0 +1,19 @@ +# GetExtrasRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getextrasresponse.md b/docs/models/operations/getextrasresponse.md new file mode 100644 index 0000000..26922a7 --- /dev/null +++ b/docs/models/operations/getextrasresponse.md @@ -0,0 +1,12 @@ +# GetExtrasResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getfileglobals.md b/docs/models/operations/getfileglobals.md new file mode 100644 index 0000000..9ce094a --- /dev/null +++ b/docs/models/operations/getfileglobals.md @@ -0,0 +1,18 @@ +# GetFileGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getfilehashrequest.md b/docs/models/operations/getfilehashrequest.md deleted file mode 100644 index 1bd8306..0000000 --- a/docs/models/operations/getfilehashrequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetFileHashRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------- | -| `url` | *str* | :heavy_check_mark: | This is the path to the local file, must be prefixed by `file://` | file://C:\Image.png&type=13 | -| `type` | *Optional[float]* | :heavy_minus_sign: | Item type | | \ No newline at end of file diff --git a/docs/models/operations/getfilehashresponse.md b/docs/models/operations/getfilehashresponse.md deleted file mode 100644 index 49c5c88..0000000 --- a/docs/models/operations/getfilehashresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetFileHashResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/getfilerequest.md b/docs/models/operations/getfilerequest.md new file mode 100644 index 0000000..6bde2e2 --- /dev/null +++ b/docs/models/operations/getfilerequest.md @@ -0,0 +1,20 @@ +# GetFileRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `url` | *Optional[str]* | :heavy_minus_sign: | The bundle url, typically starting with `metadata://` or `media://` | | \ No newline at end of file diff --git a/docs/models/operations/getfileresponse.md b/docs/models/operations/getfileresponse.md new file mode 100644 index 0000000..cb1f710 --- /dev/null +++ b/docs/models/operations/getfileresponse.md @@ -0,0 +1,12 @@ +# GetFileResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `two_hundred_audio_mpeg3_response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | OK | +| `two_hundred_image_jpeg_response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getfirstcharactersdirectory.md b/docs/models/operations/getfirstcharactersdirectory.md new file mode 100644 index 0000000..f62cbc6 --- /dev/null +++ b/docs/models/operations/getfirstcharactersdirectory.md @@ -0,0 +1,10 @@ +# GetFirstCharactersDirectory + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | ------------------------------------------------ | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `size` | *Optional[int]* | :heavy_minus_sign: | The number of items starting with this character | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getfirstcharactersglobals.md b/docs/models/operations/getfirstcharactersglobals.md new file mode 100644 index 0000000..5ef020c --- /dev/null +++ b/docs/models/operations/getfirstcharactersglobals.md @@ -0,0 +1,18 @@ +# GetFirstCharactersGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getfirstcharactersmediacontainer.md b/docs/models/operations/getfirstcharactersmediacontainer.md new file mode 100644 index 0000000..d94a165 --- /dev/null +++ b/docs/models/operations/getfirstcharactersmediacontainer.md @@ -0,0 +1,17 @@ +# GetFirstCharactersMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `directory` | List[[operations.GetFirstCharactersDirectory](../../models/operations/getfirstcharactersdirectory.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getfirstcharactersrequest.md b/docs/models/operations/getfirstcharactersrequest.md new file mode 100644 index 0000000..93fddbf --- /dev/null +++ b/docs/models/operations/getfirstcharactersrequest.md @@ -0,0 +1,22 @@ +# GetFirstCharactersRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | +| `type` | *Optional[int]* | :heavy_minus_sign: | The metadata type to filter on | | +| `sort` | *Optional[int]* | :heavy_minus_sign: | The metadata type to filter on | | +| `media_query` | [Optional[components.MediaQuery]](../../models/components/mediaquery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | \ No newline at end of file diff --git a/docs/models/operations/getfirstcharactersresponse.md b/docs/models/operations/getfirstcharactersresponse.md new file mode 100644 index 0000000..6da480d --- /dev/null +++ b/docs/models/operations/getfirstcharactersresponse.md @@ -0,0 +1,11 @@ +# GetFirstCharactersResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetFirstCharactersResponseBody]](../../models/operations/getfirstcharactersresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getfirstcharactersresponsebody.md b/docs/models/operations/getfirstcharactersresponsebody.md new file mode 100644 index 0000000..75e4b87 --- /dev/null +++ b/docs/models/operations/getfirstcharactersresponsebody.md @@ -0,0 +1,10 @@ +# GetFirstCharactersResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetFirstCharactersMediaContainer]](../../models/operations/getfirstcharactersmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getfoldersdirectory.md b/docs/models/operations/getfoldersdirectory.md new file mode 100644 index 0000000..bd9256d --- /dev/null +++ b/docs/models/operations/getfoldersdirectory.md @@ -0,0 +1,10 @@ +# GetFoldersDirectory + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `fast_key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getfoldersglobals.md b/docs/models/operations/getfoldersglobals.md new file mode 100644 index 0000000..1c525bd --- /dev/null +++ b/docs/models/operations/getfoldersglobals.md @@ -0,0 +1,18 @@ +# GetFoldersGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getfoldersmediacontainer.md b/docs/models/operations/getfoldersmediacontainer.md new file mode 100644 index 0000000..acee8b7 --- /dev/null +++ b/docs/models/operations/getfoldersmediacontainer.md @@ -0,0 +1,17 @@ +# GetFoldersMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `directory` | List[[operations.GetFoldersDirectory](../../models/operations/getfoldersdirectory.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getfoldersrequest.md b/docs/models/operations/getfoldersrequest.md new file mode 100644 index 0000000..3040be5 --- /dev/null +++ b/docs/models/operations/getfoldersrequest.md @@ -0,0 +1,19 @@ +# GetFoldersRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/models/operations/getfoldersresponse.md b/docs/models/operations/getfoldersresponse.md new file mode 100644 index 0000000..eb54bae --- /dev/null +++ b/docs/models/operations/getfoldersresponse.md @@ -0,0 +1,11 @@ +# GetFoldersResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetFoldersResponseBody]](../../models/operations/getfoldersresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getfoldersresponsebody.md b/docs/models/operations/getfoldersresponsebody.md new file mode 100644 index 0000000..d86b44a --- /dev/null +++ b/docs/models/operations/getfoldersresponsebody.md @@ -0,0 +1,10 @@ +# GetFoldersResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetFoldersMediaContainer]](../../models/operations/getfoldersmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getgenreslibrarydirectory.md b/docs/models/operations/getgenreslibrarydirectory.md deleted file mode 100644 index 3598394..0000000 --- a/docs/models/operations/getgenreslibrarydirectory.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGenresLibraryDirectory - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | -| `fast_key` | *str* | :heavy_check_mark: | N/A | /library/sections/10/all?genre=89 | -| `key` | *str* | :heavy_check_mark: | N/A | 89 | -| `title` | *str* | :heavy_check_mark: | N/A | Action | -| `type` | *str* | :heavy_check_mark: | N/A | genre | \ No newline at end of file diff --git a/docs/models/operations/getgenreslibrarymediacontainer.md b/docs/models/operations/getgenreslibrarymediacontainer.md deleted file mode 100644 index 0067f53..0000000 --- a/docs/models/operations/getgenreslibrarymediacontainer.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetGenresLibraryMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `allow_sync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `art` | *str* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | -| `content` | *str* | :heavy_check_mark: | The content type or mode. | secondary | -| `identifier` | *str* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `media_tag_prefix` | *str* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `media_tag_version` | *int* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `nocache` | *bool* | :heavy_check_mark: | Specifies whether caching is disabled. | true | -| `thumb` | *str* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | -| `title1` | *str* | :heavy_check_mark: | The primary title of the media container. | TV Series | -| `title2` | *str* | :heavy_check_mark: | The secondary title of the media container. | By Starring Actor | -| `view_group` | *str* | :heavy_check_mark: | Identifier for the view group layout. | secondary | -| `directory` | List[[operations.GetGenresLibraryDirectory](../../models/operations/getgenreslibrarydirectory.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getgenreslibraryqueryparamtype.md b/docs/models/operations/getgenreslibraryqueryparamtype.md deleted file mode 100644 index 2a59ac1..0000000 --- a/docs/models/operations/getgenreslibraryqueryparamtype.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetGenresLibraryQueryParamType - -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `MOVIE` | 1 | -| `TV_SHOW` | 2 | -| `SEASON` | 3 | -| `EPISODE` | 4 | -| `ARTIST` | 5 | -| `ALBUM` | 6 | -| `TRACK` | 7 | -| `PHOTO_ALBUM` | 8 | -| `PHOTO` | 9 | \ No newline at end of file diff --git a/docs/models/operations/getgenreslibraryrequest.md b/docs/models/operations/getgenreslibraryrequest.md deleted file mode 100644 index 0f6609f..0000000 --- a/docs/models/operations/getgenreslibraryrequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetGenresLibraryRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `type` | [operations.GetGenresLibraryQueryParamType](../../models/operations/getgenreslibraryqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | \ No newline at end of file diff --git a/docs/models/operations/getgenreslibraryresponse.md b/docs/models/operations/getgenreslibraryresponse.md deleted file mode 100644 index a0b5094..0000000 --- a/docs/models/operations/getgenreslibraryresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGenresLibraryResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetGenresLibraryResponseBody]](../../models/operations/getgenreslibraryresponsebody.md) | :heavy_minus_sign: | Successful response containing media container data. | \ No newline at end of file diff --git a/docs/models/operations/getgenreslibraryresponsebody.md b/docs/models/operations/getgenreslibraryresponsebody.md deleted file mode 100644 index 6197e20..0000000 --- a/docs/models/operations/getgenreslibraryresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGenresLibraryResponseBody - -Successful response containing media container data. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetGenresLibraryMediaContainer]](../../models/operations/getgenreslibrarymediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getgeodatageodata.md b/docs/models/operations/getgeodatageodata.md deleted file mode 100644 index ef9ff17..0000000 --- a/docs/models/operations/getgeodatageodata.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetGeoDataGeoData - -Geo location data - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `code` | *str* | :heavy_check_mark: | The ISO 3166-1 alpha-2 code of the country. | VI | -| `continent_code` | *str* | :heavy_check_mark: | The continent code where the country is located. | NA | -| `country` | *str* | :heavy_check_mark: | The official name of the country. | United States Virgin Islands | -| `city` | *str* | :heavy_check_mark: | The name of the city. | Amsterdam | -| `european_union_member` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the country is a member of the European Union. | true | -| `time_zone` | *str* | :heavy_check_mark: | The time zone of the country. | America/St_Thomas | -| `postal_code` | *str* | :heavy_check_mark: | The postal code of the location. | 802 | -| `in_privacy_restricted_country` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the country has privacy restrictions. | true | -| `in_privacy_restricted_region` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the region has privacy restrictions. | true | -| `subdivisions` | *str* | :heavy_check_mark: | The name of the primary administrative subdivision. | Saint Thomas | -| `coordinates` | *str* | :heavy_check_mark: | The geographical coordinates (latitude, longitude) of the location. | 18.3381, -64.8941 | \ No newline at end of file diff --git a/docs/models/operations/getgeodataresponse.md b/docs/models/operations/getgeodataresponse.md deleted file mode 100644 index 74843d7..0000000 --- a/docs/models/operations/getgeodataresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGeoDataResponse - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | | -| `geo_data` | [Optional[operations.GetGeoDataGeoData]](../../models/operations/getgeodatageodata.md) | :heavy_minus_sign: | Gets the geo location data of the user | {
"code": "VI",
"continent_code": "NA",
"country": "United States Virgin Islands",
"city": "Amsterdam",
"european_union_member": true,
"time_zone": "America/St_Thomas",
"postal_code": 802,
"in_privacy_restricted_country": true,
"in_privacy_restricted_region": true,
"subdivisions": "Saint Thomas",
"coordinates": "18.3381, -64.8941"
} | \ No newline at end of file diff --git a/docs/models/operations/getglobalhubsmediacontainer.md b/docs/models/operations/getglobalhubsmediacontainer.md deleted file mode 100644 index e670260..0000000 --- a/docs/models/operations/getglobalhubsmediacontainer.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGlobalHubsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 8 | -| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `hub` | List[[operations.Hub](../../models/operations/hub.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getglobalhubsmetadata.md b/docs/models/operations/getglobalhubsmetadata.md deleted file mode 100644 index e637b8c..0000000 --- a/docs/models/operations/getglobalhubsmetadata.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetGlobalHubsMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 57070 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /playlists/57070/items | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.agents.none://9fee6c5b-3143-4923-813e-57bd0190056c | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | playlist | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | November Movie Day | -| `title_sort` | *Optional[str]* | :heavy_minus_sign: | N/A | Tracks | -| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | | -| `smart` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `playlist_type` | *Optional[str]* | :heavy_minus_sign: | N/A | video | -| `composite` | *Optional[str]* | :heavy_minus_sign: | N/A | /playlists/57070/composite/1668787730 | -| `icon` | *Optional[str]* | :heavy_minus_sign: | N/A | playlist://image.smart | -| `view_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | -| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1668787732 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 16873000 | -| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 3 | -| `added_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1668779618 | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1668787730 | \ No newline at end of file diff --git a/docs/models/operations/getglobalhubsrequest.md b/docs/models/operations/getglobalhubsrequest.md deleted file mode 100644 index 747e02c..0000000 --- a/docs/models/operations/getglobalhubsrequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetGlobalHubsRequest - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| `count` | *Optional[float]* | :heavy_minus_sign: | The number of items to return with each hub. | -| `only_transient` | [Optional[operations.OnlyTransient]](../../models/operations/onlytransient.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). | \ No newline at end of file diff --git a/docs/models/operations/getglobalhubsresponse.md b/docs/models/operations/getglobalhubsresponse.md deleted file mode 100644 index 78a7d0c..0000000 --- a/docs/models/operations/getglobalhubsresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetGlobalHubsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetGlobalHubsResponseBody]](../../models/operations/getglobalhubsresponsebody.md) | :heavy_minus_sign: | returns global hubs | \ No newline at end of file diff --git a/docs/models/operations/getglobalhubsresponsebody.md b/docs/models/operations/getglobalhubsresponsebody.md deleted file mode 100644 index 04c2bb3..0000000 --- a/docs/models/operations/getglobalhubsresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetGlobalHubsResponseBody - -returns global hubs - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetGlobalHubsMediaContainer]](../../models/operations/getglobalhubsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/gethistoryitemglobals.md b/docs/models/operations/gethistoryitemglobals.md new file mode 100644 index 0000000..f3e5641 --- /dev/null +++ b/docs/models/operations/gethistoryitemglobals.md @@ -0,0 +1,18 @@ +# GetHistoryItemGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/gethistoryitemrequest.md b/docs/models/operations/gethistoryitemrequest.md new file mode 100644 index 0000000..e1da297 --- /dev/null +++ b/docs/models/operations/gethistoryitemrequest.md @@ -0,0 +1,19 @@ +# GetHistoryItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `history_id` | *int* | :heavy_check_mark: | The id of the history item (the `historyKey` from above) | | \ No newline at end of file diff --git a/docs/models/operations/gethistoryitemresponse.md b/docs/models/operations/gethistoryitemresponse.md new file mode 100644 index 0000000..70dca95 --- /dev/null +++ b/docs/models/operations/gethistoryitemresponse.md @@ -0,0 +1,12 @@ +# GetHistoryItemResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `history_all_get_responses_200` | [Optional[components.HistoryAllGetResponses200]](../../models/components/historyallgetresponses200.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/gethomedataresponse.md b/docs/models/operations/gethomedataresponse.md deleted file mode 100644 index c4b7442..0000000 --- a/docs/models/operations/gethomedataresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetHomeDataResponse - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetHomeDataResponseBody]](../../models/operations/gethomedataresponsebody.md) | :heavy_minus_sign: | Home Data | \ No newline at end of file diff --git a/docs/models/operations/gethomedataresponsebody.md b/docs/models/operations/gethomedataresponsebody.md deleted file mode 100644 index 875eb7d..0000000 --- a/docs/models/operations/gethomedataresponsebody.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetHomeDataResponseBody - -Home Data - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | -| `id` | *Optional[float]* | :heavy_minus_sign: | N/A | 1841489 | -| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | Blindkitty38's home | -| `guest_user_id` | *Optional[float]* | :heavy_minus_sign: | N/A | 58815432 | -| `guest_user_uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | f3df4e01bfca0787 | -| `guest_enabled` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `subscription` | *Optional[bool]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/gethubitemsglobals.md b/docs/models/operations/gethubitemsglobals.md new file mode 100644 index 0000000..9799045 --- /dev/null +++ b/docs/models/operations/gethubitemsglobals.md @@ -0,0 +1,18 @@ +# GetHubItemsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/gethubitemsrequest.md b/docs/models/operations/gethubitemsrequest.md new file mode 100644 index 0000000..af4042d --- /dev/null +++ b/docs/models/operations/gethubitemsrequest.md @@ -0,0 +1,20 @@ +# GetHubItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `count` | *Optional[int]* | :heavy_minus_sign: | Limit results to count items | | +| `identifier` | List[*str*] | :heavy_check_mark: | If provided, limit to only specified hubs | | \ No newline at end of file diff --git a/docs/models/operations/gethubitemsresponse.md b/docs/models/operations/gethubitemsresponse.md new file mode 100644 index 0000000..e874dfd --- /dev/null +++ b/docs/models/operations/gethubitemsresponse.md @@ -0,0 +1,12 @@ +# GetHubItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetHubItemsResponseBody]](../../models/operations/gethubitemsresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/gethubitemsresponsebody.md b/docs/models/operations/gethubitemsresponsebody.md new file mode 100644 index 0000000..b3d907f --- /dev/null +++ b/docs/models/operations/gethubitemsresponsebody.md @@ -0,0 +1,10 @@ +# GetHubItemsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[components.MediaContainer]](../../models/components/mediacontainer.md) | :heavy_minus_sign: | `MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable.
Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination)
The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track.
| \ No newline at end of file diff --git a/docs/models/operations/getidentitymediacontainer.md b/docs/models/operations/getidentitymediacontainer.md new file mode 100644 index 0000000..d1b553a --- /dev/null +++ b/docs/models/operations/getidentitymediacontainer.md @@ -0,0 +1,11 @@ +# GetIdentityMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | +| `claimed` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether this server has been claimed by a user | +| `machine_identifier` | *Optional[str]* | :heavy_minus_sign: | A unique identifier of the computer | +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `version` | *Optional[str]* | :heavy_minus_sign: | The full version string of the PMS | \ No newline at end of file diff --git a/docs/models/operations/getidentityresponse.md b/docs/models/operations/getidentityresponse.md new file mode 100644 index 0000000..0b67e2c --- /dev/null +++ b/docs/models/operations/getidentityresponse.md @@ -0,0 +1,11 @@ +# GetIdentityResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetIdentityResponseBody]](../../models/operations/getidentityresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getidentityresponsebody.md b/docs/models/operations/getidentityresponsebody.md new file mode 100644 index 0000000..6bf707b --- /dev/null +++ b/docs/models/operations/getidentityresponsebody.md @@ -0,0 +1,10 @@ +# GetIdentityResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.GetIdentityMediaContainer]](../../models/operations/getidentitymediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getimagefrombifglobals.md b/docs/models/operations/getimagefrombifglobals.md new file mode 100644 index 0000000..eb74634 --- /dev/null +++ b/docs/models/operations/getimagefrombifglobals.md @@ -0,0 +1,18 @@ +# GetImageFromBifGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getimagefrombifrequest.md b/docs/models/operations/getimagefrombifrequest.md new file mode 100644 index 0000000..3eeae31 --- /dev/null +++ b/docs/models/operations/getimagefrombifrequest.md @@ -0,0 +1,21 @@ +# GetImageFromBifRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `part_id` | *int* | :heavy_check_mark: | The part id who's index is to be fetched | | +| `index` | [operations.PathParamIndex](../../models/operations/pathparamindex.md) | :heavy_check_mark: | The type of index to grab. | | +| `offset` | *int* | :heavy_check_mark: | The offset to seek in ms. | | \ No newline at end of file diff --git a/docs/models/operations/getimagefrombifresponse.md b/docs/models/operations/getimagefrombifresponse.md new file mode 100644 index 0000000..444188e --- /dev/null +++ b/docs/models/operations/getimagefrombifresponse.md @@ -0,0 +1,11 @@ +# GetImageFromBifResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getimageglobals.md b/docs/models/operations/getimageglobals.md new file mode 100644 index 0000000..1cf7db6 --- /dev/null +++ b/docs/models/operations/getimageglobals.md @@ -0,0 +1,18 @@ +# GetImageGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getimagerequest.md b/docs/models/operations/getimagerequest.md new file mode 100644 index 0000000..41ddbea --- /dev/null +++ b/docs/models/operations/getimagerequest.md @@ -0,0 +1,25 @@ +# GetImageRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `top_left` | *Optional[str]* | :heavy_minus_sign: | The base color (hex) for the top left quadrant. | 3f280a | +| `top_right` | *Optional[str]* | :heavy_minus_sign: | The base color (hex) for the top right quadrant. | 6b4713 | +| `bottom_right` | *Optional[str]* | :heavy_minus_sign: | The base color (hex) for the bottom right quadrant. | 0f2a43 | +| `bottom_left` | *Optional[str]* | :heavy_minus_sign: | The base color (hex) for the bottom left quadrant. | 1c425d | +| `width` | *Optional[int]* | :heavy_minus_sign: | Width in pixels for the image. | 1920 | +| `height` | *Optional[int]* | :heavy_minus_sign: | Height in pixels for the image. | 1080 | +| `noise` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether to add noise to the ouput image. Noise can reduce color banding with the gradients. Image sizes with noise will be larger. | 1 | \ No newline at end of file diff --git a/docs/models/operations/getimageresponse.md b/docs/models/operations/getimageresponse.md new file mode 100644 index 0000000..55df066 --- /dev/null +++ b/docs/models/operations/getimageresponse.md @@ -0,0 +1,11 @@ +# GetImageResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getitemartworkglobals.md b/docs/models/operations/getitemartworkglobals.md new file mode 100644 index 0000000..edc9132 --- /dev/null +++ b/docs/models/operations/getitemartworkglobals.md @@ -0,0 +1,18 @@ +# GetItemArtworkGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getitemartworkpathparamelement.md b/docs/models/operations/getitemartworkpathparamelement.md new file mode 100644 index 0000000..a3cd58d --- /dev/null +++ b/docs/models/operations/getitemartworkpathparamelement.md @@ -0,0 +1,13 @@ +# GetItemArtworkPathParamElement + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `THUMB` | thumb | +| `ART` | art | +| `CLEAR_LOGO` | clearLogo | +| `BANNER` | banner | +| `POSTER` | poster | +| `THEME` | theme | \ No newline at end of file diff --git a/docs/models/operations/getitemartworkrequest.md b/docs/models/operations/getitemartworkrequest.md new file mode 100644 index 0000000..090cd64 --- /dev/null +++ b/docs/models/operations/getitemartworkrequest.md @@ -0,0 +1,21 @@ +# GetItemArtworkRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `element` | [operations.GetItemArtworkPathParamElement](../../models/operations/getitemartworkpathparamelement.md) | :heavy_check_mark: | N/A | | +| `timestamp` | *int* | :heavy_check_mark: | A timestamp on the element used for cache management in the client | | \ No newline at end of file diff --git a/docs/models/operations/getitemartworkresponse.md b/docs/models/operations/getitemartworkresponse.md new file mode 100644 index 0000000..d742123 --- /dev/null +++ b/docs/models/operations/getitemartworkresponse.md @@ -0,0 +1,12 @@ +# GetItemArtworkResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `two_hundred_audio_mpeg3_response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | OK | +| `two_hundred_image_jpeg_response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getitemdecisionglobals.md b/docs/models/operations/getitemdecisionglobals.md new file mode 100644 index 0000000..84b73c7 --- /dev/null +++ b/docs/models/operations/getitemdecisionglobals.md @@ -0,0 +1,18 @@ +# GetItemDecisionGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getitemdecisionrequest.md b/docs/models/operations/getitemdecisionrequest.md new file mode 100644 index 0000000..709e8e4 --- /dev/null +++ b/docs/models/operations/getitemdecisionrequest.md @@ -0,0 +1,20 @@ +# GetItemDecisionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `queue_id` | *int* | :heavy_check_mark: | The queue id | | +| `item_id` | *int* | :heavy_check_mark: | The item ids | 32 | \ No newline at end of file diff --git a/docs/models/operations/getitemdecisionresponse.md b/docs/models/operations/getitemdecisionresponse.md new file mode 100644 index 0000000..e344e4c --- /dev/null +++ b/docs/models/operations/getitemdecisionresponse.md @@ -0,0 +1,11 @@ +# GetItemDecisionResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_decision` | [Optional[components.MediaContainerWithDecision]](../../models/components/mediacontainerwithdecision.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getitemtreeglobals.md b/docs/models/operations/getitemtreeglobals.md new file mode 100644 index 0000000..b02ee12 --- /dev/null +++ b/docs/models/operations/getitemtreeglobals.md @@ -0,0 +1,18 @@ +# GetItemTreeGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getitemtreerequest.md b/docs/models/operations/getitemtreerequest.md new file mode 100644 index 0000000..1e2bbd5 --- /dev/null +++ b/docs/models/operations/getitemtreerequest.md @@ -0,0 +1,19 @@ +# GetItemTreeRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getitemtreeresponse.md b/docs/models/operations/getitemtreeresponse.md new file mode 100644 index 0000000..45b8ace --- /dev/null +++ b/docs/models/operations/getitemtreeresponse.md @@ -0,0 +1,11 @@ +# GetItemTreeResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_nested_metadata` | [Optional[components.MediaContainerWithNestedMetadata]](../../models/components/mediacontainerwithnestedmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailsdirectory.md b/docs/models/operations/getlibrarydetailsdirectory.md deleted file mode 100644 index 054cfc5..0000000 --- a/docs/models/operations/getlibrarydetailsdirectory.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryDetailsDirectory - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | search?type=1 | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Search... | -| `secondary` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `prompt` | *Optional[str]* | :heavy_minus_sign: | N/A | Search Movies | -| `search` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailsfield.md b/docs/models/operations/getlibrarydetailsfield.md deleted file mode 100644 index e1d3db8..0000000 --- a/docs/models/operations/getlibrarydetailsfield.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryDetailsField - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | label | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Label | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | tag | -| `sub_type` | *Optional[str]* | :heavy_minus_sign: | N/A | bitrate | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailsfieldtype.md b/docs/models/operations/getlibrarydetailsfieldtype.md deleted file mode 100644 index deeb29a..0000000 --- a/docs/models/operations/getlibrarydetailsfieldtype.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibraryDetailsFieldType - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | resolution | -| `operator` | List[[operations.GetLibraryDetailsOperator](../../models/operations/getlibrarydetailsoperator.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailsfilter.md b/docs/models/operations/getlibrarydetailsfilter.md deleted file mode 100644 index ddc0629..0000000 --- a/docs/models/operations/getlibrarydetailsfilter.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryDetailsFilter - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | -| `filter_` | *Optional[str]* | :heavy_minus_sign: | N/A | label | -| `filter_type` | *Optional[str]* | :heavy_minus_sign: | N/A | string | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/1/label | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Labels | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | filter | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailsglobals.md b/docs/models/operations/getlibrarydetailsglobals.md new file mode 100644 index 0000000..070e083 --- /dev/null +++ b/docs/models/operations/getlibrarydetailsglobals.md @@ -0,0 +1,18 @@ +# GetLibraryDetailsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailsmediacontainer.md b/docs/models/operations/getlibrarydetailsmediacontainer.md index ea93a95..28cfbd0 100644 --- a/docs/models/operations/getlibrarydetailsmediacontainer.md +++ b/docs/models/operations/getlibrarydetailsmediacontainer.md @@ -3,20 +3,19 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 29 | -| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /:/resources/movie-fanart.jpg | -| `content` | *Optional[str]* | :heavy_minus_sign: | N/A | secondary | -| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `media_tag_prefix` | *Optional[str]* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | -| `media_tag_version` | *Optional[int]* | :heavy_minus_sign: | N/A | 1701731894 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /:/resources/movie.png | -| `title1` | *Optional[str]* | :heavy_minus_sign: | N/A | Movies | -| `view_group` | *Optional[str]* | :heavy_minus_sign: | N/A | secondary | -| `view_mode` | *Optional[int]* | :heavy_minus_sign: | N/A | 65592 | -| `directory` | List[[operations.GetLibraryDetailsDirectory](../../models/operations/getlibrarydetailsdirectory.md)] | :heavy_minus_sign: | N/A | | -| `type` | List[[operations.GetLibraryDetailsType](../../models/operations/getlibrarydetailstype.md)] | :heavy_minus_sign: | N/A | | -| `field_type` | List[[operations.GetLibraryDetailsFieldType](../../models/operations/getlibrarydetailsfieldtype.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `content` | *Optional[str]* | :heavy_minus_sign: | The flavors of directory found here:
- Primary: (e.g. all, On Deck) These are still used in some clients to provide "shortcuts" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users.
- Secondary: These are marked with `"secondary": true` and were used by old clients to provide nested menus allowing for primative (but structured) navigation.
- Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `"search": true` which used to be used to allow clients to build search dialogs on the fly. | +| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `directory` | List[[components.Metadata](../../models/components/metadata.md)] | :heavy_minus_sign: | N/A | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `media_tag_prefix` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `media_tag_version` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `sort_asc` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `title1` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `view_group` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `view_mode` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailsoperator.md b/docs/models/operations/getlibrarydetailsoperator.md deleted file mode 100644 index 38476e7..0000000 --- a/docs/models/operations/getlibrarydetailsoperator.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibraryDetailsOperator - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | = | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | is | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailsrequest.md b/docs/models/operations/getlibrarydetailsrequest.md index a15e8b6..0fb8e69 100644 --- a/docs/models/operations/getlibrarydetailsrequest.md +++ b/docs/models/operations/getlibrarydetailsrequest.md @@ -3,7 +3,18 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `include_details` | [Optional[operations.IncludeDetails]](../../models/operations/includedetails.md) | :heavy_minus_sign: | Whether or not to include details for a section (types, filters, and sorts).
Only exists for backwards compatibility, media providers other than the server libraries have it on always.
| | -| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *str* | :heavy_check_mark: | The section identifier | | +| `include_details` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether or not to include details for a section (types, filters, and sorts). Only exists for backwards compatibility, media providers other than the server libraries have it on always. | 1 | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailsresponse.md b/docs/models/operations/getlibrarydetailsresponse.md index e2b67ed..37d1de4 100644 --- a/docs/models/operations/getlibrarydetailsresponse.md +++ b/docs/models/operations/getlibrarydetailsresponse.md @@ -8,4 +8,4 @@ | `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | | `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | | `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetLibraryDetailsResponseBody]](../../models/operations/getlibrarydetailsresponsebody.md) | :heavy_minus_sign: | The details of the library | \ No newline at end of file +| `object` | [Optional[operations.GetLibraryDetailsResponseBody]](../../models/operations/getlibrarydetailsresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailsresponsebody.md b/docs/models/operations/getlibrarydetailsresponsebody.md index 1fb01f6..ae57643 100644 --- a/docs/models/operations/getlibrarydetailsresponsebody.md +++ b/docs/models/operations/getlibrarydetailsresponsebody.md @@ -1,6 +1,6 @@ # GetLibraryDetailsResponseBody -The details of the library +OK ## Fields diff --git a/docs/models/operations/getlibrarydetailssort.md b/docs/models/operations/getlibrarydetailssort.md deleted file mode 100644 index 08b9ad1..0000000 --- a/docs/models/operations/getlibrarydetailssort.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetLibraryDetailsSort - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `default` | *Optional[str]* | :heavy_minus_sign: | N/A | asc | -| `default_direction` | *Optional[str]* | :heavy_minus_sign: | N/A | desc | -| `desc_key` | *Optional[str]* | :heavy_minus_sign: | N/A | random:desc | -| `first_character_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/1/firstCharacter | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | random | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Randomly | \ No newline at end of file diff --git a/docs/models/operations/getlibrarydetailstype.md b/docs/models/operations/getlibrarydetailstype.md deleted file mode 100644 index cb676c2..0000000 --- a/docs/models/operations/getlibrarydetailstype.md +++ /dev/null @@ -1,14 +0,0 @@ -# GetLibraryDetailsType - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/1/all?type=1 | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | movie | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Movies | -| `active` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `filter_` | List[[operations.GetLibraryDetailsFilter](../../models/operations/getlibrarydetailsfilter.md)] | :heavy_minus_sign: | N/A | | -| `sort` | List[[operations.GetLibraryDetailsSort](../../models/operations/getlibrarydetailssort.md)] | :heavy_minus_sign: | N/A | | -| `field` | List[[operations.GetLibraryDetailsField](../../models/operations/getlibrarydetailsfield.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibraryhubscountry.md b/docs/models/operations/getlibraryhubscountry.md deleted file mode 100644 index 27b9301..0000000 --- a/docs/models/operations/getlibraryhubscountry.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibraryHubsCountry - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | United States of America | \ No newline at end of file diff --git a/docs/models/operations/getlibraryhubsdirector.md b/docs/models/operations/getlibraryhubsdirector.md deleted file mode 100644 index e838d96..0000000 --- a/docs/models/operations/getlibraryhubsdirector.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibraryHubsDirector - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Nathan Greno | \ No newline at end of file diff --git a/docs/models/operations/getlibraryhubsgenre.md b/docs/models/operations/getlibraryhubsgenre.md deleted file mode 100644 index 8bf03e9..0000000 --- a/docs/models/operations/getlibraryhubsgenre.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibraryHubsGenre - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Animation | \ No newline at end of file diff --git a/docs/models/operations/getlibraryhubshub.md b/docs/models/operations/getlibraryhubshub.md deleted file mode 100644 index 6cc296a..0000000 --- a/docs/models/operations/getlibraryhubshub.md +++ /dev/null @@ -1,19 +0,0 @@ -# GetLibraryHubsHub - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/1/all?sort=lastViewedAt:desc&unwatched=0&viewOffset=0 | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Recently Played Movies | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | movie | -| `hub_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | movie.recentlyviewed.1 | -| `context` | *Optional[str]* | :heavy_minus_sign: | N/A | hub.movie.recentlyviewed | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 6 | -| `more` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `style` | *Optional[str]* | :heavy_minus_sign: | N/A | shelf | -| `hub_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66485,66098,57249,11449,5858,14944 | -| `metadata` | List[[operations.GetLibraryHubsMetadata](../../models/operations/getlibraryhubsmetadata.md)] | :heavy_minus_sign: | N/A | | -| `promoted` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `random` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/models/operations/getlibraryhubsmedia.md b/docs/models/operations/getlibraryhubsmedia.md deleted file mode 100644 index c63694c..0000000 --- a/docs/models/operations/getlibraryhubsmedia.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetLibraryHubsMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 38247 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 6017237 | -| `bitrate` | *Optional[int]* | :heavy_minus_sign: | N/A | 2051 | -| `width` | *Optional[int]* | :heavy_minus_sign: | N/A | 1920 | -| `height` | *Optional[int]* | :heavy_minus_sign: | N/A | 1080 | -| `aspect_ratio` | *Optional[float]* | :heavy_minus_sign: | N/A | 1.78 | -| `audio_channels` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | -| `audio_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | aac | -| `video_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | h264 | -| `video_resolution` | *Optional[str]* | :heavy_minus_sign: | N/A | 1080 | -| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mp4 | -| `video_frame_rate` | *Optional[str]* | :heavy_minus_sign: | N/A | 24p | -| `optimized_for_streaming` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | lc | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | high | -| `part` | List[[operations.GetLibraryHubsPart](../../models/operations/getlibraryhubspart.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibraryhubsmediacontainer.md b/docs/models/operations/getlibraryhubsmediacontainer.md deleted file mode 100644 index 41b178a..0000000 --- a/docs/models/operations/getlibraryhubsmediacontainer.md +++ /dev/null @@ -1,14 +0,0 @@ -# GetLibraryHubsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 7 | -| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Movies | -| `library_section_uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | 322a231a-b7f7-49f5-920f-14c61199cd30 | -| `hub` | List[[operations.GetLibraryHubsHub](../../models/operations/getlibraryhubshub.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibraryhubsmetadata.md b/docs/models/operations/getlibraryhubsmetadata.md deleted file mode 100644 index b94a23a..0000000 --- a/docs/models/operations/getlibraryhubsmetadata.md +++ /dev/null @@ -1,41 +0,0 @@ -# GetLibraryHubsMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 14944 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/14944 | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://movie/5d77686eeb5d26001f1eb339 | -| `studio` | *Optional[str]* | :heavy_minus_sign: | N/A | Walt Disney Animation Studios | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | movie | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Tangled | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Movies | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `library_section_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/1 | -| `content_rating` | *Optional[str]* | :heavy_minus_sign: | N/A | PG | -| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | The magically long-haired Rapunzel has spent her entire life in a tower, but now that a runaway thief has stumbled upon her, she is about to discover the world for the first time, and who she really is. | -| `rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 8.9 | -| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 8.7 | -| `view_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1704936047 | -| `year` | *Optional[int]* | :heavy_minus_sign: | N/A | 2010 | -| `tagline` | *Optional[str]* | :heavy_minus_sign: | N/A | They're taking adventure to new lengths. | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/14944/thumb/1705739847 | -| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/14944/art/1705739847 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 6017237 | -| `originally_available_at` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | N/A | 2010-11-24 00:00:00 +0000 UTC | -| `added_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1589412494 | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705739847 | -| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | -| `primary_extra_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/14952 | -| `rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.ripe | -| `media` | List[[operations.GetLibraryHubsMedia](../../models/operations/getlibraryhubsmedia.md)] | :heavy_minus_sign: | N/A | | -| `genre` | List[[operations.GetLibraryHubsGenre](../../models/operations/getlibraryhubsgenre.md)] | :heavy_minus_sign: | N/A | | -| `country` | List[[operations.GetLibraryHubsCountry](../../models/operations/getlibraryhubscountry.md)] | :heavy_minus_sign: | N/A | | -| `director` | List[[operations.GetLibraryHubsDirector](../../models/operations/getlibraryhubsdirector.md)] | :heavy_minus_sign: | N/A | | -| `role` | List[[operations.GetLibraryHubsRole](../../models/operations/getlibraryhubsrole.md)] | :heavy_minus_sign: | N/A | | -| `writer` | List[[operations.GetLibraryHubsWriter](../../models/operations/getlibraryhubswriter.md)] | :heavy_minus_sign: | N/A | | -| `skip_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `chapter_source` | *Optional[str]* | :heavy_minus_sign: | N/A | media | \ No newline at end of file diff --git a/docs/models/operations/getlibraryhubspart.md b/docs/models/operations/getlibraryhubspart.md deleted file mode 100644 index 25d64d0..0000000 --- a/docs/models/operations/getlibraryhubspart.md +++ /dev/null @@ -1,17 +0,0 @@ -# GetLibraryHubsPart - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | ------------------------------------------------------ | -| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 38247 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/parts/38247/1589412494/file.mp4 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 6017237 | -| `file` | *Optional[str]* | :heavy_minus_sign: | N/A | /movies/Tangled (2010)/Tangled (2010) Bluray-1080p.mp4 | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 1545647447 | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | lc | -| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mp4 | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `optimized_for_streaming` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | high | \ No newline at end of file diff --git a/docs/models/operations/getlibraryhubsrequest.md b/docs/models/operations/getlibraryhubsrequest.md deleted file mode 100644 index 217d09f..0000000 --- a/docs/models/operations/getlibraryhubsrequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryHubsRequest - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| `section_id` | *float* | :heavy_check_mark: | the Id of the library to query | -| `count` | *Optional[float]* | :heavy_minus_sign: | The number of items to return with each hub. | -| `only_transient` | [Optional[operations.QueryParamOnlyTransient]](../../models/operations/queryparamonlytransient.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). | \ No newline at end of file diff --git a/docs/models/operations/getlibraryhubsresponse.md b/docs/models/operations/getlibraryhubsresponse.md deleted file mode 100644 index 5ac6667..0000000 --- a/docs/models/operations/getlibraryhubsresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryHubsResponse - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetLibraryHubsResponseBody]](../../models/operations/getlibraryhubsresponsebody.md) | :heavy_minus_sign: | The hubs specific to the library | \ No newline at end of file diff --git a/docs/models/operations/getlibraryhubsresponsebody.md b/docs/models/operations/getlibraryhubsresponsebody.md deleted file mode 100644 index edb146d..0000000 --- a/docs/models/operations/getlibraryhubsresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryHubsResponseBody - -The hubs specific to the library - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `media_container` | [Optional[operations.GetLibraryHubsMediaContainer]](../../models/operations/getlibraryhubsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getlibraryhubsrole.md b/docs/models/operations/getlibraryhubsrole.md deleted file mode 100644 index d9bc7a9..0000000 --- a/docs/models/operations/getlibraryhubsrole.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibraryHubsRole - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Donna Murphy | \ No newline at end of file diff --git a/docs/models/operations/getlibraryhubswriter.md b/docs/models/operations/getlibraryhubswriter.md deleted file mode 100644 index f8e5b4d..0000000 --- a/docs/models/operations/getlibraryhubswriter.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibraryHubsWriter - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Wilhelm Grimm | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsactivedirection.md b/docs/models/operations/getlibraryitemsactivedirection.md deleted file mode 100644 index 6ced7e8..0000000 --- a/docs/models/operations/getlibraryitemsactivedirection.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryItemsActiveDirection - -The direction of the sort. Can be either `asc` or `desc`. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `ASCENDING` | asc | -| `DESCENDING` | desc | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemscollection.md b/docs/models/operations/getlibraryitemscollection.md deleted file mode 100644 index f0da4ac..0000000 --- a/docs/models/operations/getlibraryitemscollection.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibraryItemsCollection - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `tag` | *str* | :heavy_check_mark: | The user-made collection this media item belongs to | My Awesome Collection | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemscountry.md b/docs/models/operations/getlibraryitemscountry.md deleted file mode 100644 index d5b6eea..0000000 --- a/docs/models/operations/getlibraryitemscountry.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibraryItemsCountry - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique identifier for the country.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | -| `tag` | *str* | :heavy_check_mark: | The country of origin of this media item | United States of America | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsdefaultdirection.md b/docs/models/operations/getlibraryitemsdefaultdirection.md deleted file mode 100644 index b1bdea4..0000000 --- a/docs/models/operations/getlibraryitemsdefaultdirection.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryItemsDefaultDirection - -The direction of the sort. Can be either `asc` or `desc`. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `ASCENDING` | asc | -| `DESCENDING` | desc | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsdirector.md b/docs/models/operations/getlibraryitemsdirector.md deleted file mode 100644 index ad3cf38..0000000 --- a/docs/models/operations/getlibraryitemsdirector.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsDirector - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique identifier for the director. | 126522 | -| `tag` | *str* | :heavy_check_mark: | The role of Director | Danny Boyle | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the director. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsfield.md b/docs/models/operations/getlibraryitemsfield.md deleted file mode 100644 index 676dfd9..0000000 --- a/docs/models/operations/getlibraryitemsfield.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryItemsField - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `key` | *str* | :heavy_check_mark: | N/A | show.title | -| `title` | *str* | :heavy_check_mark: | N/A | Show Title | -| `type` | *str* | :heavy_check_mark: | N/A | string | -| `sub_type` | *Optional[str]* | :heavy_minus_sign: | N/A | rating | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsfieldtype.md b/docs/models/operations/getlibraryitemsfieldtype.md deleted file mode 100644 index b35cf54..0000000 --- a/docs/models/operations/getlibraryitemsfieldtype.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibraryItemsFieldType - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `type` | *str* | :heavy_check_mark: | N/A | tag | -| `operator` | List[[operations.GetLibraryItemsOperator](../../models/operations/getlibraryitemsoperator.md)] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsfilter.md b/docs/models/operations/getlibraryitemsfilter.md deleted file mode 100644 index 69a0d76..0000000 --- a/docs/models/operations/getlibraryitemsfilter.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryItemsFilter - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -| `filter_` | *str* | :heavy_check_mark: | N/A | genre | -| `filter_type` | *str* | :heavy_check_mark: | N/A | string | -| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | -| `title` | *str* | :heavy_check_mark: | N/A | Genre | -| `type` | *str* | :heavy_check_mark: | N/A | filter | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsgenre.md b/docs/models/operations/getlibraryitemsgenre.md deleted file mode 100644 index 2ec40ba..0000000 --- a/docs/models/operations/getlibraryitemsgenre.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibraryItemsGenre - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique identifier for the genre.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | -| `tag` | *str* | :heavy_check_mark: | The genre name of this media-item
| Crime | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsglobals.md b/docs/models/operations/getlibraryitemsglobals.md new file mode 100644 index 0000000..f7a95fc --- /dev/null +++ b/docs/models/operations/getlibraryitemsglobals.md @@ -0,0 +1,18 @@ +# GetLibraryItemsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsguids.md b/docs/models/operations/getlibraryitemsguids.md deleted file mode 100644 index cb1de42..0000000 --- a/docs/models/operations/getlibraryitemsguids.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibraryItemsGuids - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemshasthumbnail.md b/docs/models/operations/getlibraryitemshasthumbnail.md deleted file mode 100644 index bb7b1de..0000000 --- a/docs/models/operations/getlibraryitemshasthumbnail.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryItemsHasThumbnail - -Indicates if the part has a thumbnail. - - - -## Values - -| Name | Value | -| ------- | ------- | -| `FALSE` | 0 | -| `TRUE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsimage.md b/docs/models/operations/getlibraryitemsimage.md deleted file mode 100644 index f3f36dc..0000000 --- a/docs/models/operations/getlibraryitemsimage.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsImage - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `alt` | *str* | :heavy_check_mark: | N/A | Episode 1 | -| `type` | [operations.GetLibraryItemsLibraryResponseType](../../models/operations/getlibraryitemslibraryresponsetype.md) | :heavy_check_mark: | N/A | background | -| `url` | *str* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemslibraryoptimizedforstreaming.md b/docs/models/operations/getlibraryitemslibraryoptimizedforstreaming.md deleted file mode 100644 index dc09445..0000000 --- a/docs/models/operations/getlibraryitemslibraryoptimizedforstreaming.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetLibraryItemsLibraryOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - - -## Supported Types - -### `operations.GetLibraryItemsOptimizedForStreaming1` - -```python -value: operations.GetLibraryItemsOptimizedForStreaming1 = /* values here */ -``` - -### `bool` - -```python -value: bool = /* values here */ -``` - diff --git a/docs/models/operations/getlibraryitemslibraryresponsetype.md b/docs/models/operations/getlibraryitemslibraryresponsetype.md deleted file mode 100644 index 1573fa0..0000000 --- a/docs/models/operations/getlibraryitemslibraryresponsetype.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryItemsLibraryResponseType - - -## Values - -| Name | Value | -| -------------- | -------------- | -| `COVER_POSTER` | coverPoster | -| `BACKGROUND` | background | -| `SNAPSHOT` | snapshot | -| `CLEAR_LOGO` | clearLogo | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemslibrarytype.md b/docs/models/operations/getlibraryitemslibrarytype.md deleted file mode 100644 index 685d8c0..0000000 --- a/docs/models/operations/getlibraryitemslibrarytype.md +++ /dev/null @@ -1,14 +0,0 @@ -# GetLibraryItemsLibraryType - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | -| `type` | *str* | :heavy_check_mark: | N/A | show | -| `title` | *str* | :heavy_check_mark: | N/A | TV Shows | -| `active` | *bool* | :heavy_check_mark: | N/A | false | -| `filter_` | List[[operations.GetLibraryItemsFilter](../../models/operations/getlibraryitemsfilter.md)] | :heavy_minus_sign: | N/A | | -| `sort` | List[[operations.GetLibraryItemsSort](../../models/operations/getlibraryitemssort.md)] | :heavy_minus_sign: | N/A | | -| `field` | List[[operations.GetLibraryItemsField](../../models/operations/getlibraryitemsfield.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemslocation.md b/docs/models/operations/getlibraryitemslocation.md deleted file mode 100644 index 9aa12e5..0000000 --- a/docs/models/operations/getlibraryitemslocation.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsLocation - -The folder path for the media item. - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | -| `path` | *str* | :heavy_check_mark: | N/A | /TV Shows/Clarkson's Farm | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsmedia.md b/docs/models/operations/getlibraryitemsmedia.md deleted file mode 100644 index 2526c05..0000000 --- a/docs/models/operations/getlibraryitemsmedia.md +++ /dev/null @@ -1,26 +0,0 @@ -# GetLibraryItemsMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique media identifier. | 387322 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | -| `bitrate` | *Optional[int]* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | -| `width` | *Optional[int]* | :heavy_minus_sign: | Video width in pixels. | 3840 | -| `height` | *Optional[int]* | :heavy_minus_sign: | Video height in pixels. | 1602 | -| `aspect_ratio` | *Optional[float]* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | -| `audio_channels` | *Optional[int]* | :heavy_minus_sign: | Number of audio channels. | 6 | -| `display_offset` | *Optional[int]* | :heavy_minus_sign: | N/A | 50 | -| `audio_codec` | *Optional[str]* | :heavy_minus_sign: | Audio codec used. | aac | -| `video_codec` | *Optional[str]* | :heavy_minus_sign: | Video codec used. | hevc | -| `video_resolution` | *Optional[str]* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | -| `container` | *Optional[str]* | :heavy_minus_sign: | Container format of the media. | mp4 | -| `video_frame_rate` | *Optional[str]* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | -| `has_voice_activity` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `optimized_for_streaming` | [Optional[operations.GetLibraryItemsOptimizedForStreaming]](../../models/operations/getlibraryitemsoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether the media has 64-bit offsets.
This is relevant for media files that may require larger offsets than what 32-bit integers can provide.
| false | -| `part` | List[[operations.GetLibraryItemsPart](../../models/operations/getlibraryitemspart.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsmediacontainer.md b/docs/models/operations/getlibraryitemsmediacontainer.md deleted file mode 100644 index 02a67b6..0000000 --- a/docs/models/operations/getlibraryitemsmediacontainer.md +++ /dev/null @@ -1,28 +0,0 @@ -# GetLibraryItemsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `total_size` | *int* | :heavy_check_mark: | Total number of media items in the library. | 50 | -| `offset` | *int* | :heavy_check_mark: | Offset value for pagination. | 0 | -| `content` | *str* | :heavy_check_mark: | The content type or mode. | secondary | -| `allow_sync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `nocache` | *bool* | :heavy_check_mark: | Specifies whether caching is disabled. | true | -| `art` | *str* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | -| `identifier` | *str* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | The unique identifier for the library section. | 2 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | The title of the library section. | TV Series | -| `library_section_uuid` | *Optional[str]* | :heavy_minus_sign: | The universally unique identifier for the library section. | e69655a2-ef48-4aba-bb19-0cc34d1e7d36 | -| `media_tag_prefix` | *str* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `media_tag_version` | *int* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `thumb` | *str* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | -| `title1` | *str* | :heavy_check_mark: | The primary title of the media container. | TV Series | -| `title2` | *str* | :heavy_check_mark: | The secondary title of the media container. | By Starring Actor | -| `view_group` | *str* | :heavy_check_mark: | Identifier for the view group layout. | secondary | -| `view_mode` | *Optional[str]* | :heavy_minus_sign: | Identifier for the view mode. | 131131 | -| `mixed_parents` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the media container has mixed parents. | true | -| `metadata` | List[[operations.GetLibraryItemsMetadata](../../models/operations/getlibraryitemsmetadata.md)] | :heavy_check_mark: | An array of metadata items. | | -| `meta` | [Optional[operations.GetLibraryItemsMeta]](../../models/operations/getlibraryitemsmeta.md) | :heavy_minus_sign: | The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
| | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsmeta.md b/docs/models/operations/getlibraryitemsmeta.md deleted file mode 100644 index af3ef07..0000000 --- a/docs/models/operations/getlibraryitemsmeta.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryItemsMeta - -The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. - - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `type` | List[[operations.GetLibraryItemsLibraryType](../../models/operations/getlibraryitemslibrarytype.md)] | :heavy_minus_sign: | N/A | -| `field_type` | List[[operations.GetLibraryItemsFieldType](../../models/operations/getlibraryitemsfieldtype.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsmetadata.md b/docs/models/operations/getlibraryitemsmetadata.md deleted file mode 100644 index 915848b..0000000 --- a/docs/models/operations/getlibraryitemsmetadata.md +++ /dev/null @@ -1,88 +0,0 @@ -# GetLibraryItemsMetadata - -Unknown - - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `rating_key` | *str* | :heavy_check_mark: | The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. | 58683 | -| `key` | *str* | :heavy_check_mark: | The unique key for the media item. | /library/metadata/58683 | -| `guid` | *str* | :heavy_check_mark: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | -| `slug` | *str* | :heavy_check_mark: | A URL‐friendly version of the media title. | 4-for-texas | -| `studio` | *Optional[str]* | :heavy_minus_sign: | The studio that produced the media item. | 20th Century Studios | -| `type` | [operations.GetLibraryItemsType](../../models/operations/getlibraryitemstype.md) | :heavy_check_mark: | N/A | movie | -| `title` | *str* | :heavy_check_mark: | The title of the media item. | Avatar: The Way of Water | -| `banner` | *str* | :heavy_check_mark: | The banner image URL for the media item. | /library/metadata/58683/banner/1703239236 | -| `title_sort` | *str* | :heavy_check_mark: | The sort title used for ordering media items. | Whale | -| `content_rating` | *Optional[str]* | :heavy_minus_sign: | The content rating for the media item. | PG-13 | -| `summary` | *str* | :heavy_check_mark: | A synopsis of the media item. | Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.
Once a familiar threat returns to finish what was previously started, Jake must
work with Neytiri and the army of the Na'vi race to protect their home.
| -| `rating` | *float* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | -| `audience_rating` | *float* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | -| `year` | *Optional[int]* | :heavy_minus_sign: | The release year of the media item. | 2022 | -| `tagline` | *str* | :heavy_check_mark: | A brief tagline for the media item. | Return to Pandora. | -| `thumb` | *str* | :heavy_check_mark: | The thumbnail image URL for the media item. | /library/metadata/58683/thumb/1703239236 | -| `art` | *str* | :heavy_check_mark: | The art image URL for the media item. | /library/metadata/58683/art/1703239236 | -| `theme` | *str* | :heavy_check_mark: | The theme URL for the media item. | /library/metadata/1/theme/1705636920 | -| `index` | *int* | :heavy_check_mark: | The index position of the media item. | 1 | -| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | The number of leaf items (end nodes) under this media item. | 14 | -| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | -| `child_count` | *int* | :heavy_check_mark: | The number of child items associated with this media item. | 1 | -| `season_count` | *int* | :heavy_check_mark: | The total number of seasons (for TV shows). | 2022 | -| `duration` | *int* | :heavy_check_mark: | The duration of the media item in milliseconds. | 11558112 | -| `originally_available_at` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | The original release date of the media item. | 2022-12-14 | -| `added_at` | *int* | :heavy_check_mark: | N/A | 1556281940 | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | -| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | The URL for the audience rating image. | rottentomatoes://image.rating.upright | -| `chapter_source` | *Optional[str]* | :heavy_minus_sign: | The source from which chapter data is derived. | media | -| `primary_extra_key` | *Optional[str]* | :heavy_minus_sign: | The primary extra key associated with this media item. | /library/metadata/58684 | -| `original_title` | *Optional[str]* | :heavy_minus_sign: | The original title of the media item (if different). | 映画 ブラッククローバー 魔法帝の剣 | -| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the parent media item. | 66 | -| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the grandparent media item. | 66 | -| `parent_guid` | *Optional[str]* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `grandparent_guid` | *Optional[str]* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `grandparent_slug` | *Optional[str]* | :heavy_minus_sign: | The slug for the grandparent media item. | alice-in-borderland-2020 | -| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | The key of the grandparent media item. | /library/metadata/66 | -| `parent_key` | *Optional[str]* | :heavy_minus_sign: | The key of the parent media item. | /library/metadata/66 | -| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | The title of the grandparent media item. | Caprica | -| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail URL for the grandparent media item. | /library/metadata/66/thumb/1705716261 | -| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | The theme URL for the grandparent media item. | /library/metadata/66/theme/1705716261 | -| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | The art URL for the grandparent media item. | /library/metadata/66/art/1705716261 | -| `parent_title` | *Optional[str]* | :heavy_minus_sign: | The title of the parent media item. | Caprica | -| `parent_index` | *Optional[int]* | :heavy_minus_sign: | The index position of the parent media item. | 1 | -| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail URL for the parent media item. | /library/metadata/66/thumb/1705716261 | -| `rating_image` | *Optional[str]* | :heavy_minus_sign: | The URL for the rating image. | rottentomatoes://image.rating.ripe | -| `view_count` | *Optional[int]* | :heavy_minus_sign: | The number of times this media item has been viewed. | 1 | -| `view_offset` | *Optional[int]* | :heavy_minus_sign: | The current playback offset (in milliseconds). | 5222500 | -| `skip_count` | *Optional[int]* | :heavy_minus_sign: | The number of times this media item has been skipped. | 1 | -| `subtype` | *Optional[str]* | :heavy_minus_sign: | A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. | clip | -| `last_rated_at` | *Optional[int]* | :heavy_minus_sign: | The Unix timestamp representing the last time the item was rated. | 1721813113 | -| `created_at_accuracy` | *Optional[str]* | :heavy_minus_sign: | The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). | epoch,local | -| `created_at_tz_offset` | *Optional[str]* | :heavy_minus_sign: | The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. | 0 | -| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | -| `user_rating` | *Optional[float]* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | -| `image` | List[[operations.GetLibraryItemsImage](../../models/operations/getlibraryitemsimage.md)] | :heavy_minus_sign: | N/A | | -| `ultra_blur_colors` | [Optional[operations.GetLibraryItemsUltraBlurColors]](../../models/operations/getlibraryitemsultrablurcolors.md) | :heavy_minus_sign: | N/A | | -| `guids` | List[[operations.GetLibraryItemsGuids](../../models/operations/getlibraryitemsguids.md)] | :heavy_minus_sign: | N/A | | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | The identifier for the library section. | 1 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | The title of the library section. | Movies | -| `library_section_key` | *Optional[str]* | :heavy_minus_sign: | The key corresponding to the library section. | /library/sections/1 | -| `show_ordering` | [Optional[operations.ShowOrdering]](../../models/operations/showordering.md) | :heavy_minus_sign: | Setting that indicates the episode ordering for the show.
Options:
- None = Library default
- tmdbAiring = The Movie Database (Aired)
- aired = TheTVDB (Aired)
- dvd = TheTVDB (DVD)
- absolute = TheTVDB (Absolute)
| absolute | -| `flatten_seasons` | [Optional[operations.FlattenSeasons]](../../models/operations/flattenseasons.md) | :heavy_minus_sign: | Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
| 1 | -| `skip_children` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether child items should be skipped. | false | -| `media` | List[[operations.GetLibraryItemsMedia](../../models/operations/getlibraryitemsmedia.md)] | :heavy_minus_sign: | N/A | | -| `genre` | List[[operations.GetLibraryItemsGenre](../../models/operations/getlibraryitemsgenre.md)] | :heavy_minus_sign: | N/A | | -| `country` | List[[operations.GetLibraryItemsCountry](../../models/operations/getlibraryitemscountry.md)] | :heavy_minus_sign: | N/A | | -| `director` | List[[operations.GetLibraryItemsDirector](../../models/operations/getlibraryitemsdirector.md)] | :heavy_minus_sign: | N/A | | -| `writer` | List[[operations.GetLibraryItemsWriter](../../models/operations/getlibraryitemswriter.md)] | :heavy_minus_sign: | N/A | | -| `producer` | List[[operations.GetLibraryItemsProducer](../../models/operations/getlibraryitemsproducer.md)] | :heavy_minus_sign: | N/A | | -| `collection` | List[[operations.GetLibraryItemsCollection](../../models/operations/getlibraryitemscollection.md)] | :heavy_minus_sign: | N/A | | -| `role` | List[[operations.GetLibraryItemsRole](../../models/operations/getlibraryitemsrole.md)] | :heavy_minus_sign: | N/A | | -| `ratings` | List[[operations.Ratings](../../models/operations/ratings.md)] | :heavy_minus_sign: | N/A | | -| `similar` | List[[operations.GetLibraryItemsSimilar](../../models/operations/getlibraryitemssimilar.md)] | :heavy_minus_sign: | N/A | | -| `location` | List[[operations.GetLibraryItemsLocation](../../models/operations/getlibraryitemslocation.md)] | :heavy_minus_sign: | N/A | | -| `chapter` | List[[operations.Chapter](../../models/operations/chapter.md)] | :heavy_minus_sign: | N/A | | -| `marker` | List[[operations.Marker](../../models/operations/marker.md)] | :heavy_minus_sign: | N/A | | -| `extras` | [Optional[operations.Extras]](../../models/operations/extras.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsoperator.md b/docs/models/operations/getlibraryitemsoperator.md deleted file mode 100644 index cca846a..0000000 --- a/docs/models/operations/getlibraryitemsoperator.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibraryItemsOperator - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `key` | *str* | :heavy_check_mark: | N/A | = | -| `title` | *str* | :heavy_check_mark: | N/A | is | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsoptimizedforstreaming.md b/docs/models/operations/getlibraryitemsoptimizedforstreaming.md deleted file mode 100644 index d4ef315..0000000 --- a/docs/models/operations/getlibraryitemsoptimizedforstreaming.md +++ /dev/null @@ -1,19 +0,0 @@ -# GetLibraryItemsOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - -## Supported Types - -### `operations.OptimizedForStreaming1` - -```python -value: operations.OptimizedForStreaming1 = /* values here */ -``` - -### `bool` - -```python -value: bool = /* values here */ -``` - diff --git a/docs/models/operations/getlibraryitemsoptimizedforstreaming1.md b/docs/models/operations/getlibraryitemsoptimizedforstreaming1.md deleted file mode 100644 index 5389050..0000000 --- a/docs/models/operations/getlibraryitemsoptimizedforstreaming1.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibraryItemsOptimizedForStreaming1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemspart.md b/docs/models/operations/getlibraryitemspart.md deleted file mode 100644 index 078d726..0000000 --- a/docs/models/operations/getlibraryitemspart.md +++ /dev/null @@ -1,22 +0,0 @@ -# GetLibraryItemsPart - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | -| `accessible` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the part is accessible. | true | -| `exists` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the part exists. | true | -| `id` | *int* | :heavy_check_mark: | Unique part identifier. | 418385 | -| `key` | *Optional[str]* | :heavy_minus_sign: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | -| `indexes` | *Optional[str]* | :heavy_minus_sign: | N/A | sd | -| `duration` | *Optional[int]* | :heavy_minus_sign: | Duration of the part in milliseconds. | 9610350 | -| `file` | *Optional[str]* | :heavy_minus_sign: | File path for the part. | /mnt/Movies_1/W/Wicked (2024).mkv | -| `size` | *Optional[int]* | :heavy_minus_sign: | File size in bytes. | 30649952104 | -| `packet_length` | *Optional[int]* | :heavy_minus_sign: | N/A | 188 | -| `container` | *Optional[str]* | :heavy_minus_sign: | Container format of the part. | mkv | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | Video profile for the part. | main 10 | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `optimized_for_streaming` | [Optional[operations.GetLibraryItemsLibraryOptimizedForStreaming]](../../models/operations/getlibraryitemslibraryoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true
| | -| `has_thumbnail` | [Optional[operations.GetLibraryItemsHasThumbnail]](../../models/operations/getlibraryitemshasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsproducer.md b/docs/models/operations/getlibraryitemsproducer.md deleted file mode 100644 index ff92f0a..0000000 --- a/docs/models/operations/getlibraryitemsproducer.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetLibraryItemsProducer - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique role identifier. | 109501 | -| `filter_` | *str* | :heavy_check_mark: | The filter string for the role. | actor=109501 | -| `tag` | *str* | :heavy_check_mark: | The actor's name. | Bob Odenkirk | -| `tag_key` | *str* | :heavy_check_mark: | A key associated with the actor tag. | 5d77683254f42c001f8c3f69 | -| `role` | *Optional[str]* | :heavy_minus_sign: | The character name or role. | Jimmy McGill | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | URL for the role thumbnail image. | https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsqueryparamincludemeta.md b/docs/models/operations/getlibraryitemsqueryparamincludemeta.md deleted file mode 100644 index 6727f37..0000000 --- a/docs/models/operations/getlibraryitemsqueryparamincludemeta.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibraryItemsQueryParamIncludeMeta - -Adds the Meta object to the response - - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsqueryparamtype.md b/docs/models/operations/getlibraryitemsqueryparamtype.md deleted file mode 100644 index 10bddee..0000000 --- a/docs/models/operations/getlibraryitemsqueryparamtype.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetLibraryItemsQueryParamType - -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `MOVIE` | 1 | -| `TV_SHOW` | 2 | -| `SEASON` | 3 | -| `EPISODE` | 4 | -| `ARTIST` | 5 | -| `ALBUM` | 6 | -| `TRACK` | 7 | -| `PHOTO_ALBUM` | 8 | -| `PHOTO` | 9 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsrequest.md b/docs/models/operations/getlibraryitemsrequest.md index c3159a8..1c837b5 100644 --- a/docs/models/operations/getlibraryitemsrequest.md +++ b/docs/models/operations/getlibraryitemsrequest.md @@ -3,12 +3,17 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `tag` | [operations.Tag](../../models/operations/tag.md) | :heavy_check_mark: | A key representing a specific tag within the section. | | -| `include_guids` | [Optional[operations.IncludeGuids]](../../models/operations/includeguids.md) | :heavy_minus_sign: | Adds the Guids object to the response
| 1 | -| `type` | [operations.GetLibraryItemsQueryParamType](../../models/operations/getlibraryitemsqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `include_meta` | [Optional[operations.GetLibraryItemsQueryParamIncludeMeta]](../../models/operations/getlibraryitemsqueryparamincludemeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | -| `x_plex_container_start` | *Optional[int]* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | -| `x_plex_container_size` | *Optional[int]* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `media_query` | [Optional[components.MediaQuery]](../../models/components/mediaquery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsresponse.md b/docs/models/operations/getlibraryitemsresponse.md index b3a18a3..f7a77f1 100644 --- a/docs/models/operations/getlibraryitemsresponse.md +++ b/docs/models/operations/getlibraryitemsresponse.md @@ -3,9 +3,10 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetLibraryItemsResponseBody]](../../models/operations/getlibraryitemsresponsebody.md) | :heavy_minus_sign: | The contents of the library by section and tag | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsresponsebody.md b/docs/models/operations/getlibraryitemsresponsebody.md deleted file mode 100644 index 95f8d93..0000000 --- a/docs/models/operations/getlibraryitemsresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsResponseBody - -The contents of the library by section and tag - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetLibraryItemsMediaContainer]](../../models/operations/getlibraryitemsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsrole.md b/docs/models/operations/getlibraryitemsrole.md deleted file mode 100644 index 956da9f..0000000 --- a/docs/models/operations/getlibraryitemsrole.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryItemsRole - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique identifier for the role.
NOTE: This is different for each Plex server and is not globally unique.
| 126522 | -| `tag` | *str* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | -| `role` | *Optional[str]* | :heavy_minus_sign: | The role played by the actor in the media item. | Self - Judge | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemssimilar.md b/docs/models/operations/getlibraryitemssimilar.md deleted file mode 100644 index a3d26ed..0000000 --- a/docs/models/operations/getlibraryitemssimilar.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsSimilar - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique similar item identifier. | 26 | -| `filter_` | *str* | :heavy_check_mark: | The filter string for similar items. | similar=26 | -| `tag` | *str* | :heavy_check_mark: | The tag or title of the similar content. | Breaking Bad | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemssort.md b/docs/models/operations/getlibraryitemssort.md deleted file mode 100644 index bba305f..0000000 --- a/docs/models/operations/getlibraryitemssort.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetLibraryItemsSort - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `default` | *Optional[str]* | :heavy_minus_sign: | N/A | asc | -| `active` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `active_direction` | [Optional[operations.GetLibraryItemsActiveDirection]](../../models/operations/getlibraryitemsactivedirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `default_direction` | [Optional[operations.GetLibraryItemsDefaultDirection]](../../models/operations/getlibraryitemsdefaultdirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `desc_key` | *Optional[str]* | :heavy_minus_sign: | N/A | titleSort:desc | -| `first_character_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | -| `key` | *str* | :heavy_check_mark: | N/A | titleSort | -| `title` | *str* | :heavy_check_mark: | N/A | Title | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemstype.md b/docs/models/operations/getlibraryitemstype.md deleted file mode 100644 index 6d6407a..0000000 --- a/docs/models/operations/getlibraryitemstype.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetLibraryItemsType - -The type of media content in the Plex library. This can represent videos, music, or photos. - - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `MOVIE` | movie | -| `TV_SHOW` | show | -| `SEASON` | season | -| `EPISODE` | episode | -| `ARTIST` | artist | -| `ALBUM` | album | -| `TRACK` | track | -| `PHOTO_ALBUM` | photoalbum | -| `PHOTO` | photo | -| `COLLECTION` | collection | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemsultrablurcolors.md b/docs/models/operations/getlibraryitemsultrablurcolors.md deleted file mode 100644 index 579f844..0000000 --- a/docs/models/operations/getlibraryitemsultrablurcolors.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibraryItemsUltraBlurColors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `top_left` | *str* | :heavy_check_mark: | N/A | 11333b | -| `top_right` | *str* | :heavy_check_mark: | N/A | 0a232d | -| `bottom_right` | *str* | :heavy_check_mark: | N/A | 73958 | -| `bottom_left` | *str* | :heavy_check_mark: | N/A | 1f5066 | \ No newline at end of file diff --git a/docs/models/operations/getlibraryitemswriter.md b/docs/models/operations/getlibraryitemswriter.md deleted file mode 100644 index 3275aba..0000000 --- a/docs/models/operations/getlibraryitemswriter.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibraryItemsWriter - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique identifier for the writer. | 126522 | -| `tag` | *str* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the writer. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/models/operations/getlibrarymatchesglobals.md b/docs/models/operations/getlibrarymatchesglobals.md new file mode 100644 index 0000000..c272a13 --- /dev/null +++ b/docs/models/operations/getlibrarymatchesglobals.md @@ -0,0 +1,18 @@ +# GetLibraryMatchesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getlibrarymatchesrequest.md b/docs/models/operations/getlibrarymatchesrequest.md new file mode 100644 index 0000000..a60b2f4 --- /dev/null +++ b/docs/models/operations/getlibrarymatchesrequest.md @@ -0,0 +1,32 @@ +# GetLibraryMatchesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `type` | *Optional[int]* | :heavy_minus_sign: | The metadata type to filter by | | +| `include_full_metadata` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | N/A | 1 | +| `include_ancestor_metadata` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | N/A | 1 | +| `include_alternate_metadata_sources` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | N/A | 1 | +| `guid` | *Optional[str]* | :heavy_minus_sign: | Used for movies, shows, artists, albums, and tracks. Allowed for various URI schemes, to be defined. | | +| `title` | *Optional[str]* | :heavy_minus_sign: | The title to filter by or assign | | +| `year` | *Optional[int]* | :heavy_minus_sign: | Used for movies shows, and albums. Optional. | | +| `path` | *Optional[str]* | :heavy_minus_sign: | Used for movies, episodes, and tracks. The full path to the media file, used for "cloud-scanning" an item. | | +| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | Used for episodes and tracks. The title of the show/artist. Required if `path` isn't passed. | | +| `grandparent_year` | *Optional[int]* | :heavy_minus_sign: | Used for episodes. The year of the show. | | +| `parent_index` | *Optional[int]* | :heavy_minus_sign: | Used for episodes and tracks. The season/album number. | | +| `index` | *Optional[int]* | :heavy_minus_sign: | Used for episodes and tracks. The episode/tracks number in the season/album. | | +| `originally_available_at` | *Optional[str]* | :heavy_minus_sign: | Used for episodes. In the format `YYYY-MM-DD`. | | +| `parent_title` | *Optional[str]* | :heavy_minus_sign: | Used for albums and tracks. The artist name for albums or the album name for tracks. | | \ No newline at end of file diff --git a/docs/models/operations/getlibrarymatchesresponse.md b/docs/models/operations/getlibrarymatchesresponse.md new file mode 100644 index 0000000..f678bb5 --- /dev/null +++ b/docs/models/operations/getlibrarymatchesresponse.md @@ -0,0 +1,12 @@ +# GetLibraryMatchesResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallactivedirection.md b/docs/models/operations/getlibrarysectionsallactivedirection.md deleted file mode 100644 index d4170be..0000000 --- a/docs/models/operations/getlibrarysectionsallactivedirection.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibrarySectionsAllActiveDirection - -The direction of the sort. Can be either `asc` or `desc`. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `ASCENDING` | asc | -| `DESCENDING` | desc | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallcollection.md b/docs/models/operations/getlibrarysectionsallcollection.md deleted file mode 100644 index 9991eb5..0000000 --- a/docs/models/operations/getlibrarysectionsallcollection.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibrarySectionsAllCollection - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | --------------------------------------------------- | -| `tag` | *str* | :heavy_check_mark: | The user-made collection this media item belongs to | My Awesome Collection | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallcountry.md b/docs/models/operations/getlibrarysectionsallcountry.md deleted file mode 100644 index 7fec279..0000000 --- a/docs/models/operations/getlibrarysectionsallcountry.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibrarySectionsAllCountry - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `tag` | *str* | :heavy_check_mark: | The country of origin of this media item | United States of America | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsalldefaultdirection.md b/docs/models/operations/getlibrarysectionsalldefaultdirection.md deleted file mode 100644 index 39e704b..0000000 --- a/docs/models/operations/getlibrarysectionsalldefaultdirection.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibrarySectionsAllDefaultDirection - -The direction of the sort. Can be either `asc` or `desc`. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `ASCENDING` | asc | -| `DESCENDING` | desc | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsalldirector.md b/docs/models/operations/getlibrarysectionsalldirector.md deleted file mode 100644 index 8393ebb..0000000 --- a/docs/models/operations/getlibrarysectionsalldirector.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibrarySectionsAllDirector - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------- | -------------------- | -------------------- | -------------------- | -------------------- | -| `tag` | *str* | :heavy_check_mark: | The role of Director | Danny Boyle | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallfield.md b/docs/models/operations/getlibrarysectionsallfield.md deleted file mode 100644 index b070f43..0000000 --- a/docs/models/operations/getlibrarysectionsallfield.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibrarySectionsAllField - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `key` | *str* | :heavy_check_mark: | N/A | show.title | -| `title` | *str* | :heavy_check_mark: | N/A | Show Title | -| `type` | *str* | :heavy_check_mark: | N/A | string | -| `sub_type` | *Optional[str]* | :heavy_minus_sign: | N/A | rating | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallfieldtype.md b/docs/models/operations/getlibrarysectionsallfieldtype.md deleted file mode 100644 index eddceac..0000000 --- a/docs/models/operations/getlibrarysectionsallfieldtype.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibrarySectionsAllFieldType - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `type` | *str* | :heavy_check_mark: | N/A | tag | -| `operator` | List[[operations.GetLibrarySectionsAllOperator](../../models/operations/getlibrarysectionsalloperator.md)] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallfilter.md b/docs/models/operations/getlibrarysectionsallfilter.md deleted file mode 100644 index 79edf05..0000000 --- a/docs/models/operations/getlibrarysectionsallfilter.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetLibrarySectionsAllFilter - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -| `filter_` | *str* | :heavy_check_mark: | N/A | genre | -| `filter_type` | *str* | :heavy_check_mark: | N/A | string | -| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | -| `title` | *str* | :heavy_check_mark: | N/A | Genre | -| `type` | *str* | :heavy_check_mark: | N/A | filter | -| `advanced` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallgenre.md b/docs/models/operations/getlibrarysectionsallgenre.md deleted file mode 100644 index 22798dc..0000000 --- a/docs/models/operations/getlibrarysectionsallgenre.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibrarySectionsAllGenre - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | ---------------------------------- | -| `tag` | *str* | :heavy_check_mark: | The genre name of this media-item
| Crime | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallguids.md b/docs/models/operations/getlibrarysectionsallguids.md deleted file mode 100644 index 380064d..0000000 --- a/docs/models/operations/getlibrarysectionsallguids.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibrarySectionsAllGuids - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallhasthumbnail.md b/docs/models/operations/getlibrarysectionsallhasthumbnail.md deleted file mode 100644 index 94c08b7..0000000 --- a/docs/models/operations/getlibrarysectionsallhasthumbnail.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibrarySectionsAllHasThumbnail - -Indicates if the part has a thumbnail. - - -## Values - -| Name | Value | -| ------- | ------- | -| `FALSE` | 0 | -| `TRUE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallimage.md b/docs/models/operations/getlibrarysectionsallimage.md deleted file mode 100644 index f212a89..0000000 --- a/docs/models/operations/getlibrarysectionsallimage.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibrarySectionsAllImage - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -| `alt` | *str* | :heavy_check_mark: | N/A | Episode 1 | -| `type` | [operations.GetLibrarySectionsAllLibraryResponseType](../../models/operations/getlibrarysectionsalllibraryresponsetype.md) | :heavy_check_mark: | N/A | background | -| `url` | *str* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsalllibraryoptimizedforstreaming.md b/docs/models/operations/getlibrarysectionsalllibraryoptimizedforstreaming.md deleted file mode 100644 index c27f637..0000000 --- a/docs/models/operations/getlibrarysectionsalllibraryoptimizedforstreaming.md +++ /dev/null @@ -1,19 +0,0 @@ -# GetLibrarySectionsAllLibraryOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - -## Supported Types - -### `operations.GetLibrarySectionsAllOptimizedForStreamingLibrary1` - -```python -value: operations.GetLibrarySectionsAllOptimizedForStreamingLibrary1 = /* values here */ -``` - -### `bool` - -```python -value: bool = /* values here */ -``` - diff --git a/docs/models/operations/getlibrarysectionsalllibraryresponsetype.md b/docs/models/operations/getlibrarysectionsalllibraryresponsetype.md deleted file mode 100644 index ce9af2e..0000000 --- a/docs/models/operations/getlibrarysectionsalllibraryresponsetype.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibrarySectionsAllLibraryResponseType - - -## Values - -| Name | Value | -| -------------- | -------------- | -| `COVER_POSTER` | coverPoster | -| `BACKGROUND` | background | -| `SNAPSHOT` | snapshot | -| `CLEAR_LOGO` | clearLogo | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsalllibrarytype.md b/docs/models/operations/getlibrarysectionsalllibrarytype.md deleted file mode 100644 index 8a4e0d0..0000000 --- a/docs/models/operations/getlibrarysectionsalllibrarytype.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetLibrarySectionsAllLibraryType - -The type of media content in the Plex library. This can represent videos, music, or photos. - - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `MOVIE` | movie | -| `TV_SHOW` | show | -| `SEASON` | season | -| `EPISODE` | episode | -| `ARTIST` | artist | -| `ALBUM` | album | -| `TRACK` | track | -| `PHOTO_ALBUM` | photoalbum | -| `PHOTO` | photo | -| `COLLECTION` | collection | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallmedia.md b/docs/models/operations/getlibrarysectionsallmedia.md deleted file mode 100644 index 36d67fe..0000000 --- a/docs/models/operations/getlibrarysectionsallmedia.md +++ /dev/null @@ -1,26 +0,0 @@ -# GetLibrarySectionsAllMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique media identifier. | 387322 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | -| `bitrate` | *Optional[int]* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | -| `width` | *Optional[int]* | :heavy_minus_sign: | Video width in pixels. | 3840 | -| `height` | *Optional[int]* | :heavy_minus_sign: | Video height in pixels. | 1602 | -| `aspect_ratio` | *Optional[float]* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | -| `audio_channels` | *Optional[int]* | :heavy_minus_sign: | Number of audio channels. | 6 | -| `display_offset` | *Optional[int]* | :heavy_minus_sign: | N/A | 50 | -| `audio_codec` | *Optional[str]* | :heavy_minus_sign: | Audio codec used. | eac3 | -| `video_codec` | *Optional[str]* | :heavy_minus_sign: | Video codec used. | hevc | -| `video_resolution` | *Optional[str]* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | -| `container` | *Optional[str]* | :heavy_minus_sign: | File container type. | mkv | -| `video_frame_rate` | *Optional[str]* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | -| `has_voice_activity` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `optimized_for_streaming` | [Optional[operations.GetLibrarySectionsAllOptimizedForStreaming]](../../models/operations/getlibrarysectionsalloptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `part` | List[[operations.GetLibrarySectionsAllPart](../../models/operations/getlibrarysectionsallpart.md)] | :heavy_minus_sign: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallmediacontainer.md b/docs/models/operations/getlibrarysectionsallmediacontainer.md deleted file mode 100644 index 0331b6d..0000000 --- a/docs/models/operations/getlibrarysectionsallmediacontainer.md +++ /dev/null @@ -1,26 +0,0 @@ -# GetLibrarySectionsAllMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `total_size` | *int* | :heavy_check_mark: | Total number of media items in the library. | 50 | -| `offset` | *int* | :heavy_check_mark: | Offset value for pagination. | 0 | -| `allow_sync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `art` | *str* | :heavy_check_mark: | URL for the background artwork of the media container. | /:/resources/show-fanart.jpg | -| `content` | *str* | :heavy_check_mark: | The content type or mode. | secondary | -| `identifier` | *str* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | The unique identifier for the library section. | 2 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | The title of the library section. | TV Series | -| `library_section_uuid` | *Optional[str]* | :heavy_minus_sign: | The universally unique identifier for the library section. | e69655a2-ef48-4aba-bb19-0cc34d1e7d36 | -| `media_tag_prefix` | *str* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `media_tag_version` | *int* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `thumb` | *str* | :heavy_check_mark: | URL for the thumbnail image of the media container. | /:/resources/show.png | -| `nocache` | *bool* | :heavy_check_mark: | Specifies whether caching is disabled. | true | -| `title1` | *str* | :heavy_check_mark: | The primary title of the media container. | TV Series | -| `title2` | *str* | :heavy_check_mark: | The secondary title of the media container. | By Starring Actor | -| `view_group` | *str* | :heavy_check_mark: | Identifier for the view group layout. | secondary | -| `meta` | [Optional[operations.GetLibrarySectionsAllMeta]](../../models/operations/getlibrarysectionsallmeta.md) | :heavy_minus_sign: | The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
| | -| `metadata` | List[[operations.GetLibrarySectionsAllMetadata](../../models/operations/getlibrarysectionsallmetadata.md)] | :heavy_minus_sign: | An array of metadata items. | | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallmeta.md b/docs/models/operations/getlibrarysectionsallmeta.md deleted file mode 100644 index 29c2ff7..0000000 --- a/docs/models/operations/getlibrarysectionsallmeta.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibrarySectionsAllMeta - -The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. - - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `type` | List[[operations.GetLibrarySectionsAllType](../../models/operations/getlibrarysectionsalltype.md)] | :heavy_minus_sign: | N/A | -| `field_type` | List[[operations.GetLibrarySectionsAllFieldType](../../models/operations/getlibrarysectionsallfieldtype.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallmetadata.md b/docs/models/operations/getlibrarysectionsallmetadata.md deleted file mode 100644 index 61a4e4c..0000000 --- a/docs/models/operations/getlibrarysectionsallmetadata.md +++ /dev/null @@ -1,74 +0,0 @@ -# GetLibrarySectionsAllMetadata - -Unknown - - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `rating_key` | *str* | :heavy_check_mark: | The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. | 58683 | -| `key` | *str* | :heavy_check_mark: | The unique key for the media item. | /library/metadata/58683 | -| `guid` | *str* | :heavy_check_mark: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | -| `slug` | *str* | :heavy_check_mark: | A URL‐friendly version of the media title. | 4-for-texas | -| `studio` | *Optional[str]* | :heavy_minus_sign: | The studio that produced the media item. | 20th Century Studios | -| `type` | [operations.GetLibrarySectionsAllLibraryType](../../models/operations/getlibrarysectionsalllibrarytype.md) | :heavy_check_mark: | N/A | movie | -| `title` | *str* | :heavy_check_mark: | The title of the media item. | Avatar: The Way of Water | -| `title_sort` | *str* | :heavy_check_mark: | The sort title used for ordering media items. | Whale | -| `content_rating` | *Optional[str]* | :heavy_minus_sign: | The content rating for the media item. | PG-13 | -| `summary` | *str* | :heavy_check_mark: | A synopsis of the media item. | Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.
Once a familiar threat returns to finish what was previously started, Jake must
work with Neytiri and the army of the Na'vi race to protect their home.
| -| `rating` | *float* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | -| `audience_rating` | *float* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | -| `year` | *Optional[int]* | :heavy_minus_sign: | The release year of the media item. | 2022 | -| `tagline` | *str* | :heavy_check_mark: | A brief tagline for the media item. | Return to Pandora. | -| `thumb` | *str* | :heavy_check_mark: | The thumbnail image URL for the media item. | /library/metadata/58683/thumb/1703239236 | -| `art` | *str* | :heavy_check_mark: | The art image URL for the media item. | /library/metadata/58683/art/1703239236 | -| `theme` | *str* | :heavy_check_mark: | The theme URL for the media item. | /library/metadata/1/theme/1705636920 | -| `index` | *int* | :heavy_check_mark: | The index position of the media item. | 1 | -| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | The number of leaf items (end nodes) under this media item. | 14 | -| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | -| `child_count` | *int* | :heavy_check_mark: | The number of child items associated with this media item. | 1 | -| `season_count` | *int* | :heavy_check_mark: | The total number of seasons (for TV shows). | 2022 | -| `duration` | *int* | :heavy_check_mark: | The duration of the media item in milliseconds. | 11558112 | -| `originally_available_at` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | The original release date of the media item. | 2022-12-14 | -| `added_at` | *int* | :heavy_check_mark: | N/A | 1556281940 | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | -| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | The URL for the audience rating image. | rottentomatoes://image.rating.upright | -| `chapter_source` | *Optional[str]* | :heavy_minus_sign: | The source from which chapter data is derived. | media | -| `primary_extra_key` | *Optional[str]* | :heavy_minus_sign: | The primary extra key associated with this media item. | /library/metadata/58684 | -| `original_title` | *Optional[str]* | :heavy_minus_sign: | The original title of the media item (if different). | 映画 ブラッククローバー 魔法帝の剣 | -| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the parent media item. | 66 | -| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the grandparent media item. | 66 | -| `parent_guid` | *Optional[str]* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `grandparent_guid` | *Optional[str]* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `grandparent_slug` | *Optional[str]* | :heavy_minus_sign: | The slug for the grandparent media item. | alice-in-borderland-2020 | -| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | The key of the grandparent media item. | /library/metadata/66 | -| `parent_key` | *Optional[str]* | :heavy_minus_sign: | The key of the parent media item. | /library/metadata/66 | -| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | The title of the grandparent media item. | Caprica | -| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail URL for the grandparent media item. | /library/metadata/66/thumb/1705716261 | -| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | The theme URL for the grandparent media item. | /library/metadata/66/theme/1705716261 | -| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | The art URL for the grandparent media item. | /library/metadata/66/art/1705716261 | -| `parent_title` | *Optional[str]* | :heavy_minus_sign: | The title of the parent media item. | Caprica | -| `parent_index` | *Optional[int]* | :heavy_minus_sign: | The index position of the parent media item. | 1 | -| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail URL for the parent media item. | /library/metadata/66/thumb/1705716261 | -| `rating_image` | *Optional[str]* | :heavy_minus_sign: | The URL for the rating image. | rottentomatoes://image.rating.ripe | -| `view_count` | *Optional[int]* | :heavy_minus_sign: | The number of times this media item has been viewed. | 1 | -| `view_offset` | *Optional[int]* | :heavy_minus_sign: | The current playback offset (in milliseconds). | 5222500 | -| `skip_count` | *Optional[int]* | :heavy_minus_sign: | The number of times this media item has been skipped. | 1 | -| `subtype` | *Optional[str]* | :heavy_minus_sign: | A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. | clip | -| `last_rated_at` | *Optional[int]* | :heavy_minus_sign: | The Unix timestamp representing the last time the item was rated. | 1721813113 | -| `created_at_accuracy` | *Optional[str]* | :heavy_minus_sign: | The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). | epoch,local | -| `created_at_tz_offset` | *Optional[str]* | :heavy_minus_sign: | The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. | 0 | -| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | -| `user_rating` | *Optional[float]* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | -| `image` | List[[operations.GetLibrarySectionsAllImage](../../models/operations/getlibrarysectionsallimage.md)] | :heavy_minus_sign: | N/A | | -| `ultra_blur_colors` | [Optional[operations.GetLibrarySectionsAllUltraBlurColors]](../../models/operations/getlibrarysectionsallultrablurcolors.md) | :heavy_minus_sign: | N/A | | -| `guids` | List[[operations.GetLibrarySectionsAllGuids](../../models/operations/getlibrarysectionsallguids.md)] | :heavy_minus_sign: | N/A | | -| `media` | List[[operations.GetLibrarySectionsAllMedia](../../models/operations/getlibrarysectionsallmedia.md)] | :heavy_minus_sign: | N/A | | -| `genre` | List[[operations.GetLibrarySectionsAllGenre](../../models/operations/getlibrarysectionsallgenre.md)] | :heavy_minus_sign: | N/A | | -| `country` | List[[operations.GetLibrarySectionsAllCountry](../../models/operations/getlibrarysectionsallcountry.md)] | :heavy_minus_sign: | N/A | | -| `director` | List[[operations.GetLibrarySectionsAllDirector](../../models/operations/getlibrarysectionsalldirector.md)] | :heavy_minus_sign: | N/A | | -| `writer` | List[[operations.GetLibrarySectionsAllWriter](../../models/operations/getlibrarysectionsallwriter.md)] | :heavy_minus_sign: | N/A | | -| `role` | List[[operations.GetLibrarySectionsAllRole](../../models/operations/getlibrarysectionsallrole.md)] | :heavy_minus_sign: | N/A | | -| `collection` | List[[operations.GetLibrarySectionsAllCollection](../../models/operations/getlibrarysectionsallcollection.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsalloperator.md b/docs/models/operations/getlibrarysectionsalloperator.md deleted file mode 100644 index 2397e04..0000000 --- a/docs/models/operations/getlibrarysectionsalloperator.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibrarySectionsAllOperator - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `key` | *str* | :heavy_check_mark: | N/A | = | -| `title` | *str* | :heavy_check_mark: | N/A | is | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsalloptimizedforstreaming.md b/docs/models/operations/getlibrarysectionsalloptimizedforstreaming.md deleted file mode 100644 index 171ba6e..0000000 --- a/docs/models/operations/getlibrarysectionsalloptimizedforstreaming.md +++ /dev/null @@ -1,19 +0,0 @@ -# GetLibrarySectionsAllOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - -## Supported Types - -### `operations.GetLibrarySectionsAllOptimizedForStreaming1` - -```python -value: operations.GetLibrarySectionsAllOptimizedForStreaming1 = /* values here */ -``` - -### `bool` - -```python -value: bool = /* values here */ -``` - diff --git a/docs/models/operations/getlibrarysectionsalloptimizedforstreaming1.md b/docs/models/operations/getlibrarysectionsalloptimizedforstreaming1.md deleted file mode 100644 index 7591660..0000000 --- a/docs/models/operations/getlibrarysectionsalloptimizedforstreaming1.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibrarySectionsAllOptimizedForStreaming1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsalloptimizedforstreaminglibrary1.md b/docs/models/operations/getlibrarysectionsalloptimizedforstreaminglibrary1.md deleted file mode 100644 index 70e3903..0000000 --- a/docs/models/operations/getlibrarysectionsalloptimizedforstreaminglibrary1.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetLibrarySectionsAllOptimizedForStreamingLibrary1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallpart.md b/docs/models/operations/getlibrarysectionsallpart.md deleted file mode 100644 index 32beb54..0000000 --- a/docs/models/operations/getlibrarysectionsallpart.md +++ /dev/null @@ -1,23 +0,0 @@ -# GetLibrarySectionsAllPart - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `accessible` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the part is accessible. | true | -| `exists` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the part exists. | true | -| `id` | *int* | :heavy_check_mark: | Unique part identifier. | 418385 | -| `key` | *str* | :heavy_check_mark: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | -| `indexes` | *Optional[str]* | :heavy_minus_sign: | N/A | sd | -| `duration` | *Optional[int]* | :heavy_minus_sign: | Duration of the part in milliseconds. | 9610350 | -| `file` | *str* | :heavy_check_mark: | File path for the part. | /mnt/Movies_1/W/Wicked (2024).mkv | -| `size` | *int* | :heavy_check_mark: | File size in bytes. | 30649952104 | -| `packet_length` | *Optional[int]* | :heavy_minus_sign: | N/A | 188 | -| `container` | *Optional[str]* | :heavy_minus_sign: | Container format of the part. | mkv | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | Video profile for the part. | main 10 | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `optimized_for_streaming` | [Optional[operations.GetLibrarySectionsAllLibraryOptimizedForStreaming]](../../models/operations/getlibrarysectionsalllibraryoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `has_thumbnail` | [Optional[operations.GetLibrarySectionsAllHasThumbnail]](../../models/operations/getlibrarysectionsallhasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | -| `stream` | List[[operations.GetLibrarySectionsAllStream](../../models/operations/getlibrarysectionsallstream.md)] | :heavy_minus_sign: | An array of streams for this part. | | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallqueryparamincludemeta.md b/docs/models/operations/getlibrarysectionsallqueryparamincludemeta.md deleted file mode 100644 index dd4f259..0000000 --- a/docs/models/operations/getlibrarysectionsallqueryparamincludemeta.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetLibrarySectionsAllQueryParamIncludeMeta - -Adds the Meta object to the response - - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallqueryparamtype.md b/docs/models/operations/getlibrarysectionsallqueryparamtype.md deleted file mode 100644 index 58b67cf..0000000 --- a/docs/models/operations/getlibrarysectionsallqueryparamtype.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetLibrarySectionsAllQueryParamType - -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `MOVIE` | 1 | -| `TV_SHOW` | 2 | -| `SEASON` | 3 | -| `EPISODE` | 4 | -| `ARTIST` | 5 | -| `ALBUM` | 6 | -| `TRACK` | 7 | -| `PHOTO_ALBUM` | 8 | -| `PHOTO` | 9 | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallrequest.md b/docs/models/operations/getlibrarysectionsallrequest.md deleted file mode 100644 index 3af75e6..0000000 --- a/docs/models/operations/getlibrarysectionsallrequest.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetLibrarySectionsAllRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `type` | [operations.GetLibrarySectionsAllQueryParamType](../../models/operations/getlibrarysectionsallqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `include_meta` | [Optional[operations.GetLibrarySectionsAllQueryParamIncludeMeta]](../../models/operations/getlibrarysectionsallqueryparamincludemeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | -| `include_guids` | [Optional[operations.QueryParamIncludeGuids]](../../models/operations/queryparamincludeguids.md) | :heavy_minus_sign: | Adds the Guid object to the response
| 1 | -| `include_advanced` | [Optional[operations.IncludeAdvanced]](../../models/operations/includeadvanced.md) | :heavy_minus_sign: | N/A | 1 | -| `include_collections` | [Optional[operations.QueryParamIncludeCollections]](../../models/operations/queryparamincludecollections.md) | :heavy_minus_sign: | N/A | 1 | -| `include_external_media` | [Optional[operations.QueryParamIncludeExternalMedia]](../../models/operations/queryparamincludeexternalmedia.md) | :heavy_minus_sign: | N/A | 1 | -| `x_plex_container_start` | *Optional[int]* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | -| `x_plex_container_size` | *Optional[int]* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallresponse.md b/docs/models/operations/getlibrarysectionsallresponse.md deleted file mode 100644 index e6b7bed..0000000 --- a/docs/models/operations/getlibrarysectionsallresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibrarySectionsAllResponse - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetLibrarySectionsAllResponseBody]](../../models/operations/getlibrarysectionsallresponsebody.md) | :heavy_minus_sign: | Successful response containing media container data. | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallresponsebody.md b/docs/models/operations/getlibrarysectionsallresponsebody.md deleted file mode 100644 index fe8fc85..0000000 --- a/docs/models/operations/getlibrarysectionsallresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetLibrarySectionsAllResponseBody - -Successful response containing media container data. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetLibrarySectionsAllMediaContainer]](../../models/operations/getlibrarysectionsallmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallrole.md b/docs/models/operations/getlibrarysectionsallrole.md deleted file mode 100644 index 453dd74..0000000 --- a/docs/models/operations/getlibrarysectionsallrole.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibrarySectionsAllRole - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | -| `tag` | *str* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallsort.md b/docs/models/operations/getlibrarysectionsallsort.md deleted file mode 100644 index daf5761..0000000 --- a/docs/models/operations/getlibrarysectionsallsort.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetLibrarySectionsAllSort - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | -| `default` | *Optional[str]* | :heavy_minus_sign: | N/A | asc | -| `active` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `active_direction` | [Optional[operations.GetLibrarySectionsAllActiveDirection]](../../models/operations/getlibrarysectionsallactivedirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `default_direction` | [Optional[operations.GetLibrarySectionsAllDefaultDirection]](../../models/operations/getlibrarysectionsalldefaultdirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `desc_key` | *Optional[str]* | :heavy_minus_sign: | N/A | titleSort:desc | -| `first_character_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | -| `key` | *str* | :heavy_check_mark: | N/A | titleSort | -| `title` | *str* | :heavy_check_mark: | N/A | Title | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallstream.md b/docs/models/operations/getlibrarysectionsallstream.md deleted file mode 100644 index 95f56dd..0000000 --- a/docs/models/operations/getlibrarysectionsallstream.md +++ /dev/null @@ -1,58 +0,0 @@ -# GetLibrarySectionsAllStream - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique stream identifier. | 1002625 | -| `stream_type` | *Literal[1]* | :heavy_check_mark: | Stream type:
- VIDEO = 1
- AUDIO = 2
- SUBTITLE = 3
| | -| `format_` | *Optional[str]* | :heavy_minus_sign: | Format of the stream (e.g., srt). | srt | -| `default` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this stream is default. | true | -| `codec` | *str* | :heavy_check_mark: | Codec used by the stream. | hevc | -| `index` | *Optional[int]* | :heavy_minus_sign: | Index of the stream. | 0 | -| `bitrate` | *Optional[int]* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | -| `language` | *Optional[str]* | :heavy_minus_sign: | Language of the stream. | English | -| `language_tag` | *Optional[str]* | :heavy_minus_sign: | Language tag (e.g., en). | en | -| `language_code` | *Optional[str]* | :heavy_minus_sign: | ISO language code. | eng | -| `header_compression` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | -| `dovibl_compat_id` | *Optional[int]* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | -| `dovibl_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | -| `doviel_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | -| `dovi_level` | *Optional[int]* | :heavy_minus_sign: | Dolby Vision level. | 6 | -| `dovi_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | -| `dovi_profile` | *Optional[int]* | :heavy_minus_sign: | Dolby Vision profile. | 8 | -| `dovirpu_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | -| `dovi_version` | *Optional[str]* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | -| `bit_depth` | *Optional[int]* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | -| `chroma_location` | *Optional[str]* | :heavy_minus_sign: | Chroma sample location. | topleft | -| `chroma_subsampling` | *Optional[str]* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | -| `coded_height` | *Optional[int]* | :heavy_minus_sign: | Coded video height. | 1608 | -| `coded_width` | *Optional[int]* | :heavy_minus_sign: | Coded video width. | 3840 | -| `closed_captions` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `color_primaries` | *Optional[str]* | :heavy_minus_sign: | Color primaries used. | bt2020 | -| `color_range` | *Optional[str]* | :heavy_minus_sign: | Color range (e.g., tv). | tv | -| `color_space` | *Optional[str]* | :heavy_minus_sign: | Color space. | bt2020nc | -| `color_trc` | *Optional[str]* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | -| `frame_rate` | *Optional[float]* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | -| `key` | *Optional[str]* | :heavy_minus_sign: | Key to access this stream part. | /library/streams/216389 | -| `height` | *Optional[int]* | :heavy_minus_sign: | Height of the video stream. | 1602 | -| `level` | *Optional[int]* | :heavy_minus_sign: | Video level. | 150 | -| `original` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this is the original stream. | true | -| `has_scaling_matrix` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `profile` | *Optional[str]* | :heavy_minus_sign: | Video profile. | main 10 | -| `scan_type` | *Optional[str]* | :heavy_minus_sign: | N/A | progressive | -| `embedded_in_video` | *Optional[str]* | :heavy_minus_sign: | N/A | progressive | -| `ref_frames` | *Optional[int]* | :heavy_minus_sign: | Number of reference frames. | 1 | -| `width` | *Optional[int]* | :heavy_minus_sign: | Width of the video stream. | 3840 | -| `display_title` | *str* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `extended_display_title` | *str* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `selected` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | -| `forced` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `channels` | *Optional[int]* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | -| `audio_channel_layout` | *Optional[str]* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | -| `sampling_rate` | *Optional[int]* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | -| `can_auto_sync` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | -| `hearing_impaired` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | -| `dub` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | -| `title` | *Optional[str]* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsalltype.md b/docs/models/operations/getlibrarysectionsalltype.md deleted file mode 100644 index 56ab426..0000000 --- a/docs/models/operations/getlibrarysectionsalltype.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetLibrarySectionsAllType - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | -| `type` | *str* | :heavy_check_mark: | N/A | filter | -| `subtype` | *Optional[str]* | :heavy_minus_sign: | N/A | clip | -| `title` | *str* | :heavy_check_mark: | N/A | TV Shows | -| `active` | *bool* | :heavy_check_mark: | N/A | false | -| `filter_` | List[[operations.GetLibrarySectionsAllFilter](../../models/operations/getlibrarysectionsallfilter.md)] | :heavy_minus_sign: | N/A | | -| `sort` | List[[operations.GetLibrarySectionsAllSort](../../models/operations/getlibrarysectionsallsort.md)] | :heavy_minus_sign: | N/A | | -| `field` | List[[operations.GetLibrarySectionsAllField](../../models/operations/getlibrarysectionsallfield.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallultrablurcolors.md b/docs/models/operations/getlibrarysectionsallultrablurcolors.md deleted file mode 100644 index 2d1c1c5..0000000 --- a/docs/models/operations/getlibrarysectionsallultrablurcolors.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetLibrarySectionsAllUltraBlurColors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `top_left` | *str* | :heavy_check_mark: | N/A | 11333b | -| `top_right` | *str* | :heavy_check_mark: | N/A | 0a232d | -| `bottom_right` | *str* | :heavy_check_mark: | N/A | 73958 | -| `bottom_left` | *str* | :heavy_check_mark: | N/A | 1f5066 | \ No newline at end of file diff --git a/docs/models/operations/getlibrarysectionsallwriter.md b/docs/models/operations/getlibrarysectionsallwriter.md deleted file mode 100644 index 0d74d52..0000000 --- a/docs/models/operations/getlibrarysectionsallwriter.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetLibrarySectionsAllWriter - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *str* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | \ No newline at end of file diff --git a/docs/models/operations/getlineupchannelsglobals.md b/docs/models/operations/getlineupchannelsglobals.md new file mode 100644 index 0000000..2c9e00c --- /dev/null +++ b/docs/models/operations/getlineupchannelsglobals.md @@ -0,0 +1,18 @@ +# GetLineupChannelsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getlineupchannelsmediacontainer.md b/docs/models/operations/getlineupchannelsmediacontainer.md new file mode 100644 index 0000000..ae8d005 --- /dev/null +++ b/docs/models/operations/getlineupchannelsmediacontainer.md @@ -0,0 +1,17 @@ +# GetLineupChannelsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `lineup` | List[[operations.Lineup](../../models/operations/lineup.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getlineupchannelsrequest.md b/docs/models/operations/getlineupchannelsrequest.md new file mode 100644 index 0000000..64ef602 --- /dev/null +++ b/docs/models/operations/getlineupchannelsrequest.md @@ -0,0 +1,19 @@ +# GetLineupChannelsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `lineup` | List[*str*] | :heavy_check_mark: | The URIs describing the lineups | | \ No newline at end of file diff --git a/docs/models/operations/getlineupchannelsresponse.md b/docs/models/operations/getlineupchannelsresponse.md new file mode 100644 index 0000000..df0e6bb --- /dev/null +++ b/docs/models/operations/getlineupchannelsresponse.md @@ -0,0 +1,11 @@ +# GetLineupChannelsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetLineupChannelsResponseBody]](../../models/operations/getlineupchannelsresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getlineupchannelsresponsebody.md b/docs/models/operations/getlineupchannelsresponsebody.md new file mode 100644 index 0000000..cff0013 --- /dev/null +++ b/docs/models/operations/getlineupchannelsresponsebody.md @@ -0,0 +1,10 @@ +# GetLineupChannelsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.GetLineupChannelsMediaContainer]](../../models/operations/getlineupchannelsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getlineupglobals.md b/docs/models/operations/getlineupglobals.md new file mode 100644 index 0000000..2e6cb8f --- /dev/null +++ b/docs/models/operations/getlineupglobals.md @@ -0,0 +1,18 @@ +# GetLineupGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getlineuprequest.md b/docs/models/operations/getlineuprequest.md new file mode 100644 index 0000000..c583ba6 --- /dev/null +++ b/docs/models/operations/getlineuprequest.md @@ -0,0 +1,20 @@ +# GetLineupRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `device_query_parameter` | *str* | :heavy_check_mark: | The URI describing the device | | +| `lineup_group` | *str* | :heavy_check_mark: | The URI describing the lineupGroup | | \ No newline at end of file diff --git a/docs/models/operations/getlineupresponse.md b/docs/models/operations/getlineupresponse.md new file mode 100644 index 0000000..3f2b26f --- /dev/null +++ b/docs/models/operations/getlineupresponse.md @@ -0,0 +1,11 @@ +# GetLineupResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getlivetvsessionglobals.md b/docs/models/operations/getlivetvsessionglobals.md new file mode 100644 index 0000000..67196fc --- /dev/null +++ b/docs/models/operations/getlivetvsessionglobals.md @@ -0,0 +1,18 @@ +# GetLiveTVSessionGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getlivetvsessionrequest.md b/docs/models/operations/getlivetvsessionrequest.md new file mode 100644 index 0000000..df20ad3 --- /dev/null +++ b/docs/models/operations/getlivetvsessionrequest.md @@ -0,0 +1,19 @@ +# GetLiveTVSessionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `session_id` | *str* | :heavy_check_mark: | The session id | | \ No newline at end of file diff --git a/docs/models/operations/getlivetvsessionresponse.md b/docs/models/operations/getlivetvsessionresponse.md new file mode 100644 index 0000000..655093e --- /dev/null +++ b/docs/models/operations/getlivetvsessionresponse.md @@ -0,0 +1,12 @@ +# GetLiveTVSessionResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getmediaartsmediacontainer.md b/docs/models/operations/getmediaartsmediacontainer.md deleted file mode 100644 index cb9861d..0000000 --- a/docs/models/operations/getmediaartsmediacontainer.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaArtsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `media_tag_version` | *int* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `media_tag_prefix` | *str* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `identifier` | *str* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `metadata` | List[[operations.GetMediaArtsMetadata](../../models/operations/getmediaartsmetadata.md)] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getmediaartsmetadata.md b/docs/models/operations/getmediaartsmetadata.md deleted file mode 100644 index 725ecdf..0000000 --- a/docs/models/operations/getmediaartsmetadata.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaArtsMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `key` | *str* | :heavy_check_mark: | The URL of the artwork. | https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg | -| `provider` | *Optional[str]* | :heavy_minus_sign: | The provider of the artwork. | tmdb | -| `rating_key` | *str* | :heavy_check_mark: | The URL of the artwork. | https://image.tmdb.org/t/p/original/ixgFmf1X59PUZam2qbAfskx2gQr.jpg | -| `selected` | *bool* | :heavy_check_mark: | Whether this is the selected artwork. | true | -| `thumb` | *str* | :heavy_check_mark: | The URL of the artwork thumbnail. | https://images.plex.tv/photo?height=270&width=480&minSize=1&upscale=1&url=https%3A%2F%2Fimage%2Etmdb%2Eorg%2Ft%2Fp%2Foriginal%2FixgFmf1X59PUZam2qbAfskx2gQr%2Ejpg | \ No newline at end of file diff --git a/docs/models/operations/getmediaartsrequest.md b/docs/models/operations/getmediaartsrequest.md deleted file mode 100644 index ebb24a4..0000000 --- a/docs/models/operations/getmediaartsrequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetMediaArtsRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| `rating_key` | *int* | :heavy_check_mark: | the id of the library item to return the artwork of. | 16099 | \ No newline at end of file diff --git a/docs/models/operations/getmediaartsresponse.md b/docs/models/operations/getmediaartsresponse.md deleted file mode 100644 index ecbb406..0000000 --- a/docs/models/operations/getmediaartsresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaArtsResponse - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetMediaArtsResponseBody]](../../models/operations/getmediaartsresponsebody.md) | :heavy_minus_sign: | The available background artwork for the library item. | \ No newline at end of file diff --git a/docs/models/operations/getmediaartsresponsebody.md b/docs/models/operations/getmediaartsresponsebody.md deleted file mode 100644 index 38cd0dd..0000000 --- a/docs/models/operations/getmediaartsresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaArtsResponseBody - -The available background artwork for the library item. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetMediaArtsMediaContainer]](../../models/operations/getmediaartsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getmediametadataattributes.md b/docs/models/operations/getmediametadataattributes.md deleted file mode 100644 index f1c151b..0000000 --- a/docs/models/operations/getmediametadataattributes.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaMetaDataAttributes - -Attributes associated with the marker. - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The identifier for the attributes. | 306970 | -| `version` | *Optional[int]* | :heavy_minus_sign: | The version number of the marker attributes. | 4 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatachapter.md b/docs/models/operations/getmediametadatachapter.md deleted file mode 100644 index 0b155df..0000000 --- a/docs/models/operations/getmediametadatachapter.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetMediaMetaDataChapter - -The thumbnail for the chapter - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | -| `id` | *int* | :heavy_check_mark: | N/A | 4 | -| `filter_` | *str* | :heavy_check_mark: | N/A | thumb=4 | -| `index` | *int* | :heavy_check_mark: | N/A | 1 | -| `start_time_offset` | *int* | :heavy_check_mark: | N/A | 0 | -| `end_time_offset` | *int* | :heavy_check_mark: | N/A | 100100 | -| `thumb` | *str* | :heavy_check_mark: | N/A | /library/media/46883/chapterImages/1 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatacountry.md b/docs/models/operations/getmediametadatacountry.md deleted file mode 100644 index 1a53de7..0000000 --- a/docs/models/operations/getmediametadatacountry.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaMetaDataCountry - -The filter query string for country media items. - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique identifier for the country.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | -| `tag` | *str* | :heavy_check_mark: | The country of origin of this media item | United States of America | -| `filter_` | *str* | :heavy_check_mark: | N/A | country=19 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatadirector.md b/docs/models/operations/getmediametadatadirector.md deleted file mode 100644 index 3df2695..0000000 --- a/docs/models/operations/getmediametadatadirector.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaMetaDataDirector - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique identifier for the director. | 126522 | -| `tag` | *str* | :heavy_check_mark: | The role of Director | Danny Boyle | -| `filter_` | *str* | :heavy_check_mark: | The filter string used to query this director. | director=235876 | -| `tag_key` | *str* | :heavy_check_mark: | A unique 24-character hexadecimal key associated with the director's tag, used for internal identification. | 5d776831151a60001f24d031 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the director. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/models/operations/getmediametadataextras.md b/docs/models/operations/getmediametadataextras.md deleted file mode 100644 index b048f16..0000000 --- a/docs/models/operations/getmediametadataextras.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetMediaMetaDataExtras - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------- | ----------------------- | ----------------------- | ----------------------- | ----------------------- | -| `size` | *Optional[int]* | :heavy_minus_sign: | The size of the extras. | 1 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatagenre.md b/docs/models/operations/getmediametadatagenre.md deleted file mode 100644 index 9a598ec..0000000 --- a/docs/models/operations/getmediametadatagenre.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaMetaDataGenre - -The filter query string for similar items. - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique identifier for the genre.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | -| `tag` | *str* | :heavy_check_mark: | The genre name of this media-item
| Crime | -| `filter_` | *str* | :heavy_check_mark: | N/A | genre=19 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadataguids.md b/docs/models/operations/getmediametadataguids.md deleted file mode 100644 index 6e1f510..0000000 --- a/docs/models/operations/getmediametadataguids.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetMediaMetaDataGuids - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatahasthumbnail.md b/docs/models/operations/getmediametadatahasthumbnail.md deleted file mode 100644 index 8d92322..0000000 --- a/docs/models/operations/getmediametadatahasthumbnail.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaMetaDataHasThumbnail - -Indicates if the part has a thumbnail. - - - -## Values - -| Name | Value | -| ------- | ------- | -| `FALSE` | 0 | -| `TRUE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadataimage.md b/docs/models/operations/getmediametadataimage.md deleted file mode 100644 index 3a9970e..0000000 --- a/docs/models/operations/getmediametadataimage.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaMetaDataImage - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `alt` | *str* | :heavy_check_mark: | N/A | Episode 1 | -| `type` | [operations.GetMediaMetaDataLibraryType](../../models/operations/getmediametadatalibrarytype.md) | :heavy_check_mark: | N/A | background | -| `url` | *str* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md b/docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md deleted file mode 100644 index 1fc00e5..0000000 --- a/docs/models/operations/getmediametadatalibraryoptimizedforstreaming.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetMediaMetaDataLibraryOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - - -## Supported Types - -### `operations.GetMediaMetaDataOptimizedForStreamingLibrary1` - -```python -value: operations.GetMediaMetaDataOptimizedForStreamingLibrary1 = /* values here */ -``` - -### `bool` - -```python -value: bool = /* values here */ -``` - diff --git a/docs/models/operations/getmediametadatalibrarytype.md b/docs/models/operations/getmediametadatalibrarytype.md deleted file mode 100644 index 77547ef..0000000 --- a/docs/models/operations/getmediametadatalibrarytype.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaMetaDataLibraryType - - -## Values - -| Name | Value | -| -------------- | -------------- | -| `COVER_POSTER` | coverPoster | -| `BACKGROUND` | background | -| `SNAPSHOT` | snapshot | -| `CLEAR_LOGO` | clearLogo | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatalocation.md b/docs/models/operations/getmediametadatalocation.md deleted file mode 100644 index 24fc5a1..0000000 --- a/docs/models/operations/getmediametadatalocation.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetMediaMetaDataLocation - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `path` | *str* | :heavy_check_mark: | The file path for the location. | /TV Shows/Better Call Saul | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatamarker.md b/docs/models/operations/getmediametadatamarker.md deleted file mode 100644 index a8137d8..0000000 --- a/docs/models/operations/getmediametadatamarker.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetMediaMetaDataMarker - -The final status of the marker - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | N/A | 306970 | -| `type` | *str* | :heavy_check_mark: | N/A | credits | -| `start_time_offset` | *int* | :heavy_check_mark: | N/A | 4176050 | -| `end_time_offset` | *int* | :heavy_check_mark: | N/A | 4393389 | -| `final` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `attributes` | [Optional[operations.GetMediaMetaDataAttributes]](../../models/operations/getmediametadataattributes.md) | :heavy_minus_sign: | Attributes associated with the marker. | | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatamedia.md b/docs/models/operations/getmediametadatamedia.md deleted file mode 100644 index 6da2adf..0000000 --- a/docs/models/operations/getmediametadatamedia.md +++ /dev/null @@ -1,26 +0,0 @@ -# GetMediaMetaDataMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique media identifier. | 387322 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | -| `bitrate` | *Optional[int]* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | -| `width` | *Optional[int]* | :heavy_minus_sign: | Video width in pixels. | 3840 | -| `height` | *Optional[int]* | :heavy_minus_sign: | Video height in pixels. | 1602 | -| `aspect_ratio` | *Optional[float]* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | -| `audio_channels` | *Optional[int]* | :heavy_minus_sign: | Number of audio channels. | 6 | -| `display_offset` | *Optional[int]* | :heavy_minus_sign: | N/A | 50 | -| `audio_codec` | *Optional[str]* | :heavy_minus_sign: | Audio codec used. | aac | -| `video_codec` | *Optional[str]* | :heavy_minus_sign: | Video codec used. | hevc | -| `video_resolution` | *Optional[str]* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | -| `container` | *Optional[str]* | :heavy_minus_sign: | Container format of the media. | mp4 | -| `video_frame_rate` | *Optional[str]* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | -| `has_voice_activity` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `optimized_for_streaming` | [Optional[operations.GetMediaMetaDataOptimizedForStreaming]](../../models/operations/getmediametadataoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether the media has 64-bit offsets.
This is relevant for media files that may require larger offsets than what 32-bit integers can provide.
| false | -| `part` | List[[operations.GetMediaMetaDataPart](../../models/operations/getmediametadatapart.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatamediacontainer.md b/docs/models/operations/getmediametadatamediacontainer.md deleted file mode 100644 index 27370a8..0000000 --- a/docs/models/operations/getmediametadatamediacontainer.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetMediaMetaDataMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `allow_sync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `identifier` | *str* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | The unique identifier for the library section. | 2 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | The title of the library section. | TV Series | -| `library_section_uuid` | *Optional[str]* | :heavy_minus_sign: | The universally unique identifier for the library section. | e69655a2-ef48-4aba-bb19-0cc34d1e7d36 | -| `media_tag_prefix` | *str* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `media_tag_version` | *int* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `metadata` | List[[operations.GetMediaMetaDataMetadata](../../models/operations/getmediametadatametadata.md)] | :heavy_check_mark: | An array of metadata items. | | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatametadata.md b/docs/models/operations/getmediametadatametadata.md deleted file mode 100644 index 9c5ff4c..0000000 --- a/docs/models/operations/getmediametadatametadata.md +++ /dev/null @@ -1,83 +0,0 @@ -# GetMediaMetaDataMetadata - -Unknown - - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `rating_key` | *str* | :heavy_check_mark: | The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. | 58683 | -| `key` | *str* | :heavy_check_mark: | The unique key for the media item. | /library/metadata/58683 | -| `guid` | *str* | :heavy_check_mark: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | -| `slug` | *str* | :heavy_check_mark: | A URL‐friendly version of the media title. | 4-for-texas | -| `studio` | *Optional[str]* | :heavy_minus_sign: | The studio that produced the media item. | 20th Century Studios | -| `type` | [operations.GetMediaMetaDataType](../../models/operations/getmediametadatatype.md) | :heavy_check_mark: | N/A | movie | -| `title` | *str* | :heavy_check_mark: | The title of the media item. | Avatar: The Way of Water | -| `title_sort` | *str* | :heavy_check_mark: | The sort title used for ordering media items. | Whale | -| `content_rating` | *Optional[str]* | :heavy_minus_sign: | The content rating for the media item. | PG-13 | -| `summary` | *str* | :heavy_check_mark: | A synopsis of the media item. | Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.
Once a familiar threat returns to finish what was previously started, Jake must
work with Neytiri and the army of the Na'vi race to protect their home.
| -| `rating` | *float* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | -| `audience_rating` | *float* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | -| `year` | *Optional[int]* | :heavy_minus_sign: | The release year of the media item. | 2022 | -| `tagline` | *str* | :heavy_check_mark: | A brief tagline for the media item. | Return to Pandora. | -| `thumb` | *str* | :heavy_check_mark: | The thumbnail image URL for the media item. | /library/metadata/58683/thumb/1703239236 | -| `art` | *str* | :heavy_check_mark: | The art image URL for the media item. | /library/metadata/58683/art/1703239236 | -| `theme` | *str* | :heavy_check_mark: | The theme URL for the media item. | /library/metadata/1/theme/1705636920 | -| `index` | *int* | :heavy_check_mark: | The index position of the media item. | 1 | -| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | The number of leaf items (end nodes) under this media item. | 14 | -| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | -| `child_count` | *int* | :heavy_check_mark: | The number of child items associated with this media item. | 1 | -| `season_count` | *int* | :heavy_check_mark: | The total number of seasons (for TV shows). | 2022 | -| `duration` | *int* | :heavy_check_mark: | The duration of the media item in milliseconds. | 11558112 | -| `originally_available_at` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | The original release date of the media item. | 2022-12-14 | -| `added_at` | *int* | :heavy_check_mark: | N/A | 1556281940 | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | -| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | The URL for the audience rating image. | rottentomatoes://image.rating.upright | -| `chapter_source` | *Optional[str]* | :heavy_minus_sign: | The source from which chapter data is derived. | media | -| `primary_extra_key` | *Optional[str]* | :heavy_minus_sign: | The primary extra key associated with this media item. | /library/metadata/58684 | -| `original_title` | *Optional[str]* | :heavy_minus_sign: | The original title of the media item (if different). | 映画 ブラッククローバー 魔法帝の剣 | -| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the parent media item. | 66 | -| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the grandparent media item. | 66 | -| `parent_guid` | *Optional[str]* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `grandparent_guid` | *Optional[str]* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `grandparent_slug` | *Optional[str]* | :heavy_minus_sign: | The slug for the grandparent media item. | alice-in-borderland-2020 | -| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | The key of the grandparent media item. | /library/metadata/66 | -| `parent_key` | *Optional[str]* | :heavy_minus_sign: | The key of the parent media item. | /library/metadata/66 | -| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | The title of the grandparent media item. | Caprica | -| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail URL for the grandparent media item. | /library/metadata/66/thumb/1705716261 | -| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | The theme URL for the grandparent media item. | /library/metadata/66/theme/1705716261 | -| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | The art URL for the grandparent media item. | /library/metadata/66/art/1705716261 | -| `parent_title` | *Optional[str]* | :heavy_minus_sign: | The title of the parent media item. | Caprica | -| `parent_index` | *Optional[int]* | :heavy_minus_sign: | The index position of the parent media item. | 1 | -| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail URL for the parent media item. | /library/metadata/66/thumb/1705716261 | -| `rating_image` | *Optional[str]* | :heavy_minus_sign: | The URL for the rating image. | rottentomatoes://image.rating.ripe | -| `view_count` | *Optional[int]* | :heavy_minus_sign: | The number of times this media item has been viewed. | 1 | -| `view_offset` | *Optional[int]* | :heavy_minus_sign: | The current playback offset (in milliseconds). | 5222500 | -| `skip_count` | *Optional[int]* | :heavy_minus_sign: | The number of times this media item has been skipped. | 1 | -| `subtype` | *Optional[str]* | :heavy_minus_sign: | A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. | clip | -| `last_rated_at` | *Optional[int]* | :heavy_minus_sign: | The Unix timestamp representing the last time the item was rated. | 1721813113 | -| `created_at_accuracy` | *Optional[str]* | :heavy_minus_sign: | The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). | epoch,local | -| `created_at_tz_offset` | *Optional[str]* | :heavy_minus_sign: | The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. | 0 | -| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | -| `user_rating` | *Optional[float]* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | -| `image` | List[[operations.GetMediaMetaDataImage](../../models/operations/getmediametadataimage.md)] | :heavy_minus_sign: | N/A | | -| `ultra_blur_colors` | [Optional[operations.GetMediaMetaDataUltraBlurColors]](../../models/operations/getmediametadataultrablurcolors.md) | :heavy_minus_sign: | N/A | | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | The identifier for the library section. | 1 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | The title of the library section. | Movies | -| `library_section_key` | *Optional[str]* | :heavy_minus_sign: | The key corresponding to the library section. | /library/sections/1 | -| `guids` | List[[operations.GetMediaMetaDataGuids](../../models/operations/getmediametadataguids.md)] | :heavy_minus_sign: | N/A | | -| `media` | List[[operations.GetMediaMetaDataMedia](../../models/operations/getmediametadatamedia.md)] | :heavy_minus_sign: | N/A | | -| `genre` | List[[operations.GetMediaMetaDataGenre](../../models/operations/getmediametadatagenre.md)] | :heavy_minus_sign: | N/A | | -| `country` | List[[operations.GetMediaMetaDataCountry](../../models/operations/getmediametadatacountry.md)] | :heavy_minus_sign: | N/A | | -| `director` | List[[operations.GetMediaMetaDataDirector](../../models/operations/getmediametadatadirector.md)] | :heavy_minus_sign: | N/A | | -| `writer` | List[[operations.GetMediaMetaDataWriter](../../models/operations/getmediametadatawriter.md)] | :heavy_minus_sign: | N/A | | -| `producer` | List[[operations.GetMediaMetaDataProducer](../../models/operations/getmediametadataproducer.md)] | :heavy_minus_sign: | N/A | | -| `role` | List[[operations.GetMediaMetaDataRole](../../models/operations/getmediametadatarole.md)] | :heavy_minus_sign: | N/A | | -| `ratings` | List[[operations.GetMediaMetaDataRatings](../../models/operations/getmediametadataratings.md)] | :heavy_minus_sign: | N/A | | -| `similar` | List[[operations.GetMediaMetaDataSimilar](../../models/operations/getmediametadatasimilar.md)] | :heavy_minus_sign: | N/A | | -| `location` | List[[operations.GetMediaMetaDataLocation](../../models/operations/getmediametadatalocation.md)] | :heavy_minus_sign: | N/A | | -| `chapter` | List[[operations.GetMediaMetaDataChapter](../../models/operations/getmediametadatachapter.md)] | :heavy_minus_sign: | N/A | | -| `marker` | List[[operations.GetMediaMetaDataMarker](../../models/operations/getmediametadatamarker.md)] | :heavy_minus_sign: | N/A | | -| `extras` | [Optional[operations.GetMediaMetaDataExtras]](../../models/operations/getmediametadataextras.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getmediametadataoptimizedforstreaming.md b/docs/models/operations/getmediametadataoptimizedforstreaming.md deleted file mode 100644 index 6a308f5..0000000 --- a/docs/models/operations/getmediametadataoptimizedforstreaming.md +++ /dev/null @@ -1,19 +0,0 @@ -# GetMediaMetaDataOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - -## Supported Types - -### `operations.GetMediaMetaDataOptimizedForStreaming1` - -```python -value: operations.GetMediaMetaDataOptimizedForStreaming1 = /* values here */ -``` - -### `bool` - -```python -value: bool = /* values here */ -``` - diff --git a/docs/models/operations/getmediametadataoptimizedforstreaming1.md b/docs/models/operations/getmediametadataoptimizedforstreaming1.md deleted file mode 100644 index 67a4a97..0000000 --- a/docs/models/operations/getmediametadataoptimizedforstreaming1.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetMediaMetaDataOptimizedForStreaming1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadataoptimizedforstreaminglibrary1.md b/docs/models/operations/getmediametadataoptimizedforstreaminglibrary1.md deleted file mode 100644 index 8287159..0000000 --- a/docs/models/operations/getmediametadataoptimizedforstreaminglibrary1.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetMediaMetaDataOptimizedForStreamingLibrary1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatapart.md b/docs/models/operations/getmediametadatapart.md deleted file mode 100644 index e151075..0000000 --- a/docs/models/operations/getmediametadatapart.md +++ /dev/null @@ -1,23 +0,0 @@ -# GetMediaMetaDataPart - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| `accessible` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the part is accessible. | true | -| `exists` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the part exists. | true | -| `id` | *int* | :heavy_check_mark: | Unique part identifier. | 418385 | -| `key` | *Optional[str]* | :heavy_minus_sign: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | -| `indexes` | *Optional[str]* | :heavy_minus_sign: | N/A | sd | -| `duration` | *Optional[int]* | :heavy_minus_sign: | Duration of the part in milliseconds. | 9610350 | -| `file` | *Optional[str]* | :heavy_minus_sign: | File path for the part. | /mnt/Movies_1/W/Wicked (2024).mkv | -| `size` | *Optional[int]* | :heavy_minus_sign: | File size in bytes. | 30649952104 | -| `packet_length` | *Optional[int]* | :heavy_minus_sign: | N/A | 188 | -| `container` | *Optional[str]* | :heavy_minus_sign: | Container format of the part. | mkv | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | Video profile for the part. | main 10 | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `optimized_for_streaming` | [Optional[operations.GetMediaMetaDataLibraryOptimizedForStreaming]](../../models/operations/getmediametadatalibraryoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true
| | -| `has_thumbnail` | [Optional[operations.GetMediaMetaDataHasThumbnail]](../../models/operations/getmediametadatahasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | -| `stream` | List[[operations.GetMediaMetaDataStream](../../models/operations/getmediametadatastream.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getmediametadataproducer.md b/docs/models/operations/getmediametadataproducer.md deleted file mode 100644 index 29184e3..0000000 --- a/docs/models/operations/getmediametadataproducer.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetMediaMetaDataProducer - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique role identifier. | 109501 | -| `filter_` | *str* | :heavy_check_mark: | The filter string for the role. | actor=109501 | -| `tag` | *str* | :heavy_check_mark: | The actor's name. | Bob Odenkirk | -| `tag_key` | *str* | :heavy_check_mark: | A key associated with the actor tag. | 5d77683254f42c001f8c3f69 | -| `role` | *Optional[str]* | :heavy_minus_sign: | The character name or role. | Jimmy McGill | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | URL for the role thumbnail image. | https://metadata-static.plex.tv/f/people/f2ca7b474cc984efbdd5c503a096285a.jpg | \ No newline at end of file diff --git a/docs/models/operations/getmediametadataratings.md b/docs/models/operations/getmediametadataratings.md deleted file mode 100644 index b4a8912..0000000 --- a/docs/models/operations/getmediametadataratings.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaMetaDataRatings - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| `image` | *str* | :heavy_check_mark: | The image or reference for the rating. | imdb://image.rating | -| `value` | *float* | :heavy_check_mark: | The rating value. | 9 | -| `type` | *str* | :heavy_check_mark: | The type of rating (e.g., audience, critic). | audience | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatarequest.md b/docs/models/operations/getmediametadatarequest.md deleted file mode 100644 index 0354178..0000000 --- a/docs/models/operations/getmediametadatarequest.md +++ /dev/null @@ -1,21 +0,0 @@ -# GetMediaMetaDataRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -| `rating_key` | *str* | :heavy_check_mark: | The id(s) of the library item(s) to return metadata for. Can be a single ID or comma-separated list of IDs. | 21119,21617 | -| `include_concerts` | *Optional[bool]* | :heavy_minus_sign: | Include concerts data if set to true. | true | -| `include_extras` | *Optional[bool]* | :heavy_minus_sign: | Include extra content (e.g. bonus features). | true | -| `include_on_deck` | *Optional[bool]* | :heavy_minus_sign: | Include on-deck items. | true | -| `include_popular_leaves` | *Optional[bool]* | :heavy_minus_sign: | Include popular leaves (episodes/chapters). | true | -| `include_preferences` | *Optional[bool]* | :heavy_minus_sign: | Include preferences information. | true | -| `include_reviews` | *Optional[bool]* | :heavy_minus_sign: | Include reviews for the content. | true | -| `include_chapters` | *Optional[bool]* | :heavy_minus_sign: | Include chapter details. | true | -| `include_stations` | *Optional[bool]* | :heavy_minus_sign: | Include station data. | true | -| `include_external_media` | *Optional[bool]* | :heavy_minus_sign: | Include external media data. | true | -| `async_augment_metadata` | *Optional[bool]* | :heavy_minus_sign: | Trigger asynchronous metadata augmentation. | true | -| `async_check_files` | *Optional[bool]* | :heavy_minus_sign: | Trigger asynchronous file checking. | true | -| `async_refresh_analysis` | *Optional[bool]* | :heavy_minus_sign: | Trigger asynchronous refresh of analysis. | true | -| `async_refresh_local_media_agent` | *Optional[bool]* | :heavy_minus_sign: | Trigger asynchronous refresh of the local media agent. | true | \ No newline at end of file diff --git a/docs/models/operations/getmediametadataresponse.md b/docs/models/operations/getmediametadataresponse.md deleted file mode 100644 index a0d118a..0000000 --- a/docs/models/operations/getmediametadataresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaMetaDataResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetMediaMetaDataResponseBody]](../../models/operations/getmediametadataresponsebody.md) | :heavy_minus_sign: | The metadata of the library item. | \ No newline at end of file diff --git a/docs/models/operations/getmediametadataresponsebody.md b/docs/models/operations/getmediametadataresponsebody.md deleted file mode 100644 index 76711ae..0000000 --- a/docs/models/operations/getmediametadataresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaMetaDataResponseBody - -The metadata of the library item. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetMediaMetaDataMediaContainer]](../../models/operations/getmediametadatamediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatarole.md b/docs/models/operations/getmediametadatarole.md deleted file mode 100644 index 1eb41cc..0000000 --- a/docs/models/operations/getmediametadatarole.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetMediaMetaDataRole - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique identifier for the role.
NOTE: This is different for each Plex server and is not globally unique.
| 126522 | -| `tag` | *str* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | -| `role` | *Optional[str]* | :heavy_minus_sign: | The role played by the actor in the media item. | Self - Judge | -| `filter_` | *str* | :heavy_check_mark: | The filter string used to query this actor. For example, it may indicate that this is an actor with a given key. | actor=126522 | -| `tag_key` | *str* | :heavy_check_mark: | A 24-character hexadecimal unique key associated with the actor's tag, used for internal identification.
NOTE: This is globally unique across all Plex Servers.
| 5d77683d85719b001f3a535e | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatasimilar.md b/docs/models/operations/getmediametadatasimilar.md deleted file mode 100644 index 5afefcf..0000000 --- a/docs/models/operations/getmediametadatasimilar.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaMetaDataSimilar - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique similar item identifier. | 26 | -| `filter_` | *str* | :heavy_check_mark: | The filter string for similar items. | similar=26 | -| `tag` | *str* | :heavy_check_mark: | The tag or title of the similar content. | Breaking Bad | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatastream.md b/docs/models/operations/getmediametadatastream.md deleted file mode 100644 index afcda60..0000000 --- a/docs/models/operations/getmediametadatastream.md +++ /dev/null @@ -1,58 +0,0 @@ -# GetMediaMetaDataStream - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique stream identifier. | 1002625 | -| `stream_type` | *Literal[1]* | :heavy_check_mark: | Stream type:
- VIDEO = 1
- AUDIO = 2
- SUBTITLE = 3
| | -| `format_` | *Optional[str]* | :heavy_minus_sign: | Format of the stream (e.g., srt). | srt | -| `default` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this stream is default. | true | -| `codec` | *Optional[str]* | :heavy_minus_sign: | Codec used by the stream. | hevc | -| `index` | *Optional[int]* | :heavy_minus_sign: | Index of the stream. | 0 | -| `bitrate` | *Optional[int]* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | -| `language` | *Optional[str]* | :heavy_minus_sign: | Language of the stream. | English | -| `language_tag` | *Optional[str]* | :heavy_minus_sign: | Language tag (e.g., en). | en | -| `language_code` | *Optional[str]* | :heavy_minus_sign: | ISO language code. | eng | -| `header_compression` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | -| `dovibl_compat_id` | *Optional[int]* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | -| `dovibl_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | -| `doviel_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | -| `dovi_level` | *Optional[int]* | :heavy_minus_sign: | Dolby Vision level. | 6 | -| `dovi_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | -| `dovi_profile` | *Optional[int]* | :heavy_minus_sign: | Dolby Vision profile. | 8 | -| `dovirpu_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | -| `dovi_version` | *Optional[str]* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | -| `bit_depth` | *Optional[int]* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | -| `chroma_location` | *Optional[str]* | :heavy_minus_sign: | Chroma sample location. | topleft | -| `chroma_subsampling` | *Optional[str]* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | -| `coded_height` | *Optional[int]* | :heavy_minus_sign: | Coded video height. | 1608 | -| `coded_width` | *Optional[int]* | :heavy_minus_sign: | Coded video width. | 3840 | -| `closed_captions` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `color_primaries` | *Optional[str]* | :heavy_minus_sign: | Color primaries used. | bt2020 | -| `color_range` | *Optional[str]* | :heavy_minus_sign: | Color range (e.g., tv). | tv | -| `color_space` | *Optional[str]* | :heavy_minus_sign: | Color space. | bt2020nc | -| `color_trc` | *Optional[str]* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | -| `frame_rate` | *Optional[float]* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | -| `key` | *Optional[str]* | :heavy_minus_sign: | Key to access this stream part. | /library/streams/216389 | -| `height` | *Optional[int]* | :heavy_minus_sign: | Height of the video stream. | 1602 | -| `level` | *Optional[int]* | :heavy_minus_sign: | Video level. | 150 | -| `original` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this is the original stream. | true | -| `has_scaling_matrix` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `profile` | *Optional[str]* | :heavy_minus_sign: | Video profile. | main 10 | -| `scan_type` | *Optional[str]* | :heavy_minus_sign: | N/A | progressive | -| `embedded_in_video` | *Optional[str]* | :heavy_minus_sign: | N/A | progressive | -| `ref_frames` | *Optional[int]* | :heavy_minus_sign: | Number of reference frames. | 1 | -| `width` | *Optional[int]* | :heavy_minus_sign: | Width of the video stream. | 3840 | -| `display_title` | *Optional[str]* | :heavy_minus_sign: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `extended_display_title` | *Optional[str]* | :heavy_minus_sign: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `selected` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | -| `forced` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `channels` | *Optional[int]* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | -| `audio_channel_layout` | *Optional[str]* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | -| `sampling_rate` | *Optional[int]* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | -| `can_auto_sync` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | -| `hearing_impaired` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | -| `dub` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | -| `title` | *Optional[str]* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatatype.md b/docs/models/operations/getmediametadatatype.md deleted file mode 100644 index 921f704..0000000 --- a/docs/models/operations/getmediametadatatype.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetMediaMetaDataType - -The type of media content in the Plex library. This can represent videos, music, or photos. - - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `MOVIE` | movie | -| `TV_SHOW` | show | -| `SEASON` | season | -| `EPISODE` | episode | -| `ARTIST` | artist | -| `ALBUM` | album | -| `TRACK` | track | -| `PHOTO_ALBUM` | photoalbum | -| `PHOTO` | photo | -| `COLLECTION` | collection | \ No newline at end of file diff --git a/docs/models/operations/getmediametadataultrablurcolors.md b/docs/models/operations/getmediametadataultrablurcolors.md deleted file mode 100644 index 1805e89..0000000 --- a/docs/models/operations/getmediametadataultrablurcolors.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaMetaDataUltraBlurColors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `top_left` | *str* | :heavy_check_mark: | N/A | 11333b | -| `top_right` | *str* | :heavy_check_mark: | N/A | 0a232d | -| `bottom_right` | *str* | :heavy_check_mark: | N/A | 73958 | -| `bottom_left` | *str* | :heavy_check_mark: | N/A | 1f5066 | \ No newline at end of file diff --git a/docs/models/operations/getmediametadatawriter.md b/docs/models/operations/getmediametadatawriter.md deleted file mode 100644 index 99f3cd0..0000000 --- a/docs/models/operations/getmediametadatawriter.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaMetaDataWriter - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique identifier for the writer. | 126522 | -| `tag` | *str* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | -| `filter_` | *str* | :heavy_check_mark: | The filter string used to query this writer. | writer=126522 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the writer. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | -| `tag_key` | *Optional[str]* | :heavy_minus_sign: | A 24-character hexadecimal unique key associated with the writer’s tag, used for internal identification. | 5d77683d85719b001f3a535e | \ No newline at end of file diff --git a/docs/models/operations/getmediapartglobals.md b/docs/models/operations/getmediapartglobals.md new file mode 100644 index 0000000..7d8052a --- /dev/null +++ b/docs/models/operations/getmediapartglobals.md @@ -0,0 +1,18 @@ +# GetMediaPartGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getmediapartrequest.md b/docs/models/operations/getmediapartrequest.md new file mode 100644 index 0000000..1632f3f --- /dev/null +++ b/docs/models/operations/getmediapartrequest.md @@ -0,0 +1,22 @@ +# GetMediaPartRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `part_id` | *int* | :heavy_check_mark: | The part id who's index is to be fetched | | +| `changestamp` | *int* | :heavy_check_mark: | The changestamp of the part; used for busting potential caches. Provided in the `key` for the part | | +| `filename` | *str* | :heavy_check_mark: | A generic filename used for a client media stack which relies on the extension in the request. Provided in the `key` for the part | | +| `download` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether this is a file download | 1 | \ No newline at end of file diff --git a/docs/models/operations/getmediapartresponse.md b/docs/models/operations/getmediapartresponse.md new file mode 100644 index 0000000..e508c34 --- /dev/null +++ b/docs/models/operations/getmediapartresponse.md @@ -0,0 +1,11 @@ +# GetMediaPartResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getmediapostersmediacontainer.md b/docs/models/operations/getmediapostersmediacontainer.md deleted file mode 100644 index 070073e..0000000 --- a/docs/models/operations/getmediapostersmediacontainer.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaPostersMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `media_tag_version` | *int* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `media_tag_prefix` | *str* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `identifier` | *str* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `metadata` | List[[operations.GetMediaPostersMetadata](../../models/operations/getmediapostersmetadata.md)] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getmediapostersmetadata.md b/docs/models/operations/getmediapostersmetadata.md deleted file mode 100644 index 6b09200..0000000 --- a/docs/models/operations/getmediapostersmetadata.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMediaPostersMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `key` | *str* | :heavy_check_mark: | The URL of the poster. | https://image.tmdb.org/t/p/original/hntBJjqbv4m0Iyniqaztv9xaudI.jpg | -| `provider` | *Optional[str]* | :heavy_minus_sign: | The provider of the poster. | tmdb | -| `rating_key` | *str* | :heavy_check_mark: | The URL of the poster. | https://image.tmdb.org/t/p/original/hntBJjqbv4m0Iyniqaztv9xaudI.jpg | -| `selected` | *bool* | :heavy_check_mark: | Whether this is the selected poster. | true | -| `thumb` | *str* | :heavy_check_mark: | The URL of the poster thumbnail. | https://images.plex.tv/photo?height=336&width=225&minSize=1&upscale=1&url=https%3A%2F%2Fimage%2Etmdb%2Eorg%2Ft%2Fp%2Foriginal%2FhntBJjqbv4m0Iyniqaztv9xaudI%2Ejpg | \ No newline at end of file diff --git a/docs/models/operations/getmediapostersrequest.md b/docs/models/operations/getmediapostersrequest.md deleted file mode 100644 index e25fa9c..0000000 --- a/docs/models/operations/getmediapostersrequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetMediaPostersRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| `rating_key` | *int* | :heavy_check_mark: | the id of the library item to return the posters of. | 16099 | \ No newline at end of file diff --git a/docs/models/operations/getmediapostersresponse.md b/docs/models/operations/getmediapostersresponse.md deleted file mode 100644 index 1b8f72d..0000000 --- a/docs/models/operations/getmediapostersresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaPostersResponse - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetMediaPostersResponseBody]](../../models/operations/getmediapostersresponsebody.md) | :heavy_minus_sign: | The available posters for the library item. | \ No newline at end of file diff --git a/docs/models/operations/getmediapostersresponsebody.md b/docs/models/operations/getmediapostersresponsebody.md deleted file mode 100644 index cf8ee59..0000000 --- a/docs/models/operations/getmediapostersresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaPostersResponseBody - -The available posters for the library item. - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetMediaPostersMediaContainer]](../../models/operations/getmediapostersmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getmediaprovidersdirectory.md b/docs/models/operations/getmediaprovidersdirectory.md deleted file mode 100644 index 69a834f..0000000 --- a/docs/models/operations/getmediaprovidersdirectory.md +++ /dev/null @@ -1,21 +0,0 @@ -# GetMediaProvidersDirectory - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| `hub_key` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `agent` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `refreshing` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `scanner` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `subtype` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `scanned_at` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `pivot` | List[[operations.Pivot](../../models/operations/pivot.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getmediaprovidersmediacontainer.md b/docs/models/operations/getmediaprovidersmediacontainer.md deleted file mode 100644 index 44ab848..0000000 --- a/docs/models/operations/getmediaprovidersmediacontainer.md +++ /dev/null @@ -1,51 +0,0 @@ -# GetMediaProvidersMediaContainer - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `allow_camera_upload` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `allow_channel_access` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `allow_sharing` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `allow_tuners` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `background_processing` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `certificate` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `companion_proxy` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `country_code` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `diagnostics` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `event_stream` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `friendly_name` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `livetv` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `machine_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `music_analysis` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `my_plex` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `my_plex_mapping_state` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `my_plex_signin_state` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `my_plex_subscription` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `my_plex_username` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `offline_transcode` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `owner_features` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `platform` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `platform_version` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `plugin_host` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `push_notifications` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `read_only_libraries` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `streaming_brain_abr_version` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `streaming_brain_version` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `transcoder_active_video_sessions` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `transcoder_audio` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `transcoder_lyrics` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `transcoder_subtitles` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `transcoder_video` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `transcoder_video_bitrates` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `transcoder_video_qualities` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `transcoder_video_resolutions` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `updater` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `version` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `voice_search` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `media_provider` | List[[operations.MediaProvider](../../models/operations/mediaprovider.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getmediaprovidersrequest.md b/docs/models/operations/getmediaprovidersrequest.md deleted file mode 100644 index 17415f7..0000000 --- a/docs/models/operations/getmediaprovidersrequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetMediaProvidersRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | -| `x_plex_token` | *str* | :heavy_check_mark: | An authentication token, obtained from plex.tv | CV5xoxjTpFKUzBTShsaf | \ No newline at end of file diff --git a/docs/models/operations/getmediaprovidersresponse.md b/docs/models/operations/getmediaprovidersresponse.md deleted file mode 100644 index af28420..0000000 --- a/docs/models/operations/getmediaprovidersresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMediaProvidersResponse - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetMediaProvidersResponseBody]](../../models/operations/getmediaprovidersresponsebody.md) | :heavy_minus_sign: | Media providers and their features | \ No newline at end of file diff --git a/docs/models/operations/getmediaprovidersresponsebody.md b/docs/models/operations/getmediaprovidersresponsebody.md deleted file mode 100644 index d1cbab3..0000000 --- a/docs/models/operations/getmediaprovidersresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMediaProvidersResponseBody - -Media providers and their features - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `media_container` | [Optional[operations.GetMediaProvidersMediaContainer]](../../models/operations/getmediaprovidersmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getmetadatachildrendirectory.md b/docs/models/operations/getmetadatachildrendirectory.md deleted file mode 100644 index dee13f5..0000000 --- a/docs/models/operations/getmetadatachildrendirectory.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetMetadataChildrenDirectory - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 16 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/30072/thumb/1705739923 | -| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 16 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/30072/allLeaves | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | All episodes | \ No newline at end of file diff --git a/docs/models/operations/getmetadatachildrenmediacontainer.md b/docs/models/operations/getmetadatachildrenmediacontainer.md deleted file mode 100644 index 7f32919..0000000 --- a/docs/models/operations/getmetadatachildrenmediacontainer.md +++ /dev/null @@ -1,30 +0,0 @@ -# GetMetadataChildrenMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 3 | -| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/30072/art/1705739923 | -| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | 30072 | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | TV Shows | -| `library_section_uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | 4bb2521c-8ba9-459b-aaee-8ab8bc35eabd | -| `media_tag_prefix` | *Optional[str]* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | -| `media_tag_version` | *Optional[int]* | :heavy_minus_sign: | N/A | 1701731894 | -| `nocache` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `parent_index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `parent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Reacher | -| `parent_year` | *Optional[int]* | :heavy_minus_sign: | N/A | 2022 | -| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | When retired Military Police Officer Jack Reacher is arrested for a murder he did not commit, he finds himself in the middle of a deadly conspiracy full of dirty cops, shady businessmen, and scheming politicians. With nothing but his wits, he must figure out what is happening in Margrave, Georgia. | -| `theme` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/30072/theme/1705739923 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/30072/thumb/1705739923 | -| `title1` | *Optional[str]* | :heavy_minus_sign: | N/A | TV Shows | -| `title2` | *Optional[str]* | :heavy_minus_sign: | N/A | Reacher | -| `view_group` | *Optional[str]* | :heavy_minus_sign: | N/A | season | -| `view_mode` | *Optional[int]* | :heavy_minus_sign: | N/A | 65593 | -| `directory` | List[[operations.GetMetadataChildrenDirectory](../../models/operations/getmetadatachildrendirectory.md)] | :heavy_minus_sign: | N/A | [
{
"leafCount": 16,
"thumb": "/library/metadata/30072/thumb/1705739923",
"viewedLeafCount": 16,
"key": "/library/metadata/30072/allLeaves",
"title": "All episodes"
}
] | -| `metadata` | List[[operations.GetMetadataChildrenMetadata](../../models/operations/getmetadatachildrenmetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getmetadatachildrenmetadata.md b/docs/models/operations/getmetadatachildrenmetadata.md deleted file mode 100644 index d65dd9d..0000000 --- a/docs/models/operations/getmetadatachildrenmetadata.md +++ /dev/null @@ -1,34 +0,0 @@ -# GetMetadataChildrenMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 66488 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66488/children | -| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 30072 | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://season/652aea6549508477c34c6000 | -| `parent_guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://show/5d9c09190aaccd001f8f42f0 | -| `parent_studio` | *Optional[str]* | :heavy_minus_sign: | N/A | Amazon Studios | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | season | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Season 2 | -| `parent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/30072 | -| `parent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Reacher | -| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | Based on"Bad Luck and Trouble," when members of Reacher's old military unit start turning up dead, Reacher has just one thing on his mind-revenge. | -| `index` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | -| `parent_index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `view_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 11 | -| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705646565 | -| `parent_year` | *Optional[int]* | :heavy_minus_sign: | N/A | 2022 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/66488/thumb/1703065033 | -| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/30072/art/1705739923 | -| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/30072/thumb/1705739923 | -| `parent_theme` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/30072/theme/1705739923 | -| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 8 | -| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 8 | -| `added_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1702602021 | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1703065033 | -| `user_rating` | *Optional[int]* | :heavy_minus_sign: | N/A | 9 | -| `skip_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `last_rated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1703881224 | \ No newline at end of file diff --git a/docs/models/operations/getmetadatachildrenrequest.md b/docs/models/operations/getmetadatachildrenrequest.md deleted file mode 100644 index 56e29d9..0000000 --- a/docs/models/operations/getmetadatachildrenrequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetMetadataChildrenRequest - - -## Fields - -| Field | Type | Required | Description | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `rating_key` | *float* | :heavy_check_mark: | the id of the library item to return the children of. | -| `include_elements` | *Optional[str]* | :heavy_minus_sign: | Adds additional elements to the response. Supported types are (Stream)
| \ No newline at end of file diff --git a/docs/models/operations/getmetadatachildrenresponse.md b/docs/models/operations/getmetadatachildrenresponse.md deleted file mode 100644 index 2397b6e..0000000 --- a/docs/models/operations/getmetadatachildrenresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMetadataChildrenResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetMetadataChildrenResponseBody]](../../models/operations/getmetadatachildrenresponsebody.md) | :heavy_minus_sign: | The children of the library item. | \ No newline at end of file diff --git a/docs/models/operations/getmetadatachildrenresponsebody.md b/docs/models/operations/getmetadatachildrenresponsebody.md deleted file mode 100644 index 3788390..0000000 --- a/docs/models/operations/getmetadatachildrenresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMetadataChildrenResponseBody - -The children of the library item. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetMetadataChildrenMediaContainer]](../../models/operations/getmetadatachildrenmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getmetadatahubsglobals.md b/docs/models/operations/getmetadatahubsglobals.md new file mode 100644 index 0000000..3084bff --- /dev/null +++ b/docs/models/operations/getmetadatahubsglobals.md @@ -0,0 +1,18 @@ +# GetMetadataHubsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getmetadatahubsrequest.md b/docs/models/operations/getmetadatahubsrequest.md new file mode 100644 index 0000000..25e3743 --- /dev/null +++ b/docs/models/operations/getmetadatahubsrequest.md @@ -0,0 +1,21 @@ +# GetMetadataHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `metadata_id` | *int* | :heavy_check_mark: | The metadata ID for the hubs to fetch | | +| `count` | *Optional[int]* | :heavy_minus_sign: | Limit results to count items | | +| `only_transient` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added) | 1 | \ No newline at end of file diff --git a/docs/models/operations/getmetadatahubsresponse.md b/docs/models/operations/getmetadatahubsresponse.md new file mode 100644 index 0000000..88420b5 --- /dev/null +++ b/docs/models/operations/getmetadatahubsresponse.md @@ -0,0 +1,12 @@ +# GetMetadataHubsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_hubs` | [Optional[components.MediaContainerWithHubs]](../../models/components/mediacontainerwithhubs.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getmetadataitemglobals.md b/docs/models/operations/getmetadataitemglobals.md new file mode 100644 index 0000000..4dff610 --- /dev/null +++ b/docs/models/operations/getmetadataitemglobals.md @@ -0,0 +1,18 @@ +# GetMetadataItemGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getmetadataitemrequest.md b/docs/models/operations/getmetadataitemrequest.md new file mode 100644 index 0000000..412b65f --- /dev/null +++ b/docs/models/operations/getmetadataitemrequest.md @@ -0,0 +1,27 @@ +# GetMetadataItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | List[*str*] | :heavy_check_mark: | N/A | | +| `async_check_files` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Determines if file check should be performed asynchronously. An activity is created to indicate progress. Default is false. | 1 | +| `async_refresh_local_media_agent` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Determines if local media agent refresh should be performed asynchronously. An activity is created to indicate progress. Default is false. | 1 | +| `async_refresh_analysis` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Determines if analysis refresh should be performed asynchronously. An activity is created to indicate progress. Default is false. | 1 | +| `check_files` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Determines if file check should be performed synchronously. Specifying `asyncCheckFiles` will cause this option to be ignored. Default is false. | 1 | +| `skip_refresh` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Determines if synchronous local media agent and analysis refresh should be skipped. Specifying async versions will cause synchronous versions to be skipped. Default is false. | 1 | +| `check_file_availability` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Determines if file existence check should be performed synchronously. Specifying `checkFiles` will imply this option. Default is false. | 1 | +| `async_augment_metadata` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Add metadata augmentations. An activity is created to indicate progress. Option will be ignored if specified by non-admin or if multiple metadata items are requested. Default is false. | 1 | +| `augment_count` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Number of augmentations to add. Requires `asyncAugmentMetadata` to be specified. | 1 | \ No newline at end of file diff --git a/docs/models/operations/getmetadataitemresponse.md b/docs/models/operations/getmetadataitemresponse.md new file mode 100644 index 0000000..a3fe7c1 --- /dev/null +++ b/docs/models/operations/getmetadataitemresponse.md @@ -0,0 +1,12 @@ +# GetMetadataItemResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getmyplexaccountresponse.md b/docs/models/operations/getmyplexaccountresponse.md deleted file mode 100644 index 2e714cf..0000000 --- a/docs/models/operations/getmyplexaccountresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetMyPlexAccountResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetMyPlexAccountResponseBody]](../../models/operations/getmyplexaccountresponsebody.md) | :heavy_minus_sign: | MyPlex Account | \ No newline at end of file diff --git a/docs/models/operations/getmyplexaccountresponsebody.md b/docs/models/operations/getmyplexaccountresponsebody.md deleted file mode 100644 index 6d8c8bc..0000000 --- a/docs/models/operations/getmyplexaccountresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetMyPlexAccountResponseBody - -MyPlex Account - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| `my_plex` | [Optional[operations.MyPlex]](../../models/operations/myplex.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getnotificationsglobals.md b/docs/models/operations/getnotificationsglobals.md new file mode 100644 index 0000000..51fec24 --- /dev/null +++ b/docs/models/operations/getnotificationsglobals.md @@ -0,0 +1,18 @@ +# GetNotificationsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getnotificationsrequest.md b/docs/models/operations/getnotificationsrequest.md new file mode 100644 index 0000000..c9b60ea --- /dev/null +++ b/docs/models/operations/getnotificationsrequest.md @@ -0,0 +1,19 @@ +# GetNotificationsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `filter_` | List[*str*] | :heavy_minus_sign: | By default, all events except logs are sent. A rich filtering mechanism is provided to allow clients to opt into or out of each event type using the `filters` parameter. For example:

- `filters=-log`: All event types except logs (the default).
- `filters=foo,bar`: Only the foo and bar event types.
- `filters=`: All events types.
- `filters=-foo,bar`: All event types except foo and bar.
| | \ No newline at end of file diff --git a/docs/models/operations/getnotificationsresponse.md b/docs/models/operations/getnotificationsresponse.md new file mode 100644 index 0000000..b09b61e --- /dev/null +++ b/docs/models/operations/getnotificationsresponse.md @@ -0,0 +1,11 @@ +# GetNotificationsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getpartindexglobals.md b/docs/models/operations/getpartindexglobals.md new file mode 100644 index 0000000..33df90e --- /dev/null +++ b/docs/models/operations/getpartindexglobals.md @@ -0,0 +1,18 @@ +# GetPartIndexGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getpartindexrequest.md b/docs/models/operations/getpartindexrequest.md new file mode 100644 index 0000000..6cb9966 --- /dev/null +++ b/docs/models/operations/getpartindexrequest.md @@ -0,0 +1,21 @@ +# GetPartIndexRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `part_id` | *int* | :heavy_check_mark: | The part id who's index is to be fetched | | +| `index` | [operations.Index](../../models/operations/index.md) | :heavy_check_mark: | The type of index to grab. | | +| `interval` | *Optional[int]* | :heavy_minus_sign: | The interval between images to return in ms. | | \ No newline at end of file diff --git a/docs/models/operations/getpartindexresponse.md b/docs/models/operations/getpartindexresponse.md new file mode 100644 index 0000000..0159594 --- /dev/null +++ b/docs/models/operations/getpartindexresponse.md @@ -0,0 +1,11 @@ +# GetPartIndexResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getpersonglobals.md b/docs/models/operations/getpersonglobals.md new file mode 100644 index 0000000..0921eb0 --- /dev/null +++ b/docs/models/operations/getpersonglobals.md @@ -0,0 +1,18 @@ +# GetPersonGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getpersonmediacontainer.md b/docs/models/operations/getpersonmediacontainer.md new file mode 100644 index 0000000..73a1ef4 --- /dev/null +++ b/docs/models/operations/getpersonmediacontainer.md @@ -0,0 +1,17 @@ +# GetPersonMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `directory` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getpersonrequest.md b/docs/models/operations/getpersonrequest.md new file mode 100644 index 0000000..ecedc61 --- /dev/null +++ b/docs/models/operations/getpersonrequest.md @@ -0,0 +1,19 @@ +# GetPersonRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `person_id` | *str* | :heavy_check_mark: | Either the PMS tag `id` of the person or `tagKey` of the actor. Note the `tagKey` is the hex portion of the plex guid for the actor | | \ No newline at end of file diff --git a/docs/models/operations/getpersonresponse.md b/docs/models/operations/getpersonresponse.md new file mode 100644 index 0000000..7883bdf --- /dev/null +++ b/docs/models/operations/getpersonresponse.md @@ -0,0 +1,11 @@ +# GetPersonResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetPersonResponseBody]](../../models/operations/getpersonresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getpersonresponsebody.md b/docs/models/operations/getpersonresponsebody.md new file mode 100644 index 0000000..22ac532 --- /dev/null +++ b/docs/models/operations/getpersonresponsebody.md @@ -0,0 +1,10 @@ +# GetPersonResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetPersonMediaContainer]](../../models/operations/getpersonmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getpinauthpincontainer.md b/docs/models/operations/getpinauthpincontainer.md deleted file mode 100644 index 6101abd..0000000 --- a/docs/models/operations/getpinauthpincontainer.md +++ /dev/null @@ -1,21 +0,0 @@ -# GetPinAuthPinContainer - -Requests a new pin id used in the authentication flow - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | N/A | 308667304 | -| `code` | *str* | :heavy_check_mark: | N/A | 7RQZ | -| `product` | *str* | :heavy_check_mark: | N/A | Tautulli | -| `trusted` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `qr` | *str* | :heavy_check_mark: | N/A | https://plex.tv/api/v2/pins/qr/7RQZ | -| `client_identifier` | *str* | :heavy_check_mark: | The X-Client-Identifier used in the request | Tautulli | -| `location` | [operations.GeoData](../../models/operations/geodata.md) | :heavy_check_mark: | Geo location data | {
"code": "VI",
"continent_code": "NA",
"country": "United States Virgin Islands",
"city": "Amsterdam",
"european_union_member": true,
"time_zone": "America/St_Thomas",
"postal_code": 802,
"in_privacy_restricted_country": true,
"in_privacy_restricted_region": true,
"subdivisions": "Saint Thomas",
"coordinates": "18.3381, -64.8941"
} | -| `expires_in` | *Optional[int]* | :heavy_minus_sign: | The number of seconds this pin expires, by default 900 seconds | 876 | -| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | N/A | 2024-07-16T17:03:05Z | -| `expires_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | N/A | 2024-07-16T17:18:05Z | -| `auth_token` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | gcgzw5rz2xovp84b4vha3a40 | -| `new_registration` | *OptionalNullable[Any]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getpinrequest.md b/docs/models/operations/getpinrequest.md deleted file mode 100644 index 123f952..0000000 --- a/docs/models/operations/getpinrequest.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetPinRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| `strong` | *Optional[bool]* | :heavy_minus_sign: | Determines the kind of code returned by the API call
Strong codes are used for Pin authentication flows
Non-Strong codes are used for `Plex.tv/link`
| | -| `client_id` | *str* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | -| `client_name` | *Optional[str]* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku | -| `device_nickname` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `client_version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application. | 2.4.1 | -| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client application. | Roku | \ No newline at end of file diff --git a/docs/models/operations/getpinresponse.md b/docs/models/operations/getpinresponse.md deleted file mode 100644 index 628bb01..0000000 --- a/docs/models/operations/getpinresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPinResponse - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | | -| `auth_pin_container` | [Optional[operations.GetPinAuthPinContainer]](../../models/operations/getpinauthpincontainer.md) | :heavy_minus_sign: | Requests a new pin id used in the authentication flow | {
"id": 308667304,
"code": "7RQZ",
"product": "0",
"trusted": false,
"qr": "https://plex.tv/api/v2/pins/qr/7RQZ",
"clientIdentifier": "string",
"location": {
"code": "VI",
"continent_code": "NA",
"country": "United States Virgin Islands",
"city": "Amsterdam",
"european_union_member": true,
"time_zone": "America/St_Thomas",
"postal_code": 802,
"in_privacy_restricted_country": true,
"in_privacy_restricted_region": true,
"subdivisions": "Saint Thomas",
"coordinates": "18.3381, -64.8941"
},
"expiresIn": 876,
"createdAt": "2024-07-16T17:03:05Z",
"expiresAt": "2024-07-16T17:18:05Z",
"authToken": null,
"newRegistration": null
} | \ No newline at end of file diff --git a/docs/models/operations/getplaylistcontentscountry.md b/docs/models/operations/getplaylistcontentscountry.md deleted file mode 100644 index 121737c..0000000 --- a/docs/models/operations/getplaylistcontentscountry.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetPlaylistContentsCountry - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | United States of America | \ No newline at end of file diff --git a/docs/models/operations/getplaylistcontentsdirector.md b/docs/models/operations/getplaylistcontentsdirector.md deleted file mode 100644 index 7f0a228..0000000 --- a/docs/models/operations/getplaylistcontentsdirector.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetPlaylistContentsDirector - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Joss Whedon | \ No newline at end of file diff --git a/docs/models/operations/getplaylistcontentsgenre.md b/docs/models/operations/getplaylistcontentsgenre.md deleted file mode 100644 index 47acf28..0000000 --- a/docs/models/operations/getplaylistcontentsgenre.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetPlaylistContentsGenre - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Action | \ No newline at end of file diff --git a/docs/models/operations/getplaylistcontentsmedia.md b/docs/models/operations/getplaylistcontentsmedia.md deleted file mode 100644 index 564ba12..0000000 --- a/docs/models/operations/getplaylistcontentsmedia.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetPlaylistContentsMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 15 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 141416 | -| `bitrate` | *Optional[int]* | :heavy_minus_sign: | N/A | 2273 | -| `width` | *Optional[int]* | :heavy_minus_sign: | N/A | 1920 | -| `height` | *Optional[int]* | :heavy_minus_sign: | N/A | 814 | -| `aspect_ratio` | *Optional[float]* | :heavy_minus_sign: | N/A | 2.35 | -| `audio_channels` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | -| `audio_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | aac | -| `video_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | h264 | -| `video_resolution` | *Optional[str]* | :heavy_minus_sign: | N/A | 1080 | -| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mp4 | -| `video_frame_rate` | *Optional[str]* | :heavy_minus_sign: | N/A | 24p | -| `optimized_for_streaming` | *Optional[int]* | :heavy_minus_sign: | N/A | 0 | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | lc | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | high | -| `part` | List[[operations.GetPlaylistContentsPart](../../models/operations/getplaylistcontentspart.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getplaylistcontentsmediacontainer.md b/docs/models/operations/getplaylistcontentsmediacontainer.md deleted file mode 100644 index 61a6ef6..0000000 --- a/docs/models/operations/getplaylistcontentsmediacontainer.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetPlaylistContentsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | -| `composite` | *Optional[str]* | :heavy_minus_sign: | N/A | /playlists/95/composite/1705717521 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 282 | -| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | -| `playlist_type` | *Optional[str]* | :heavy_minus_sign: | N/A | video | -| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 95 | -| `smart` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Smart Movie Playlist | -| `metadata` | List[[operations.GetPlaylistContentsMetadata](../../models/operations/getplaylistcontentsmetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getplaylistcontentsmetadata.md b/docs/models/operations/getplaylistcontentsmetadata.md deleted file mode 100644 index 1161246..0000000 --- a/docs/models/operations/getplaylistcontentsmetadata.md +++ /dev/null @@ -1,39 +0,0 @@ -# GetPlaylistContentsMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 17 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/17 | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://movie/5d77683f6f4521001ea9dc53 | -| `studio` | *Optional[str]* | :heavy_minus_sign: | N/A | Universal Pictures | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | movie | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Serenity | -| `title_sort` | *Optional[str]* | :heavy_minus_sign: | N/A | Amazing Spider-Man 2 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Movies | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `library_section_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/1 | -| `content_rating` | *Optional[str]* | :heavy_minus_sign: | N/A | PG-13 | -| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | Serenity continues the story of the TV series it was based upon ("Firefly"). River Tam had a secret - one in which she's not even aware - so dangerous, no one's safe, as an Alliance operative's sent to capture her, and all others are considered irrelevant to his job. | -| `rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 8.2 | -| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 9.1 | -| `year` | *Optional[int]* | :heavy_minus_sign: | N/A | 2005 | -| `tagline` | *Optional[str]* | :heavy_minus_sign: | N/A | They aim to misbehave. | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/17/thumb/1705637165 | -| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/17/art/1705637165 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 141416 | -| `originally_available_at` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | N/A | 2005-09-29 00:00:00 +0000 UTC | -| `added_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705637164 | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705637165 | -| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | -| `has_premium_extras` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | -| `has_premium_primary_extra` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | -| `rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.ripe | -| `media` | List[[operations.GetPlaylistContentsMedia](../../models/operations/getplaylistcontentsmedia.md)] | :heavy_minus_sign: | N/A | | -| `genre` | List[[operations.GetPlaylistContentsGenre](../../models/operations/getplaylistcontentsgenre.md)] | :heavy_minus_sign: | N/A | | -| `country` | List[[operations.GetPlaylistContentsCountry](../../models/operations/getplaylistcontentscountry.md)] | :heavy_minus_sign: | N/A | | -| `director` | List[[operations.GetPlaylistContentsDirector](../../models/operations/getplaylistcontentsdirector.md)] | :heavy_minus_sign: | N/A | | -| `writer` | List[[operations.GetPlaylistContentsWriter](../../models/operations/getplaylistcontentswriter.md)] | :heavy_minus_sign: | N/A | | -| `role` | List[[operations.GetPlaylistContentsRole](../../models/operations/getplaylistcontentsrole.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getplaylistcontentspart.md b/docs/models/operations/getplaylistcontentspart.md deleted file mode 100644 index f65861f..0000000 --- a/docs/models/operations/getplaylistcontentspart.md +++ /dev/null @@ -1,17 +0,0 @@ -# GetPlaylistContentsPart - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | -| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 15 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/parts/15/1705637151/file.mp4 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 141416 | -| `file` | *Optional[str]* | :heavy_minus_sign: | N/A | /movies/Serenity (2005)/Serenity (2005).mp4 | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 40271948 | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | lc | -| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mp4 | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `optimized_for_streaming` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | high | \ No newline at end of file diff --git a/docs/models/operations/getplaylistcontentsqueryparamtype.md b/docs/models/operations/getplaylistcontentsqueryparamtype.md deleted file mode 100644 index defd540..0000000 --- a/docs/models/operations/getplaylistcontentsqueryparamtype.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetPlaylistContentsQueryParamType - -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `MOVIE` | 1 | -| `TV_SHOW` | 2 | -| `SEASON` | 3 | -| `EPISODE` | 4 | -| `ARTIST` | 5 | -| `ALBUM` | 6 | -| `TRACK` | 7 | -| `PHOTO_ALBUM` | 8 | -| `PHOTO` | 9 | \ No newline at end of file diff --git a/docs/models/operations/getplaylistcontentsrequest.md b/docs/models/operations/getplaylistcontentsrequest.md deleted file mode 100644 index 8c7092b..0000000 --- a/docs/models/operations/getplaylistcontentsrequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetPlaylistContentsRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `playlist_id` | *float* | :heavy_check_mark: | the ID of the playlist | | -| `type` | [operations.GetPlaylistContentsQueryParamType](../../models/operations/getplaylistcontentsqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | \ No newline at end of file diff --git a/docs/models/operations/getplaylistcontentsresponse.md b/docs/models/operations/getplaylistcontentsresponse.md deleted file mode 100644 index d3159b4..0000000 --- a/docs/models/operations/getplaylistcontentsresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPlaylistContentsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetPlaylistContentsResponseBody]](../../models/operations/getplaylistcontentsresponsebody.md) | :heavy_minus_sign: | The playlist contents | \ No newline at end of file diff --git a/docs/models/operations/getplaylistcontentsresponsebody.md b/docs/models/operations/getplaylistcontentsresponsebody.md deleted file mode 100644 index dbe6fb9..0000000 --- a/docs/models/operations/getplaylistcontentsresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistContentsResponseBody - -The playlist contents - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetPlaylistContentsMediaContainer]](../../models/operations/getplaylistcontentsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getplaylistcontentsrole.md b/docs/models/operations/getplaylistcontentsrole.md deleted file mode 100644 index a3ecea1..0000000 --- a/docs/models/operations/getplaylistcontentsrole.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetPlaylistContentsRole - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Gina Torres | \ No newline at end of file diff --git a/docs/models/operations/getplaylistcontentswriter.md b/docs/models/operations/getplaylistcontentswriter.md deleted file mode 100644 index c57cdb7..0000000 --- a/docs/models/operations/getplaylistcontentswriter.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetPlaylistContentsWriter - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Joss Whedon | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratordevice.md b/docs/models/operations/getplaylistgeneratordevice.md new file mode 100644 index 0000000..461d305 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratordevice.md @@ -0,0 +1,8 @@ +# GetPlaylistGeneratorDevice + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `profile` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratorglobals.md b/docs/models/operations/getplaylistgeneratorglobals.md new file mode 100644 index 0000000..7720261 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratorglobals.md @@ -0,0 +1,18 @@ +# GetPlaylistGeneratorGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratoritem.md b/docs/models/operations/getplaylistgeneratoritem.md new file mode 100644 index 0000000..76ab753 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratoritem.md @@ -0,0 +1,18 @@ +# GetPlaylistGeneratorItem + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `composite` | *Optional[str]* | :heavy_minus_sign: | The composite thumbnail image path | +| `device` | [Optional[operations.GetPlaylistGeneratorDevice]](../../models/operations/getplaylistgeneratordevice.md) | :heavy_minus_sign: | N/A | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `location` | [Optional[operations.GetPlaylistGeneratorLocation]](../../models/operations/getplaylistgeneratorlocation.md) | :heavy_minus_sign: | N/A | +| `media_settings` | [Optional[operations.MediaSettings]](../../models/operations/mediasettings.md) | :heavy_minus_sign: | N/A | +| `policy` | [Optional[operations.GetPlaylistGeneratorPolicy]](../../models/operations/getplaylistgeneratorpolicy.md) | :heavy_minus_sign: | N/A | +| `status` | [Optional[operations.GetPlaylistGeneratorStatus]](../../models/operations/getplaylistgeneratorstatus.md) | :heavy_minus_sign: | N/A | +| `target` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `target_tag_id` | *Optional[int]* | :heavy_minus_sign: | The tag of this generator's settings | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | [Optional[operations.GetPlaylistGeneratorType]](../../models/operations/getplaylistgeneratortype.md) | :heavy_minus_sign: | The type of this generator | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratoritemsglobals.md b/docs/models/operations/getplaylistgeneratoritemsglobals.md new file mode 100644 index 0000000..7b37db2 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratoritemsglobals.md @@ -0,0 +1,18 @@ +# GetPlaylistGeneratorItemsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratoritemsmediacontainer.md b/docs/models/operations/getplaylistgeneratoritemsmediacontainer.md new file mode 100644 index 0000000..262a8c4 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratoritemsmediacontainer.md @@ -0,0 +1,17 @@ +# GetPlaylistGeneratorItemsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `metadata` | [Optional[operations.GetPlaylistGeneratorItemsMetadata]](../../models/operations/getplaylistgeneratoritemsmetadata.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratoritemsmetadata.md b/docs/models/operations/getplaylistgeneratoritemsmetadata.md new file mode 100644 index 0000000..f476c7a --- /dev/null +++ b/docs/models/operations/getplaylistgeneratoritemsmetadata.md @@ -0,0 +1,84 @@ +# GetPlaylistGeneratorItemsMetadata + +Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + +Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + +Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show. + + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `title` | *Optional[Any]* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | +| `type` | *Optional[Any]* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | +| `absolute_index` | *Optional[int]* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | +| `added_at` | *Optional[int]* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | +| `art` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | +| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | +| `audience_rating_image` | *Optional[Any]* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | +| `autotag` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `banner` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | +| `chapter_source` | *Optional[Any]* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | +| `composite` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | +| `content_rating` | *Optional[Any]* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | +| `country` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `director` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `duration` | *Optional[int]* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | +| `filter_` | List[[components.Filter](../../models/components/filter_.md)] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `genre` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | The `art` of the grandparent | +| `grandparent_hero` | *Optional[str]* | :heavy_minus_sign: | The `hero` of the grandparent | +| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | The `key` of the grandparent | +| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The `ratingKey` of the grandparent | +| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | The `theme` of the grandparent | +| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | The `thumb` of the grandparent | +| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | The `title` of the grandparent | +| `guid` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `hero` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | +| `image` | List[[components.Image](../../models/components/image.md)] | :heavy_minus_sign: | N/A | +| `index` | *Optional[int]* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | +| `key` | *Optional[Any]* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | +| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | +| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | +| `media` | List[[components.Media](../../models/components/media.md)] | :heavy_minus_sign: | N/A | +| `originally_available_at` | *Optional[Any]* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | +| `original_title` | *Optional[Any]* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | +| `parent_hero` | *Optional[str]* | :heavy_minus_sign: | The `hero` of the parent | +| `parent_index` | *Optional[int]* | :heavy_minus_sign: | The `index` of the parent | +| `parent_key` | *Optional[str]* | :heavy_minus_sign: | The `key` of the parent | +| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The `ratingKey` of the parent | +| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | The `thumb` of the parent | +| `parent_title` | *Optional[str]* | :heavy_minus_sign: | The `title` of the parent | +| `primary_extra_key` | *Optional[Any]* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | +| `prompt` | *Optional[str]* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | +| `rating` | *Optional[float]* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | +| `rating_array` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `rating_count` | *Optional[int]* | :heavy_minus_sign: | Number of ratings under this metadata | +| `rating_image` | *Optional[Any]* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | +| `rating_key` | *Optional[Any]* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | +| `role` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `search` | *Optional[bool]* | :heavy_minus_sign: | Indicates this is a search directory | +| `secondary` | *Optional[bool]* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | +| `skip_children` | *Optional[bool]* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | +| `skip_parent` | *Optional[bool]* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | +| `sort` | List[[components.Sort](../../models/components/sort.md)] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `studio` | *Optional[Any]* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | +| `subtype` | *Optional[Any]* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | +| `summary` | *Optional[Any]* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | +| `tagline` | *Optional[Any]* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | +| `theme` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | +| `thumb` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | +| `title_sort` | *Optional[Any]* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | +| `user_rating` | *Optional[float]* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | +| `view_count` | *Optional[int]* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | +| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | +| `view_offset` | *Optional[int]* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | +| `writer` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `year` | *Optional[int]* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | +| `processing_state` | [Optional[operations.ProcessingState]](../../models/operations/processingstate.md) | :heavy_minus_sign: | The state of processing if this generator is part of an optimizer playlist | +| `processing_state_context` | [Optional[operations.ProcessingStateContext]](../../models/operations/processingstatecontext.md) | :heavy_minus_sign: | The error which could have occurred (or `good`) | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratoritemsrequest.md b/docs/models/operations/getplaylistgeneratoritemsrequest.md new file mode 100644 index 0000000..4f4d3d3 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratoritemsrequest.md @@ -0,0 +1,20 @@ +# GetPlaylistGeneratorItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `playlist_id` | *int* | :heavy_check_mark: | The ID of the playlist | | +| `generator_id` | *int* | :heavy_check_mark: | The generator item ID to delete. | | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratoritemsresponse.md b/docs/models/operations/getplaylistgeneratoritemsresponse.md new file mode 100644 index 0000000..6823e20 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratoritemsresponse.md @@ -0,0 +1,11 @@ +# GetPlaylistGeneratorItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetPlaylistGeneratorItemsResponseBody]](../../models/operations/getplaylistgeneratoritemsresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratoritemsresponsebody.md b/docs/models/operations/getplaylistgeneratoritemsresponsebody.md new file mode 100644 index 0000000..0ada7d3 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratoritemsresponsebody.md @@ -0,0 +1,10 @@ +# GetPlaylistGeneratorItemsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetPlaylistGeneratorItemsMediaContainer]](../../models/operations/getplaylistgeneratoritemsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratorlocation.md b/docs/models/operations/getplaylistgeneratorlocation.md new file mode 100644 index 0000000..419c1ba --- /dev/null +++ b/docs/models/operations/getplaylistgeneratorlocation.md @@ -0,0 +1,9 @@ +# GetPlaylistGeneratorLocation + + +## Fields + +| Field | Type | Required | Description | +| -------------------- | -------------------- | -------------------- | -------------------- | +| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `uri` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratormediacontainer.md b/docs/models/operations/getplaylistgeneratormediacontainer.md new file mode 100644 index 0000000..078e285 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratormediacontainer.md @@ -0,0 +1,17 @@ +# GetPlaylistGeneratorMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `item` | List[[operations.GetPlaylistGeneratorItem](../../models/operations/getplaylistgeneratoritem.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratorpolicy.md b/docs/models/operations/getplaylistgeneratorpolicy.md new file mode 100644 index 0000000..ee41f09 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratorpolicy.md @@ -0,0 +1,10 @@ +# GetPlaylistGeneratorPolicy + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `scope` | [Optional[operations.GetPlaylistGeneratorScope]](../../models/operations/getplaylistgeneratorscope.md) | :heavy_minus_sign: | N/A | +| `unwatched` | *Optional[bool]* | :heavy_minus_sign: | True if only unwatched items are optimized | +| `value` | *Optional[int]* | :heavy_minus_sign: | If the scope is count, the number of items to optimize | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratorrequest.md b/docs/models/operations/getplaylistgeneratorrequest.md new file mode 100644 index 0000000..f253a9d --- /dev/null +++ b/docs/models/operations/getplaylistgeneratorrequest.md @@ -0,0 +1,20 @@ +# GetPlaylistGeneratorRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `playlist_id` | *int* | :heavy_check_mark: | The ID of the playlist | | +| `generator_id` | *int* | :heavy_check_mark: | The generator item ID to delete. | | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratorresponse.md b/docs/models/operations/getplaylistgeneratorresponse.md new file mode 100644 index 0000000..2d75991 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratorresponse.md @@ -0,0 +1,11 @@ +# GetPlaylistGeneratorResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetPlaylistGeneratorResponseBody]](../../models/operations/getplaylistgeneratorresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratorresponsebody.md b/docs/models/operations/getplaylistgeneratorresponsebody.md new file mode 100644 index 0000000..a12db33 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratorresponsebody.md @@ -0,0 +1,10 @@ +# GetPlaylistGeneratorResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.GetPlaylistGeneratorMediaContainer]](../../models/operations/getplaylistgeneratormediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratorscope.md b/docs/models/operations/getplaylistgeneratorscope.md new file mode 100644 index 0000000..cf338e9 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratorscope.md @@ -0,0 +1,9 @@ +# GetPlaylistGeneratorScope + + +## Values + +| Name | Value | +| ------- | ------- | +| `ALL` | all | +| `COUNT` | count | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratorsglobals.md b/docs/models/operations/getplaylistgeneratorsglobals.md new file mode 100644 index 0000000..dba6862 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratorsglobals.md @@ -0,0 +1,18 @@ +# GetPlaylistGeneratorsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratorsmediacontainer.md b/docs/models/operations/getplaylistgeneratorsmediacontainer.md new file mode 100644 index 0000000..a5e40cf --- /dev/null +++ b/docs/models/operations/getplaylistgeneratorsmediacontainer.md @@ -0,0 +1,17 @@ +# GetPlaylistGeneratorsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `play_queue_generator` | List[[operations.PlayQueueGenerator](../../models/operations/playqueuegenerator.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratorsrequest.md b/docs/models/operations/getplaylistgeneratorsrequest.md new file mode 100644 index 0000000..f7c81a2 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratorsrequest.md @@ -0,0 +1,19 @@ +# GetPlaylistGeneratorsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `playlist_id` | *int* | :heavy_check_mark: | The ID of the playlist | | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratorsresponse.md b/docs/models/operations/getplaylistgeneratorsresponse.md new file mode 100644 index 0000000..bcec6dd --- /dev/null +++ b/docs/models/operations/getplaylistgeneratorsresponse.md @@ -0,0 +1,11 @@ +# GetPlaylistGeneratorsResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetPlaylistGeneratorsResponseBody]](../../models/operations/getplaylistgeneratorsresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratorsresponsebody.md b/docs/models/operations/getplaylistgeneratorsresponsebody.md new file mode 100644 index 0000000..0500ade --- /dev/null +++ b/docs/models/operations/getplaylistgeneratorsresponsebody.md @@ -0,0 +1,10 @@ +# GetPlaylistGeneratorsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetPlaylistGeneratorsMediaContainer]](../../models/operations/getplaylistgeneratorsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratorstate.md b/docs/models/operations/getplaylistgeneratorstate.md new file mode 100644 index 0000000..374ddd9 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratorstate.md @@ -0,0 +1,10 @@ +# GetPlaylistGeneratorState + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `PENDING` | pending | +| `COMPLETE` | complete | +| `FAILED` | failed | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratorstatus.md b/docs/models/operations/getplaylistgeneratorstatus.md new file mode 100644 index 0000000..e37f2e6 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratorstatus.md @@ -0,0 +1,12 @@ +# GetPlaylistGeneratorStatus + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `items_complete_count` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `items_count` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `items_successful_count` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `state` | [Optional[operations.GetPlaylistGeneratorState]](../../models/operations/getplaylistgeneratorstate.md) | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratorstype.md b/docs/models/operations/getplaylistgeneratorstype.md new file mode 100644 index 0000000..37723d9 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratorstype.md @@ -0,0 +1,15 @@ +# GetPlaylistGeneratorsType + +The type of playlist generator. + + - -1: A smart playlist generator + - 42: A optimized version generator + + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `MINUS_1` | -1 | +| `FORTY_TWO` | 42 | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratorsubtitles.md b/docs/models/operations/getplaylistgeneratorsubtitles.md new file mode 100644 index 0000000..eea0430 --- /dev/null +++ b/docs/models/operations/getplaylistgeneratorsubtitles.md @@ -0,0 +1,13 @@ +# GetPlaylistGeneratorSubtitles + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `AUTO` | auto | +| `BURN` | burn | +| `NONE` | none | +| `SIDECAR` | sidecar | +| `EMBEDDED` | embedded | +| `SEGMENTED` | segmented | \ No newline at end of file diff --git a/docs/models/operations/getplaylistgeneratortype.md b/docs/models/operations/getplaylistgeneratortype.md new file mode 100644 index 0000000..f91f04a --- /dev/null +++ b/docs/models/operations/getplaylistgeneratortype.md @@ -0,0 +1,11 @@ +# GetPlaylistGeneratorType + +The type of this generator + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `MINUS_1` | -1 | +| `FORTY_TWO` | 42 | \ No newline at end of file diff --git a/docs/models/operations/getplaylistglobals.md b/docs/models/operations/getplaylistglobals.md new file mode 100644 index 0000000..cb144f6 --- /dev/null +++ b/docs/models/operations/getplaylistglobals.md @@ -0,0 +1,18 @@ +# GetPlaylistGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getplaylistitemsglobals.md b/docs/models/operations/getplaylistitemsglobals.md new file mode 100644 index 0000000..cd78902 --- /dev/null +++ b/docs/models/operations/getplaylistitemsglobals.md @@ -0,0 +1,18 @@ +# GetPlaylistItemsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getplaylistitemsrequest.md b/docs/models/operations/getplaylistitemsrequest.md new file mode 100644 index 0000000..d75b61c --- /dev/null +++ b/docs/models/operations/getplaylistitemsrequest.md @@ -0,0 +1,20 @@ +# GetPlaylistItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `playlist_id` | *int* | :heavy_check_mark: | The ID of the playlist | | +| `type` | List[*int*] | :heavy_minus_sign: | The metadata types of the item to return. Values past the first are only used in fetching items from the background processing playlist. | | \ No newline at end of file diff --git a/docs/models/operations/getplaylistitemsresponse.md b/docs/models/operations/getplaylistitemsresponse.md new file mode 100644 index 0000000..449c74c --- /dev/null +++ b/docs/models/operations/getplaylistitemsresponse.md @@ -0,0 +1,12 @@ +# GetPlaylistItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getplaylistmediacontainer.md b/docs/models/operations/getplaylistmediacontainer.md deleted file mode 100644 index 61eb8aa..0000000 --- a/docs/models/operations/getplaylistmediacontainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetPlaylistMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `metadata` | List[[operations.GetPlaylistMetadata](../../models/operations/getplaylistmetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getplaylistmetadata.md b/docs/models/operations/getplaylistmetadata.md deleted file mode 100644 index f4b4d43..0000000 --- a/docs/models/operations/getplaylistmetadata.md +++ /dev/null @@ -1,22 +0,0 @@ -# GetPlaylistMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -| `content` | *Optional[str]* | :heavy_minus_sign: | N/A | library://x/directory/%2Flibrary%2Fsections%2F1%2Fall%3Ftype%3D1%26push%3D1%26title%3D2%26or%3D1%26title%3DSerenity%26pop%3D1 | -| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 95 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /playlists/95/items | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.agents.none://87425529-380f-44b8-a689-9a0537e7ec91 | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | playlist | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Smart Movie Playlist | -| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | | -| `smart` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `playlist_type` | *Optional[str]* | :heavy_minus_sign: | N/A | video | -| `composite` | *Optional[str]* | :heavy_minus_sign: | N/A | /playlists/95/composite/1705717387 | -| `icon` | *Optional[str]* | :heavy_minus_sign: | N/A | playlist://image.smart | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 282000 | -| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | -| `added_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705716493 | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705717387 | \ No newline at end of file diff --git a/docs/models/operations/getplaylistrequest.md b/docs/models/operations/getplaylistrequest.md index 8499a15..d86791b 100644 --- a/docs/models/operations/getplaylistrequest.md +++ b/docs/models/operations/getplaylistrequest.md @@ -3,6 +3,17 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------- | ---------------------- | ---------------------- | ---------------------- | -| `playlist_id` | *float* | :heavy_check_mark: | the ID of the playlist | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `playlist_id` | *int* | :heavy_check_mark: | The ID of the playlist | | \ No newline at end of file diff --git a/docs/models/operations/getplaylistresponse.md b/docs/models/operations/getplaylistresponse.md index 8eeaa73..f8a1dc4 100644 --- a/docs/models/operations/getplaylistresponse.md +++ b/docs/models/operations/getplaylistresponse.md @@ -3,9 +3,9 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetPlaylistResponseBody]](../../models/operations/getplaylistresponsebody.md) | :heavy_minus_sign: | The playlist | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_playlist_metadata` | [Optional[components.MediaContainerWithPlaylistMetadata]](../../models/components/mediacontainerwithplaylistmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getplaylistresponsebody.md b/docs/models/operations/getplaylistresponsebody.md deleted file mode 100644 index 57839cb..0000000 --- a/docs/models/operations/getplaylistresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistResponseBody - -The playlist - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `media_container` | [Optional[operations.GetPlaylistMediaContainer]](../../models/operations/getplaylistmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getplaylistsmediacontainer.md b/docs/models/operations/getplaylistsmediacontainer.md deleted file mode 100644 index 0d23dbf..0000000 --- a/docs/models/operations/getplaylistsmediacontainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetPlaylistsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 4 | -| `metadata` | List[[operations.GetPlaylistsMetadata](../../models/operations/getplaylistsmetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getplaylistsmetadata.md b/docs/models/operations/getplaylistsmetadata.md deleted file mode 100644 index 9f6f656..0000000 --- a/docs/models/operations/getplaylistsmetadata.md +++ /dev/null @@ -1,23 +0,0 @@ -# GetPlaylistsMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 92 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /playlists/92/items | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.agents.none://7ca5aaef-58e8-4828-9e21-c009c97f2903 | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | playlist | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Static Playlist | -| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | A Great Playlist | -| `smart` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `playlist_type` | *Optional[str]* | :heavy_minus_sign: | N/A | video | -| `composite` | *Optional[str]* | :heavy_minus_sign: | N/A | /playlists/92/composite/1705716440 | -| `icon` | *Optional[str]* | :heavy_minus_sign: | N/A | playlist://image.smart | -| `view_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705716298 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 7328000 | -| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 32 | -| `added_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705716298 | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705716440 | \ No newline at end of file diff --git a/docs/models/operations/getplaylistsrequest.md b/docs/models/operations/getplaylistsrequest.md deleted file mode 100644 index b8d0c05..0000000 --- a/docs/models/operations/getplaylistsrequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetPlaylistsRequest - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `playlist_type` | [Optional[operations.PlaylistType]](../../models/operations/playlisttype.md) | :heavy_minus_sign: | limit to a type of playlist. | -| `smart` | [Optional[operations.QueryParamSmart]](../../models/operations/queryparamsmart.md) | :heavy_minus_sign: | type of playlists to return (default is all). | \ No newline at end of file diff --git a/docs/models/operations/getplaylistsresponse.md b/docs/models/operations/getplaylistsresponse.md deleted file mode 100644 index 474f9de..0000000 --- a/docs/models/operations/getplaylistsresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetPlaylistsResponse - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetPlaylistsResponseBody]](../../models/operations/getplaylistsresponsebody.md) | :heavy_minus_sign: | returns all playlists | \ No newline at end of file diff --git a/docs/models/operations/getplaylistsresponsebody.md b/docs/models/operations/getplaylistsresponsebody.md deleted file mode 100644 index e812345..0000000 --- a/docs/models/operations/getplaylistsresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetPlaylistsResponseBody - -returns all playlists - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetPlaylistsMediaContainer]](../../models/operations/getplaylistsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getplayqueueglobals.md b/docs/models/operations/getplayqueueglobals.md new file mode 100644 index 0000000..0f18616 --- /dev/null +++ b/docs/models/operations/getplayqueueglobals.md @@ -0,0 +1,18 @@ +# GetPlayQueueGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getplayqueuerequest.md b/docs/models/operations/getplayqueuerequest.md new file mode 100644 index 0000000..de34cfb --- /dev/null +++ b/docs/models/operations/getplayqueuerequest.md @@ -0,0 +1,24 @@ +# GetPlayQueueRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `play_queue_id` | *int* | :heavy_check_mark: | The ID of the play queue. | | +| `own` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | If the server should transfer ownership to the requesting client (used in remote control scenarios). | 1 | +| `center` | *Optional[str]* | :heavy_minus_sign: | The play queue item ID for the center of the window - this doesn't change the current selected item. | | +| `window` | *Optional[int]* | :heavy_minus_sign: | How many items on each side of the center of the window | | +| `include_before` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether to include the items before the center (if 0, center is not included either), defaults to 1. | 1 | +| `include_after` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether to include the items after the center (if 0, center is not included either), defaults to 1. | 1 | \ No newline at end of file diff --git a/docs/models/operations/getplayqueueresponse.md b/docs/models/operations/getplayqueueresponse.md new file mode 100644 index 0000000..a7b1c64 --- /dev/null +++ b/docs/models/operations/getplayqueueresponse.md @@ -0,0 +1,11 @@ +# GetPlayQueueResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_playlist_metadata` | [Optional[components.MediaContainerWithPlaylistMetadata]](../../models/components/mediacontainerwithplaylistmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getpostplayhubsglobals.md b/docs/models/operations/getpostplayhubsglobals.md new file mode 100644 index 0000000..9f190e5 --- /dev/null +++ b/docs/models/operations/getpostplayhubsglobals.md @@ -0,0 +1,18 @@ +# GetPostplayHubsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getpostplayhubsrequest.md b/docs/models/operations/getpostplayhubsrequest.md new file mode 100644 index 0000000..9043072 --- /dev/null +++ b/docs/models/operations/getpostplayhubsrequest.md @@ -0,0 +1,21 @@ +# GetPostplayHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `metadata_id` | *int* | :heavy_check_mark: | The metadata ID for the hubs to fetch | | +| `count` | *Optional[int]* | :heavy_minus_sign: | Limit results to count items | | +| `only_transient` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added) | 1 | \ No newline at end of file diff --git a/docs/models/operations/getpostplayhubsresponse.md b/docs/models/operations/getpostplayhubsresponse.md new file mode 100644 index 0000000..fb56021 --- /dev/null +++ b/docs/models/operations/getpostplayhubsresponse.md @@ -0,0 +1,12 @@ +# GetPostplayHubsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_hubs` | [Optional[components.MediaContainerWithHubs]](../../models/components/mediacontainerwithhubs.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getpreferenceglobals.md b/docs/models/operations/getpreferenceglobals.md new file mode 100644 index 0000000..b28db25 --- /dev/null +++ b/docs/models/operations/getpreferenceglobals.md @@ -0,0 +1,18 @@ +# GetPreferenceGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getpreferencerequest.md b/docs/models/operations/getpreferencerequest.md new file mode 100644 index 0000000..05a9fc8 --- /dev/null +++ b/docs/models/operations/getpreferencerequest.md @@ -0,0 +1,19 @@ +# GetPreferenceRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `id` | *Optional[str]* | :heavy_minus_sign: | The preference to fetch | | \ No newline at end of file diff --git a/docs/models/operations/getpreferenceresponse.md b/docs/models/operations/getpreferenceresponse.md new file mode 100644 index 0000000..fb130e7 --- /dev/null +++ b/docs/models/operations/getpreferenceresponse.md @@ -0,0 +1,11 @@ +# GetPreferenceResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_settings` | [Optional[components.MediaContainerWithSettings]](../../models/components/mediacontainerwithsettings.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getpromotedhubsglobals.md b/docs/models/operations/getpromotedhubsglobals.md new file mode 100644 index 0000000..039792f --- /dev/null +++ b/docs/models/operations/getpromotedhubsglobals.md @@ -0,0 +1,18 @@ +# GetPromotedHubsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getpromotedhubsmediacontainer.md b/docs/models/operations/getpromotedhubsmediacontainer.md new file mode 100644 index 0000000..c4a480b --- /dev/null +++ b/docs/models/operations/getpromotedhubsmediacontainer.md @@ -0,0 +1,17 @@ +# GetPromotedHubsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `hub` | List[[components.Hub](../../models/components/hub.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getpromotedhubsrequest.md b/docs/models/operations/getpromotedhubsrequest.md new file mode 100644 index 0000000..b308c19 --- /dev/null +++ b/docs/models/operations/getpromotedhubsrequest.md @@ -0,0 +1,19 @@ +# GetPromotedHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `count` | *Optional[int]* | :heavy_minus_sign: | Limit results to count items | | \ No newline at end of file diff --git a/docs/models/operations/getpromotedhubsresponse.md b/docs/models/operations/getpromotedhubsresponse.md new file mode 100644 index 0000000..be09058 --- /dev/null +++ b/docs/models/operations/getpromotedhubsresponse.md @@ -0,0 +1,12 @@ +# GetPromotedHubsResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetPromotedHubsResponseBody]](../../models/operations/getpromotedhubsresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getpromotedhubsresponsebody.md b/docs/models/operations/getpromotedhubsresponsebody.md new file mode 100644 index 0000000..1d3dded --- /dev/null +++ b/docs/models/operations/getpromotedhubsresponsebody.md @@ -0,0 +1,10 @@ +# GetPromotedHubsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetPromotedHubsMediaContainer]](../../models/operations/getpromotedhubsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getrandomartworkglobals.md b/docs/models/operations/getrandomartworkglobals.md new file mode 100644 index 0000000..e8dc383 --- /dev/null +++ b/docs/models/operations/getrandomartworkglobals.md @@ -0,0 +1,18 @@ +# GetRandomArtworkGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getrandomartworkrequest.md b/docs/models/operations/getrandomartworkrequest.md new file mode 100644 index 0000000..0a62aec --- /dev/null +++ b/docs/models/operations/getrandomartworkrequest.md @@ -0,0 +1,19 @@ +# GetRandomArtworkRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `sections` | List[*int*] | :heavy_minus_sign: | The sections for which to fetch artwork. | [
5,
6
] | \ No newline at end of file diff --git a/docs/models/operations/getrandomartworkresponse.md b/docs/models/operations/getrandomartworkresponse.md new file mode 100644 index 0000000..ada74cf --- /dev/null +++ b/docs/models/operations/getrandomartworkresponse.md @@ -0,0 +1,11 @@ +# GetRandomArtworkResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_artwork` | [Optional[components.MediaContainerWithArtwork]](../../models/components/mediacontainerwithartwork.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedactivedirection.md b/docs/models/operations/getrecentlyaddedactivedirection.md deleted file mode 100644 index 0ac1a46..0000000 --- a/docs/models/operations/getrecentlyaddedactivedirection.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetRecentlyAddedActiveDirection - -The direction of the sort. Can be either `asc` or `desc`. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `ASCENDING` | asc | -| `DESCENDING` | desc | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddeddefaultdirection.md b/docs/models/operations/getrecentlyaddeddefaultdirection.md deleted file mode 100644 index c51ef38..0000000 --- a/docs/models/operations/getrecentlyaddeddefaultdirection.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetRecentlyAddedDefaultDirection - -The direction of the sort. Can be either `asc` or `desc`. - - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `ASCENDING` | asc | -| `DESCENDING` | desc | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedfield.md b/docs/models/operations/getrecentlyaddedfield.md deleted file mode 100644 index 895118a..0000000 --- a/docs/models/operations/getrecentlyaddedfield.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetRecentlyAddedField - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `key` | *str* | :heavy_check_mark: | N/A | show.title | -| `title` | *str* | :heavy_check_mark: | N/A | Show Title | -| `type` | *str* | :heavy_check_mark: | N/A | string | -| `sub_type` | *Optional[str]* | :heavy_minus_sign: | N/A | rating | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedfieldtype.md b/docs/models/operations/getrecentlyaddedfieldtype.md deleted file mode 100644 index 3f9ecf9..0000000 --- a/docs/models/operations/getrecentlyaddedfieldtype.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetRecentlyAddedFieldType - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `type` | *str* | :heavy_check_mark: | N/A | tag | -| `operator` | List[[operations.GetRecentlyAddedOperator](../../models/operations/getrecentlyaddedoperator.md)] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedfilter.md b/docs/models/operations/getrecentlyaddedfilter.md deleted file mode 100644 index 6367526..0000000 --- a/docs/models/operations/getrecentlyaddedfilter.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetRecentlyAddedFilter - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -| `filter_` | *str* | :heavy_check_mark: | N/A | genre | -| `filter_type` | *str* | :heavy_check_mark: | N/A | string | -| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | -| `title` | *str* | :heavy_check_mark: | N/A | Genre | -| `type` | *str* | :heavy_check_mark: | N/A | filter | -| `advanced` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedhubsresponsetype.md b/docs/models/operations/getrecentlyaddedhubsresponsetype.md deleted file mode 100644 index eb8cad3..0000000 --- a/docs/models/operations/getrecentlyaddedhubsresponsetype.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetRecentlyAddedHubsResponseType - - -## Values - -| Name | Value | -| -------------- | -------------- | -| `COVER_POSTER` | coverPoster | -| `BACKGROUND` | background | -| `SNAPSHOT` | snapshot | -| `CLEAR_LOGO` | clearLogo | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedhubstype.md b/docs/models/operations/getrecentlyaddedhubstype.md deleted file mode 100644 index 9884c30..0000000 --- a/docs/models/operations/getrecentlyaddedhubstype.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetRecentlyAddedHubsType - -The type of media content in the Plex library. This can represent videos, music, or photos. - - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `MOVIE` | movie | -| `TV_SHOW` | show | -| `SEASON` | season | -| `EPISODE` | episode | -| `ARTIST` | artist | -| `ALBUM` | album | -| `TRACK` | track | -| `PHOTO_ALBUM` | photoalbum | -| `PHOTO` | photo | -| `COLLECTION` | collection | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedimage.md b/docs/models/operations/getrecentlyaddedimage.md deleted file mode 100644 index 212441e..0000000 --- a/docs/models/operations/getrecentlyaddedimage.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRecentlyAddedImage - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `alt` | *str* | :heavy_check_mark: | N/A | Episode 1 | -| `type` | [operations.GetRecentlyAddedHubsResponseType](../../models/operations/getrecentlyaddedhubsresponsetype.md) | :heavy_check_mark: | N/A | background | -| `url` | *str* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarycountry.md b/docs/models/operations/getrecentlyaddedlibrarycountry.md deleted file mode 100644 index d646a11..0000000 --- a/docs/models/operations/getrecentlyaddedlibrarycountry.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetRecentlyAddedLibraryCountry - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | United States of America | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarydirector.md b/docs/models/operations/getrecentlyaddedlibrarydirector.md deleted file mode 100644 index 068dd72..0000000 --- a/docs/models/operations/getrecentlyaddedlibrarydirector.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetRecentlyAddedLibraryDirector - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Peyton Reed | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibraryfilter.md b/docs/models/operations/getrecentlyaddedlibraryfilter.md deleted file mode 100644 index d55c6af..0000000 --- a/docs/models/operations/getrecentlyaddedlibraryfilter.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetRecentlyAddedLibraryFilter - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -| `filter_` | *str* | :heavy_check_mark: | N/A | genre | -| `filter_type` | *str* | :heavy_check_mark: | N/A | string | -| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/genre?type=2 | -| `title` | *str* | :heavy_check_mark: | N/A | Genre | -| `type` | *str* | :heavy_check_mark: | N/A | filter | -| `advanced` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarygenre.md b/docs/models/operations/getrecentlyaddedlibrarygenre.md deleted file mode 100644 index f3a154a..0000000 --- a/docs/models/operations/getrecentlyaddedlibrarygenre.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetRecentlyAddedLibraryGenre - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Comedy | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarymedia.md b/docs/models/operations/getrecentlyaddedlibrarymedia.md deleted file mode 100644 index 5bdfb62..0000000 --- a/docs/models/operations/getrecentlyaddedlibrarymedia.md +++ /dev/null @@ -1,23 +0,0 @@ -# GetRecentlyAddedLibraryMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `id` | *Optional[float]* | :heavy_minus_sign: | N/A | 120345 | -| `duration` | *Optional[float]* | :heavy_minus_sign: | N/A | 7474422 | -| `bitrate` | *Optional[float]* | :heavy_minus_sign: | N/A | 3623 | -| `width` | *Optional[float]* | :heavy_minus_sign: | N/A | 1920 | -| `height` | *Optional[float]* | :heavy_minus_sign: | N/A | 804 | -| `aspect_ratio` | *Optional[float]* | :heavy_minus_sign: | N/A | 2.35 | -| `audio_channels` | *Optional[float]* | :heavy_minus_sign: | N/A | 6 | -| `audio_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | ac3 | -| `video_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | h264 | -| `video_resolution` | *Optional[float]* | :heavy_minus_sign: | N/A | 1080 | -| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mp4 | -| `video_frame_rate` | *Optional[str]* | :heavy_minus_sign: | N/A | 24p | -| `optimized_for_streaming` | *Optional[float]* | :heavy_minus_sign: | N/A | 0 | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | high | -| `part` | List[[operations.GetRecentlyAddedLibraryPart](../../models/operations/getrecentlyaddedlibrarypart.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarymediacontainer.md b/docs/models/operations/getrecentlyaddedlibrarymediacontainer.md deleted file mode 100644 index 1502774..0000000 --- a/docs/models/operations/getrecentlyaddedlibrarymediacontainer.md +++ /dev/null @@ -1,19 +0,0 @@ -# GetRecentlyAddedLibraryMediaContainer - -The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. - - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `type` | List[[operations.GetRecentlyAddedLibraryType](../../models/operations/getrecentlyaddedlibrarytype.md)] | :heavy_minus_sign: | N/A | | -| `field_type` | List[[operations.FieldType](../../models/operations/fieldtype.md)] | :heavy_minus_sign: | N/A | | -| `size` | *Optional[float]* | :heavy_minus_sign: | N/A | 50 | -| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `media_tag_prefix` | *Optional[str]* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | -| `media_tag_version` | *Optional[float]* | :heavy_minus_sign: | N/A | 1680021154 | -| `mixed_parents` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `metadata` | List[[operations.GetRecentlyAddedLibraryMetadata](../../models/operations/getrecentlyaddedlibrarymetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarymetadata.md b/docs/models/operations/getrecentlyaddedlibrarymetadata.md deleted file mode 100644 index c173362..0000000 --- a/docs/models/operations/getrecentlyaddedlibrarymetadata.md +++ /dev/null @@ -1,39 +0,0 @@ -# GetRecentlyAddedLibraryMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `library_section_id` | *Optional[float]* | :heavy_minus_sign: | N/A | 1 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Movies | -| `library_section_uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | 322a231a-b7f7-49f5-920f-14c61199cd30 | -| `rating_key` | *Optional[float]* | :heavy_minus_sign: | N/A | 59398 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/59398 | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://movie/5e161a83bea6ac004126e148 | -| `studio` | *Optional[str]* | :heavy_minus_sign: | N/A | Marvel Studios | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | movie | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Ant-Man and the Wasp: Quantumania | -| `content_rating` | *Optional[str]* | :heavy_minus_sign: | N/A | PG-13 | -| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | Scott Lang and Hope Van Dyne along with Hank Pym and Janet Van Dyne explore the Quantum Realm where they interact with strange creatures and embark on an adventure that goes beyond the limits of what they thought was possible. | -| `rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 4.7 | -| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 8.3 | -| `year` | *Optional[float]* | :heavy_minus_sign: | N/A | 2023 | -| `tagline` | *Optional[str]* | :heavy_minus_sign: | N/A | Witness the beginning of a new dynasty. | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/59398/thumb/1681888010 | -| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/59398/art/1681888010 | -| `duration` | *Optional[float]* | :heavy_minus_sign: | N/A | 7474422 | -| `originally_available_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2023-02-15 00:00:00 +0000 UTC | -| `added_at` | *Optional[float]* | :heavy_minus_sign: | N/A | 1681803215 | -| `updated_at` | *Optional[float]* | :heavy_minus_sign: | N/A | 1681888010 | -| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | -| `chapter_source` | *Optional[str]* | :heavy_minus_sign: | N/A | media | -| `primary_extra_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/59399 | -| `rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.rotten | -| `media` | List[[operations.GetRecentlyAddedLibraryMedia](../../models/operations/getrecentlyaddedlibrarymedia.md)] | :heavy_minus_sign: | N/A | | -| `genre` | List[[operations.GetRecentlyAddedLibraryGenre](../../models/operations/getrecentlyaddedlibrarygenre.md)] | :heavy_minus_sign: | N/A | | -| `director` | List[[operations.GetRecentlyAddedLibraryDirector](../../models/operations/getrecentlyaddedlibrarydirector.md)] | :heavy_minus_sign: | N/A | | -| `writer` | List[[operations.GetRecentlyAddedLibraryWriter](../../models/operations/getrecentlyaddedlibrarywriter.md)] | :heavy_minus_sign: | N/A | | -| `country` | List[[operations.GetRecentlyAddedLibraryCountry](../../models/operations/getrecentlyaddedlibrarycountry.md)] | :heavy_minus_sign: | N/A | | -| `role` | List[[operations.GetRecentlyAddedLibraryRole](../../models/operations/getrecentlyaddedlibraryrole.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarypart.md b/docs/models/operations/getrecentlyaddedlibrarypart.md deleted file mode 100644 index e4a3ad0..0000000 --- a/docs/models/operations/getrecentlyaddedlibrarypart.md +++ /dev/null @@ -1,17 +0,0 @@ -# GetRecentlyAddedLibraryPart - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | -| `id` | *Optional[float]* | :heavy_minus_sign: | N/A | 120353 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/parts/120353/1681803203/file.mp4 | -| `duration` | *Optional[float]* | :heavy_minus_sign: | N/A | 7474422 | -| `file` | *Optional[str]* | :heavy_minus_sign: | N/A | /movies/Ant-Man and the Wasp Quantumania (2023)/Ant-Man.and.the.Wasp.Quantumania.2023.1080p.mp4 | -| `size` | *Optional[float]* | :heavy_minus_sign: | N/A | 3395307162 | -| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mp4 | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `has_thumbnail` | *Optional[float]* | :heavy_minus_sign: | N/A | 1 | -| `optimized_for_streaming` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | high | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibraryrequest.md b/docs/models/operations/getrecentlyaddedlibraryrequest.md deleted file mode 100644 index 11a2400..0000000 --- a/docs/models/operations/getrecentlyaddedlibraryrequest.md +++ /dev/null @@ -1,14 +0,0 @@ -# GetRecentlyAddedLibraryRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `content_directory_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | -| `pinned_content_directory_id` | List[*int*] | :heavy_minus_sign: | N/A | [
3,
5,
7,
13,
12,
1,
6,
14,
2,
10,
16,
17
] | -| `section_id` | *Optional[int]* | :heavy_minus_sign: | The library section ID for filtering content. | 2 | -| `type` | [operations.QueryParamType](../../models/operations/queryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `include_meta` | [Optional[operations.QueryParamIncludeMeta]](../../models/operations/queryparamincludemeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | -| `x_plex_container_start` | *Optional[int]* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | -| `x_plex_container_size` | *Optional[int]* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibraryresponse.md b/docs/models/operations/getrecentlyaddedlibraryresponse.md deleted file mode 100644 index 01a8370..0000000 --- a/docs/models/operations/getrecentlyaddedlibraryresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetRecentlyAddedLibraryResponse - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetRecentlyAddedLibraryResponseBody]](../../models/operations/getrecentlyaddedlibraryresponsebody.md) | :heavy_minus_sign: | The recently added content | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibraryresponsebody.md b/docs/models/operations/getrecentlyaddedlibraryresponsebody.md deleted file mode 100644 index bb63377..0000000 --- a/docs/models/operations/getrecentlyaddedlibraryresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRecentlyAddedLibraryResponseBody - -The recently added content - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | -| `media_container` | [Optional[operations.GetRecentlyAddedLibraryMediaContainer]](../../models/operations/getrecentlyaddedlibrarymediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibraryrole.md b/docs/models/operations/getrecentlyaddedlibraryrole.md deleted file mode 100644 index 0a0934b..0000000 --- a/docs/models/operations/getrecentlyaddedlibraryrole.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetRecentlyAddedLibraryRole - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Paul Rudd | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarytype.md b/docs/models/operations/getrecentlyaddedlibrarytype.md deleted file mode 100644 index e2ee45d..0000000 --- a/docs/models/operations/getrecentlyaddedlibrarytype.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetRecentlyAddedLibraryType - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | -| `type` | *str* | :heavy_check_mark: | N/A | filter | -| `subtype` | *Optional[str]* | :heavy_minus_sign: | N/A | clip | -| `title` | *str* | :heavy_check_mark: | N/A | TV Shows | -| `active` | *bool* | :heavy_check_mark: | N/A | false | -| `filter_` | List[[operations.GetRecentlyAddedLibraryFilter](../../models/operations/getrecentlyaddedlibraryfilter.md)] | :heavy_minus_sign: | N/A | | -| `sort` | List[[operations.Sort](../../models/operations/sort.md)] | :heavy_minus_sign: | N/A | | -| `field` | List[[operations.FieldT](../../models/operations/fieldt.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedlibrarywriter.md b/docs/models/operations/getrecentlyaddedlibrarywriter.md deleted file mode 100644 index bf07e58..0000000 --- a/docs/models/operations/getrecentlyaddedlibrarywriter.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetRecentlyAddedLibraryWriter - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Jeff Loveness | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedmediacontainer.md b/docs/models/operations/getrecentlyaddedmediacontainer.md deleted file mode 100644 index d6b9423..0000000 --- a/docs/models/operations/getrecentlyaddedmediacontainer.md +++ /dev/null @@ -1,14 +0,0 @@ -# GetRecentlyAddedMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `total_size` | *int* | :heavy_check_mark: | Total number of media items in the library. | 50 | -| `offset` | *int* | :heavy_check_mark: | Offset value for pagination. | 0 | -| `allow_sync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `identifier` | *str* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `meta` | [Optional[operations.Meta]](../../models/operations/meta.md) | :heavy_minus_sign: | The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.
| | -| `metadata` | List[[operations.GetRecentlyAddedMetadata](../../models/operations/getrecentlyaddedmetadata.md)] | :heavy_minus_sign: | An array of metadata items. | | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedmetadata.md b/docs/models/operations/getrecentlyaddedmetadata.md deleted file mode 100644 index 7d26fb7..0000000 --- a/docs/models/operations/getrecentlyaddedmetadata.md +++ /dev/null @@ -1,85 +0,0 @@ -# GetRecentlyAddedMetadata - -Unknown - - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `added_at` | *int* | :heavy_check_mark: | N/A | 1556281940 | -| `art` | *str* | :heavy_check_mark: | The art image URL for the media item. | /library/metadata/58683/art/1703239236 | -| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | The URL for the audience rating image. | rottentomatoes://image.rating.upright | -| `audience_rating` | *float* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | -| `chapter_source` | *Optional[str]* | :heavy_minus_sign: | The source from which chapter data is derived. | media | -| `child_count` | *int* | :heavy_check_mark: | The number of child items associated with this media item. | 1 | -| `content_rating` | *Optional[str]* | :heavy_minus_sign: | The content rating for the media item. | PG-13 | -| `created_at_accuracy` | *Optional[str]* | :heavy_minus_sign: | The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). | epoch,local | -| `created_at_tz_offset` | *Optional[str]* | :heavy_minus_sign: | The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. | 0 | -| `duration` | *int* | :heavy_check_mark: | The duration of the media item in milliseconds. | 11558112 | -| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | The art URL for the grandparent media item. | /library/metadata/66/art/1705716261 | -| `grandparent_guid` | *Optional[str]* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | The key of the grandparent media item. | /library/metadata/66 | -| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the grandparent media item. | 66 | -| `grandparent_slug` | *Optional[str]* | :heavy_minus_sign: | The slug for the grandparent media item. | alice-in-borderland-2020 | -| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | The theme URL for the grandparent media item. | /library/metadata/66/theme/1705716261 | -| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail URL for the grandparent media item. | /library/metadata/66/thumb/1705716261 | -| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | The title of the grandparent media item. | Caprica | -| `guid` | *str* | :heavy_check_mark: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | -| `index` | *int* | :heavy_check_mark: | The index position of the media item. | 1 | -| `key` | *str* | :heavy_check_mark: | The unique key for the media item. | /library/metadata/58683 | -| `last_rated_at` | *Optional[int]* | :heavy_minus_sign: | The Unix timestamp representing the last time the item was rated. | 1721813113 | -| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | -| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | The number of leaf items (end nodes) under this media item. | 14 | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | The identifier for the library section. | 1 | -| `library_section_key` | *Optional[str]* | :heavy_minus_sign: | The key corresponding to the library section. | /library/sections/1 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | The title of the library section. | Movies | -| `original_title` | *Optional[str]* | :heavy_minus_sign: | The original title of the media item (if different). | 映画 ブラッククローバー 魔法帝の剣 | -| `originally_available_at` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | The original release date of the media item. | 2022-12-14 | -| `parent_guid` | *Optional[str]* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `parent_index` | *Optional[int]* | :heavy_minus_sign: | The index position of the parent media item. | 1 | -| `parent_key` | *Optional[str]* | :heavy_minus_sign: | The key of the parent media item. | /library/metadata/66 | -| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the parent media item. | 66 | -| `parent_slug` | *Optional[str]* | :heavy_minus_sign: | The slug for the parent media item. | alice-in-borderland-2020 | -| `parent_studio` | *str* | :heavy_check_mark: | The studio of the parent media item. | UCP | -| `parent_theme` | *str* | :heavy_check_mark: | The theme URL for the parent media item. | /library/metadata/66/theme/1705716261 | -| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail URL for the parent media item. | /library/metadata/66/thumb/1705716261 | -| `parent_title` | *Optional[str]* | :heavy_minus_sign: | The title of the parent media item. | Caprica | -| `parent_year` | *Optional[int]* | :heavy_minus_sign: | The release year of the parent media item. | 2010 | -| `primary_extra_key` | *Optional[str]* | :heavy_minus_sign: | The primary extra key associated with this media item. | /library/metadata/58684 | -| `rating_image` | *Optional[str]* | :heavy_minus_sign: | The URL for the rating image. | rottentomatoes://image.rating.ripe | -| `rating_key` | *str* | :heavy_check_mark: | The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. | 58683 | -| `rating` | *float* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | -| `season_count` | *int* | :heavy_check_mark: | The total number of seasons (for TV shows). | 2022 | -| `skip_count` | *Optional[int]* | :heavy_minus_sign: | The number of times this media item has been skipped. | 1 | -| `slug` | *str* | :heavy_check_mark: | A URL‐friendly version of the media title. | 4-for-texas | -| `studio` | *Optional[str]* | :heavy_minus_sign: | The studio that produced the media item. | 20th Century Studios | -| `subtype` | *Optional[str]* | :heavy_minus_sign: | A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. | clip | -| `summary` | *str* | :heavy_check_mark: | A synopsis of the media item. | Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.
Once a familiar threat returns to finish what was previously started, Jake must
work with Neytiri and the army of the Na'vi race to protect their home.
| -| `tagline` | *str* | :heavy_check_mark: | A brief tagline for the media item. | Return to Pandora. | -| `theme` | *str* | :heavy_check_mark: | The theme URL for the media item. | /library/metadata/1/theme/1705636920 | -| `thumb` | *str* | :heavy_check_mark: | The thumbnail image URL for the media item. | /library/metadata/58683/thumb/1703239236 | -| `title_sort` | *str* | :heavy_check_mark: | The sort title used for ordering media items. | Whale | -| `title` | *str* | :heavy_check_mark: | The title of the media item. | Avatar: The Way of Water | -| `type` | [operations.GetRecentlyAddedHubsType](../../models/operations/getrecentlyaddedhubstype.md) | :heavy_check_mark: | N/A | movie | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | -| `user_rating` | *Optional[float]* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | -| `view_count` | *Optional[int]* | :heavy_minus_sign: | The number of times this media item has been viewed. | 1 | -| `view_offset` | *Optional[int]* | :heavy_minus_sign: | The current playback offset (in milliseconds). | 5222500 | -| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | -| `year` | *Optional[int]* | :heavy_minus_sign: | The release year of the media item. | 2022 | -| `image` | List[[operations.GetRecentlyAddedImage](../../models/operations/getrecentlyaddedimage.md)] | :heavy_minus_sign: | N/A | | -| `ultra_blur_colors` | [Optional[operations.UltraBlurColors]](../../models/operations/ultrablurcolors.md) | :heavy_minus_sign: | N/A | | -| `guids` | List[[operations.Guids](../../models/operations/guids.md)] | :heavy_minus_sign: | N/A | | -| `media` | List[[operations.Media](../../models/operations/media.md)] | :heavy_minus_sign: | N/A | | -| `genre` | List[[operations.Genre](../../models/operations/genre.md)] | :heavy_minus_sign: | N/A | | -| `country` | List[[operations.Country](../../models/operations/country.md)] | :heavy_minus_sign: | N/A | | -| `director` | List[[operations.Director](../../models/operations/director.md)] | :heavy_minus_sign: | N/A | | -| `writer` | List[[operations.Writer](../../models/operations/writer.md)] | :heavy_minus_sign: | N/A | | -| `role` | List[[operations.Role](../../models/operations/role.md)] | :heavy_minus_sign: | N/A | | -| `producer` | List[[operations.Producer](../../models/operations/producer.md)] | :heavy_minus_sign: | N/A | | -| `rating1` | List[[operations.Rating](../../models/operations/rating.md)] | :heavy_minus_sign: | N/A | | -| `similar` | List[[operations.Similar](../../models/operations/similar.md)] | :heavy_minus_sign: | N/A | | -| `location` | List[[operations.Location](../../models/operations/location.md)] | :heavy_minus_sign: | N/A | | -| `collection` | List[[operations.Collection](../../models/operations/collection.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedoperator.md b/docs/models/operations/getrecentlyaddedoperator.md deleted file mode 100644 index e70db1e..0000000 --- a/docs/models/operations/getrecentlyaddedoperator.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetRecentlyAddedOperator - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `key` | *str* | :heavy_check_mark: | N/A | = | -| `title` | *str* | :heavy_check_mark: | N/A | is | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedoptimizedforstreaming.md b/docs/models/operations/getrecentlyaddedoptimizedforstreaming.md deleted file mode 100644 index a10f657..0000000 --- a/docs/models/operations/getrecentlyaddedoptimizedforstreaming.md +++ /dev/null @@ -1,19 +0,0 @@ -# GetRecentlyAddedOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - -## Supported Types - -### `operations.GetRecentlyAddedOptimizedForStreaming1` - -```python -value: operations.GetRecentlyAddedOptimizedForStreaming1 = /* values here */ -``` - -### `bool` - -```python -value: bool = /* values here */ -``` - diff --git a/docs/models/operations/getrecentlyaddedoptimizedforstreaming1.md b/docs/models/operations/getrecentlyaddedoptimizedforstreaming1.md deleted file mode 100644 index 0f8e953..0000000 --- a/docs/models/operations/getrecentlyaddedoptimizedforstreaming1.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetRecentlyAddedOptimizedForStreaming1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedrequest.md b/docs/models/operations/getrecentlyaddedrequest.md deleted file mode 100644 index fe8c0f9..0000000 --- a/docs/models/operations/getrecentlyaddedrequest.md +++ /dev/null @@ -1,14 +0,0 @@ -# GetRecentlyAddedRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `content_directory_id` | *int* | :heavy_check_mark: | The content directory ID. | | -| `pinned_content_directory_id` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of pinned content directory IDs. | | -| `section_id` | *Optional[int]* | :heavy_minus_sign: | The library section ID for filtering content. | 2 | -| `type` | [operations.Type](../../models/operations/type.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `include_meta` | [Optional[operations.IncludeMeta]](../../models/operations/includemeta.md) | :heavy_minus_sign: | Adds the Meta object to the response
| 1 | -| `x_plex_container_start` | *Optional[int]* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | -| `x_plex_container_size` | *Optional[int]* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedresponse.md b/docs/models/operations/getrecentlyaddedresponse.md deleted file mode 100644 index 71905de..0000000 --- a/docs/models/operations/getrecentlyaddedresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetRecentlyAddedResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetRecentlyAddedResponseBody]](../../models/operations/getrecentlyaddedresponsebody.md) | :heavy_minus_sign: | A successful response with recently added content. | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedresponsebody.md b/docs/models/operations/getrecentlyaddedresponsebody.md deleted file mode 100644 index f2ea956..0000000 --- a/docs/models/operations/getrecentlyaddedresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRecentlyAddedResponseBody - -A successful response with recently added content. - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetRecentlyAddedMediaContainer]](../../models/operations/getrecentlyaddedmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedsort.md b/docs/models/operations/getrecentlyaddedsort.md deleted file mode 100644 index 9c176b2..0000000 --- a/docs/models/operations/getrecentlyaddedsort.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetRecentlyAddedSort - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `default` | *Optional[str]* | :heavy_minus_sign: | N/A | asc | -| `active` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `active_direction` | [Optional[operations.GetRecentlyAddedActiveDirection]](../../models/operations/getrecentlyaddedactivedirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `default_direction` | [Optional[operations.GetRecentlyAddedDefaultDirection]](../../models/operations/getrecentlyaddeddefaultdirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `desc_key` | *Optional[str]* | :heavy_minus_sign: | N/A | titleSort:desc | -| `first_character_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | -| `key` | *str* | :heavy_check_mark: | N/A | titleSort | -| `title` | *str* | :heavy_check_mark: | N/A | Title | \ No newline at end of file diff --git a/docs/models/operations/getrecentlyaddedtype.md b/docs/models/operations/getrecentlyaddedtype.md deleted file mode 100644 index 956aca0..0000000 --- a/docs/models/operations/getrecentlyaddedtype.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetRecentlyAddedType - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `key` | *str* | :heavy_check_mark: | N/A | /library/sections/2/all?type=2 | -| `type` | *str* | :heavy_check_mark: | N/A | filter | -| `subtype` | *Optional[str]* | :heavy_minus_sign: | N/A | clip | -| `title` | *str* | :heavy_check_mark: | N/A | TV Shows | -| `active` | *bool* | :heavy_check_mark: | N/A | false | -| `filter_` | List[[operations.GetRecentlyAddedFilter](../../models/operations/getrecentlyaddedfilter.md)] | :heavy_minus_sign: | N/A | | -| `sort` | List[[operations.GetRecentlyAddedSort](../../models/operations/getrecentlyaddedsort.md)] | :heavy_minus_sign: | N/A | | -| `field` | List[[operations.GetRecentlyAddedField](../../models/operations/getrecentlyaddedfield.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getrefreshlibrarymetadatarequest.md b/docs/models/operations/getrefreshlibrarymetadatarequest.md deleted file mode 100644 index 1636f58..0000000 --- a/docs/models/operations/getrefreshlibrarymetadatarequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetRefreshLibraryMetadataRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `force` | [Optional[operations.Force]](../../models/operations/force.md) | :heavy_minus_sign: | Force the refresh even if the library is already being refreshed. | 0 | -| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | \ No newline at end of file diff --git a/docs/models/operations/getrefreshlibrarymetadataresponse.md b/docs/models/operations/getrefreshlibrarymetadataresponse.md deleted file mode 100644 index 1c5763e..0000000 --- a/docs/models/operations/getrefreshlibrarymetadataresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetRefreshLibraryMetadataResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/getrelatedhubsglobals.md b/docs/models/operations/getrelatedhubsglobals.md new file mode 100644 index 0000000..923ecb1 --- /dev/null +++ b/docs/models/operations/getrelatedhubsglobals.md @@ -0,0 +1,18 @@ +# GetRelatedHubsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getrelatedhubsrequest.md b/docs/models/operations/getrelatedhubsrequest.md new file mode 100644 index 0000000..a4bb070 --- /dev/null +++ b/docs/models/operations/getrelatedhubsrequest.md @@ -0,0 +1,21 @@ +# GetRelatedHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `metadata_id` | *int* | :heavy_check_mark: | The metadata ID for the hubs to fetch | | +| `count` | *Optional[int]* | :heavy_minus_sign: | Limit results to count items | | +| `only_transient` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added) | 1 | \ No newline at end of file diff --git a/docs/models/operations/getrelatedhubsresponse.md b/docs/models/operations/getrelatedhubsresponse.md new file mode 100644 index 0000000..07d9560 --- /dev/null +++ b/docs/models/operations/getrelatedhubsresponse.md @@ -0,0 +1,12 @@ +# GetRelatedHubsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_hubs` | [Optional[components.MediaContainerWithHubs]](../../models/components/mediacontainerwithhubs.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getrelateditemsglobals.md b/docs/models/operations/getrelateditemsglobals.md new file mode 100644 index 0000000..cf2fccc --- /dev/null +++ b/docs/models/operations/getrelateditemsglobals.md @@ -0,0 +1,18 @@ +# GetRelatedItemsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getrelateditemsmediacontainer.md b/docs/models/operations/getrelateditemsmediacontainer.md new file mode 100644 index 0000000..6f859d7 --- /dev/null +++ b/docs/models/operations/getrelateditemsmediacontainer.md @@ -0,0 +1,17 @@ +# GetRelatedItemsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `hub` | List[[components.Hub](../../models/components/hub.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getrelateditemsrequest.md b/docs/models/operations/getrelateditemsrequest.md new file mode 100644 index 0000000..9844ba4 --- /dev/null +++ b/docs/models/operations/getrelateditemsrequest.md @@ -0,0 +1,19 @@ +# GetRelatedItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getrelateditemsresponse.md b/docs/models/operations/getrelateditemsresponse.md new file mode 100644 index 0000000..8608061 --- /dev/null +++ b/docs/models/operations/getrelateditemsresponse.md @@ -0,0 +1,11 @@ +# GetRelatedItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetRelatedItemsResponseBody]](../../models/operations/getrelateditemsresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getrelateditemsresponsebody.md b/docs/models/operations/getrelateditemsresponsebody.md new file mode 100644 index 0000000..a46ee02 --- /dev/null +++ b/docs/models/operations/getrelateditemsresponsebody.md @@ -0,0 +1,10 @@ +# GetRelatedItemsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetRelatedItemsMediaContainer]](../../models/operations/getrelateditemsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getresizedphotorequest.md b/docs/models/operations/getresizedphotorequest.md deleted file mode 100644 index 4e19f6c..0000000 --- a/docs/models/operations/getresizedphotorequest.md +++ /dev/null @@ -1,14 +0,0 @@ -# GetResizedPhotoRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| `width` | *float* | :heavy_check_mark: | The width for the resized photo | 110 | -| `height` | *float* | :heavy_check_mark: | The height for the resized photo | 165 | -| `opacity` | *int* | :heavy_check_mark: | The opacity for the resized photo | | -| `blur` | *float* | :heavy_check_mark: | The width for the resized photo | 0 | -| `min_size` | [operations.MinSize](../../models/operations/minsize.md) | :heavy_check_mark: | images are always scaled proportionally. A value of '1' in minSize will make the smaller native dimension the dimension resized against. | | -| `upscale` | [operations.Upscale](../../models/operations/upscale.md) | :heavy_check_mark: | allow images to be resized beyond native dimensions. | | -| `url` | *str* | :heavy_check_mark: | path to image within Plex | /library/metadata/49564/thumb/1654258204 | \ No newline at end of file diff --git a/docs/models/operations/getresizedphotoresponse.md b/docs/models/operations/getresizedphotoresponse.md deleted file mode 100644 index 1eeeb08..0000000 --- a/docs/models/operations/getresizedphotoresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetResizedPhotoResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/getresourcesstatisticsmediacontainer.md b/docs/models/operations/getresourcesstatisticsmediacontainer.md deleted file mode 100644 index eeb4f50..0000000 --- a/docs/models/operations/getresourcesstatisticsmediacontainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetResourcesStatisticsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 5497 | -| `statistics_resources` | List[[operations.StatisticsResources](../../models/operations/statisticsresources.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getresourcesstatisticsrequest.md b/docs/models/operations/getresourcesstatisticsrequest.md deleted file mode 100644 index 26c1a52..0000000 --- a/docs/models/operations/getresourcesstatisticsrequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetResourcesStatisticsRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `timespan` | *Optional[int]* | :heavy_minus_sign: | The timespan to retrieve statistics for
the exact meaning of this parameter is not known
| 4 | \ No newline at end of file diff --git a/docs/models/operations/getresourcesstatisticsresponse.md b/docs/models/operations/getresourcesstatisticsresponse.md deleted file mode 100644 index b49ba09..0000000 --- a/docs/models/operations/getresourcesstatisticsresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetResourcesStatisticsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetResourcesStatisticsResponseBody]](../../models/operations/getresourcesstatisticsresponsebody.md) | :heavy_minus_sign: | Resource Statistics | \ No newline at end of file diff --git a/docs/models/operations/getresourcesstatisticsresponsebody.md b/docs/models/operations/getresourcesstatisticsresponsebody.md deleted file mode 100644 index 4f0df8e..0000000 --- a/docs/models/operations/getresourcesstatisticsresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetResourcesStatisticsResponseBody - -Resource Statistics - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetResourcesStatisticsMediaContainer]](../../models/operations/getresourcesstatisticsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getscheduledrecordingsmediacontainer.md b/docs/models/operations/getscheduledrecordingsmediacontainer.md new file mode 100644 index 0000000..b32c6dc --- /dev/null +++ b/docs/models/operations/getscheduledrecordingsmediacontainer.md @@ -0,0 +1,17 @@ +# GetScheduledRecordingsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `media_grab_operation` | List[[components.MediaGrabOperation](../../models/components/mediagraboperation.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getscheduledrecordingsresponse.md b/docs/models/operations/getscheduledrecordingsresponse.md new file mode 100644 index 0000000..ca4cc80 --- /dev/null +++ b/docs/models/operations/getscheduledrecordingsresponse.md @@ -0,0 +1,12 @@ +# GetScheduledRecordingsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetScheduledRecordingsResponseBody]](../../models/operations/getscheduledrecordingsresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getscheduledrecordingsresponsebody.md b/docs/models/operations/getscheduledrecordingsresponsebody.md new file mode 100644 index 0000000..3fdc335 --- /dev/null +++ b/docs/models/operations/getscheduledrecordingsresponsebody.md @@ -0,0 +1,10 @@ +# GetScheduledRecordingsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetScheduledRecordingsMediaContainer]](../../models/operations/getscheduledrecordingsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariescountry.md b/docs/models/operations/getsearchalllibrariescountry.md deleted file mode 100644 index 925e961..0000000 --- a/docs/models/operations/getsearchalllibrariescountry.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetSearchAllLibrariesCountry - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique identifier for the country.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | -| `tag` | *str* | :heavy_check_mark: | The country of origin of this media item | United States of America | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesdirector.md b/docs/models/operations/getsearchalllibrariesdirector.md deleted file mode 100644 index c06890b..0000000 --- a/docs/models/operations/getsearchalllibrariesdirector.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchAllLibrariesDirector - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique identifier for the director. | 126522 | -| `tag` | *str* | :heavy_check_mark: | The role of Director | Danny Boyle | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the director. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesdirectory.md b/docs/models/operations/getsearchalllibrariesdirectory.md deleted file mode 100644 index db65983..0000000 --- a/docs/models/operations/getsearchalllibrariesdirectory.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetSearchAllLibrariesDirectory - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `key` | *str* | :heavy_check_mark: | The unique identifier path for the search result item. | /library/sections/3/all?actor=197429 | -| `library_section_id` | *int* | :heavy_check_mark: | The identifier for the library section. | 1 | -| `library_section_key` | *str* | :heavy_check_mark: | The key corresponding to the library section. | /library/sections/1 | -| `library_section_title` | *str* | :heavy_check_mark: | The title of the library section. | Movies | -| `library_section_type` | *Optional[Literal[1]]* | :heavy_minus_sign: | N/A | | -| `type` | *str* | :heavy_check_mark: | The type of the directory. | tag | -| `id` | *int* | :heavy_check_mark: | N/A | 197429 | -| `filter_` | *Optional[str]* | :heavy_minus_sign: | The filter string used to query this specific item in the library. | actor=197429 | -| `tag` | *str* | :heavy_check_mark: | N/A | Ben Stiller | -| `tag_type` | *Optional[Literal[4]]* | :heavy_minus_sign: | The type of tag associated with this search result (e.g., Director, Actor). | | -| `tag_key` | *Optional[str]* | :heavy_minus_sign: | The unique identifier for the tag associated with this search result. | 5d776826999c64001ec2c606 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | The URL to the thumbnail image associated with this search result. | https://metadata-static.plex.tv/5/people/57bd7c7d6c5c9e2881251b30e5603d3d.jpg | -| `count` | *Optional[int]* | :heavy_minus_sign: | The number of items associated with this search result. | 10 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesflattenseasons.md b/docs/models/operations/getsearchalllibrariesflattenseasons.md deleted file mode 100644 index 54d5520..0000000 --- a/docs/models/operations/getsearchalllibrariesflattenseasons.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetSearchAllLibrariesFlattenSeasons - -Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). - - - -## Values - -| Name | Value | -| ----------------- | ----------------- | -| `LIBRARY_DEFAULT` | -1 | -| `HIDE` | 0 | -| `SHOW` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesgenre.md b/docs/models/operations/getsearchalllibrariesgenre.md deleted file mode 100644 index 96de137..0000000 --- a/docs/models/operations/getsearchalllibrariesgenre.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetSearchAllLibrariesGenre - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique identifier for the genre.
NOTE: This is different for each Plex server and is not globally unique.
| 259 | -| `tag` | *str* | :heavy_check_mark: | The genre name of this media-item
| Crime | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesguids.md b/docs/models/operations/getsearchalllibrariesguids.md deleted file mode 100644 index 84ec52c..0000000 --- a/docs/models/operations/getsearchalllibrariesguids.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetSearchAllLibrariesGuids - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrarieshasthumbnail.md b/docs/models/operations/getsearchalllibrarieshasthumbnail.md deleted file mode 100644 index ee89db8..0000000 --- a/docs/models/operations/getsearchalllibrarieshasthumbnail.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetSearchAllLibrariesHasThumbnail - -Indicates if the part has a thumbnail. - - - -## Values - -| Name | Value | -| ------- | ------- | -| `FALSE` | 0 | -| `TRUE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesimage.md b/docs/models/operations/getsearchalllibrariesimage.md deleted file mode 100644 index 801bc61..0000000 --- a/docs/models/operations/getsearchalllibrariesimage.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchAllLibrariesImage - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `alt` | *str* | :heavy_check_mark: | N/A | Episode 1 | -| `type` | [operations.GetSearchAllLibrariesLibraryType](../../models/operations/getsearchalllibrarieslibrarytype.md) | :heavy_check_mark: | N/A | background | -| `url` | *str* | :heavy_check_mark: | N/A | /library/metadata/45521/thumb/1644710589 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrarieslibraryoptimizedforstreaming.md b/docs/models/operations/getsearchalllibrarieslibraryoptimizedforstreaming.md deleted file mode 100644 index bc6334b..0000000 --- a/docs/models/operations/getsearchalllibrarieslibraryoptimizedforstreaming.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetSearchAllLibrariesLibraryOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - - -## Supported Types - -### `operations.GetSearchAllLibrariesOptimizedForStreamingLibrary1` - -```python -value: operations.GetSearchAllLibrariesOptimizedForStreamingLibrary1 = /* values here */ -``` - -### `bool` - -```python -value: bool = /* values here */ -``` - diff --git a/docs/models/operations/getsearchalllibrarieslibrarytype.md b/docs/models/operations/getsearchalllibrarieslibrarytype.md deleted file mode 100644 index a3f90fe..0000000 --- a/docs/models/operations/getsearchalllibrarieslibrarytype.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchAllLibrariesLibraryType - - -## Values - -| Name | Value | -| -------------- | -------------- | -| `COVER_POSTER` | coverPoster | -| `BACKGROUND` | background | -| `SNAPSHOT` | snapshot | -| `CLEAR_LOGO` | clearLogo | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrarieslocation.md b/docs/models/operations/getsearchalllibrarieslocation.md deleted file mode 100644 index d658478..0000000 --- a/docs/models/operations/getsearchalllibrarieslocation.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchAllLibrariesLocation - -The folder path for the media item. - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | -| `path` | *str* | :heavy_check_mark: | N/A | /TV Shows/Clarkson's Farm | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesmedia.md b/docs/models/operations/getsearchalllibrariesmedia.md deleted file mode 100644 index 35ed6e7..0000000 --- a/docs/models/operations/getsearchalllibrariesmedia.md +++ /dev/null @@ -1,26 +0,0 @@ -# GetSearchAllLibrariesMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique media identifier. | 387322 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | -| `bitrate` | *Optional[int]* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | -| `width` | *Optional[int]* | :heavy_minus_sign: | Video width in pixels. | 3840 | -| `height` | *Optional[int]* | :heavy_minus_sign: | Video height in pixels. | 1602 | -| `aspect_ratio` | *Optional[float]* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | -| `audio_channels` | *Optional[int]* | :heavy_minus_sign: | Number of audio channels. | 6 | -| `display_offset` | *Optional[int]* | :heavy_minus_sign: | N/A | 50 | -| `audio_codec` | *Optional[str]* | :heavy_minus_sign: | Audio codec used. | aac | -| `video_codec` | *Optional[str]* | :heavy_minus_sign: | Video codec used. | hevc | -| `video_resolution` | *Optional[str]* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | -| `container` | *Optional[str]* | :heavy_minus_sign: | Container format of the media. | mp4 | -| `video_frame_rate` | *Optional[str]* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | -| `has_voice_activity` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `optimized_for_streaming` | [Optional[operations.GetSearchAllLibrariesOptimizedForStreaming]](../../models/operations/getsearchalllibrariesoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether the media has 64-bit offsets.
This is relevant for media files that may require larger offsets than what 32-bit integers can provide.
| false | -| `part` | List[[operations.GetSearchAllLibrariesPart](../../models/operations/getsearchalllibrariespart.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesmediacontainer.md b/docs/models/operations/getsearchalllibrariesmediacontainer.md deleted file mode 100644 index 0488780..0000000 --- a/docs/models/operations/getsearchalllibrariesmediacontainer.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetSearchAllLibrariesMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | -| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `allow_sync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `identifier` | *str* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | The unique identifier for the library section. | 2 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | The title of the library section. | TV Series | -| `library_section_uuid` | *Optional[str]* | :heavy_minus_sign: | The universally unique identifier for the library section. | e69655a2-ef48-4aba-bb19-0cc34d1e7d36 | -| `media_tag_prefix` | *str* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `media_tag_version` | *int* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `search_result` | List[[operations.SearchResult](../../models/operations/searchresult.md)] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesmetadata.md b/docs/models/operations/getsearchalllibrariesmetadata.md deleted file mode 100644 index 787075c..0000000 --- a/docs/models/operations/getsearchalllibrariesmetadata.md +++ /dev/null @@ -1,82 +0,0 @@ -# GetSearchAllLibrariesMetadata - -Unknown - - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `rating_key` | *str* | :heavy_check_mark: | The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API. | 58683 | -| `key` | *str* | :heavy_check_mark: | The unique key for the media item. | /library/metadata/58683 | -| `guid` | *str* | :heavy_check_mark: | The globally unique identifier for the media item. | plex://movie/5d7768ba96b655001fdc0408 | -| `slug` | *str* | :heavy_check_mark: | A URL‐friendly version of the media title. | 4-for-texas | -| `studio` | *Optional[str]* | :heavy_minus_sign: | The studio that produced the media item. | 20th Century Studios | -| `type` | [operations.GetSearchAllLibrariesType](../../models/operations/getsearchalllibrariestype.md) | :heavy_check_mark: | N/A | movie | -| `title` | *str* | :heavy_check_mark: | The title of the media item. | Avatar: The Way of Water | -| `banner` | *str* | :heavy_check_mark: | The banner image URL for the media item. | /library/metadata/58683/banner/1703239236 | -| `title_sort` | *str* | :heavy_check_mark: | The sort title used for ordering media items. | Whale | -| `content_rating` | *Optional[str]* | :heavy_minus_sign: | The content rating for the media item. | PG-13 | -| `summary` | *str* | :heavy_check_mark: | A synopsis of the media item. | Jake Sully lives with his newfound family formed on the extrasolar moon Pandora.
Once a familiar threat returns to finish what was previously started, Jake must
work with Neytiri and the army of the Na'vi race to protect their home.
| -| `rating` | *float* | :heavy_check_mark: | The critic rating for the media item. | 7.6 | -| `audience_rating` | *float* | :heavy_check_mark: | The audience rating for the media item. | 9.2 | -| `year` | *Optional[int]* | :heavy_minus_sign: | The release year of the media item. | 2022 | -| `tagline` | *str* | :heavy_check_mark: | A brief tagline for the media item. | Return to Pandora. | -| `thumb` | *str* | :heavy_check_mark: | The thumbnail image URL for the media item. | /library/metadata/58683/thumb/1703239236 | -| `art` | *str* | :heavy_check_mark: | The art image URL for the media item. | /library/metadata/58683/art/1703239236 | -| `theme` | *str* | :heavy_check_mark: | The theme URL for the media item. | /library/metadata/1/theme/1705636920 | -| `index` | *int* | :heavy_check_mark: | The index position of the media item. | 1 | -| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | The number of leaf items (end nodes) under this media item. | 14 | -| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | The number of leaf items that have been viewed. | 0 | -| `child_count` | *int* | :heavy_check_mark: | The number of child items associated with this media item. | 1 | -| `season_count` | *int* | :heavy_check_mark: | The total number of seasons (for TV shows). | 2022 | -| `duration` | *int* | :heavy_check_mark: | The duration of the media item in milliseconds. | 11558112 | -| `originally_available_at` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | The original release date of the media item. | 2022-12-14 | -| `added_at` | *int* | :heavy_check_mark: | N/A | 1556281940 | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | Unix epoch datetime in seconds | 1556281940 | -| `parent_year` | *Optional[int]* | :heavy_minus_sign: | The release year of the parent media item. | 2010 | -| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | The URL for the audience rating image. | rottentomatoes://image.rating.upright | -| `chapter_source` | *Optional[str]* | :heavy_minus_sign: | The source from which chapter data is derived. | media | -| `primary_extra_key` | *Optional[str]* | :heavy_minus_sign: | The primary extra key associated with this media item. | /library/metadata/58684 | -| `original_title` | *Optional[str]* | :heavy_minus_sign: | The original title of the media item (if different). | 映画 ブラッククローバー 魔法帝の剣 | -| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the parent media item. | 66 | -| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key of the grandparent media item. | 66 | -| `parent_guid` | *Optional[str]* | :heavy_minus_sign: | The GUID of the parent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `grandparent_guid` | *Optional[str]* | :heavy_minus_sign: | The GUID of the grandparent media item. | plex://show/5d9c081b170e24001f2a7be4 | -| `grandparent_slug` | *Optional[str]* | :heavy_minus_sign: | The slug for the grandparent media item. | alice-in-borderland-2020 | -| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | The key of the grandparent media item. | /library/metadata/66 | -| `parent_key` | *Optional[str]* | :heavy_minus_sign: | The key of the parent media item. | /library/metadata/66 | -| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | The title of the grandparent media item. | Caprica | -| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail URL for the grandparent media item. | /library/metadata/66/thumb/1705716261 | -| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | The theme URL for the grandparent media item. | /library/metadata/66/theme/1705716261 | -| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | The art URL for the grandparent media item. | /library/metadata/66/art/1705716261 | -| `parent_title` | *Optional[str]* | :heavy_minus_sign: | The title of the parent media item. | Caprica | -| `parent_index` | *Optional[int]* | :heavy_minus_sign: | The index position of the parent media item. | 1 | -| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | The thumbnail URL for the parent media item. | /library/metadata/66/thumb/1705716261 | -| `rating_image` | *Optional[str]* | :heavy_minus_sign: | The URL for the rating image. | rottentomatoes://image.rating.ripe | -| `view_count` | *Optional[int]* | :heavy_minus_sign: | The number of times this media item has been viewed. | 1 | -| `view_offset` | *Optional[int]* | :heavy_minus_sign: | The current playback offset (in milliseconds). | 5222500 | -| `skip_count` | *Optional[int]* | :heavy_minus_sign: | The number of times this media item has been skipped. | 1 | -| `subtype` | *Optional[str]* | :heavy_minus_sign: | A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip. | clip | -| `last_rated_at` | *Optional[int]* | :heavy_minus_sign: | The Unix timestamp representing the last time the item was rated. | 1721813113 | -| `created_at_accuracy` | *Optional[str]* | :heavy_minus_sign: | The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available). | epoch,local | -| `created_at_tz_offset` | *Optional[str]* | :heavy_minus_sign: | The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC. | 0 | -| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | Unix timestamp for when the media item was last viewed. | 1682752242 | -| `user_rating` | *Optional[float]* | :heavy_minus_sign: | The rating provided by a user for the item. This value is expressed as a decimal number. | 10 | -| `image` | List[[operations.GetSearchAllLibrariesImage](../../models/operations/getsearchalllibrariesimage.md)] | :heavy_minus_sign: | N/A | | -| `ultra_blur_colors` | [Optional[operations.GetSearchAllLibrariesUltraBlurColors]](../../models/operations/getsearchalllibrariesultrablurcolors.md) | :heavy_minus_sign: | N/A | | -| `guids` | List[[operations.GetSearchAllLibrariesGuids](../../models/operations/getsearchalllibrariesguids.md)] | :heavy_minus_sign: | N/A | | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | The identifier for the library section. | 1 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | The title of the library section. | Movies | -| `library_section_key` | *Optional[str]* | :heavy_minus_sign: | The key corresponding to the library section. | /library/sections/1 | -| `show_ordering` | [Optional[operations.GetSearchAllLibrariesShowOrdering]](../../models/operations/getsearchalllibrariesshowordering.md) | :heavy_minus_sign: | Setting that indicates the episode ordering for the show.
Options:
- None = Library default
- tmdbAiring = The Movie Database (Aired)
- aired = TheTVDB (Aired)
- dvd = TheTVDB (DVD)
- absolute = TheTVDB (Absolute)
| absolute | -| `flatten_seasons` | [Optional[operations.GetSearchAllLibrariesFlattenSeasons]](../../models/operations/getsearchalllibrariesflattenseasons.md) | :heavy_minus_sign: | Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).
| 1 | -| `skip_children` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether child items should be skipped. | false | -| `media` | List[[operations.GetSearchAllLibrariesMedia](../../models/operations/getsearchalllibrariesmedia.md)] | :heavy_minus_sign: | N/A | | -| `genre` | List[[operations.GetSearchAllLibrariesGenre](../../models/operations/getsearchalllibrariesgenre.md)] | :heavy_minus_sign: | N/A | | -| `country` | List[[operations.GetSearchAllLibrariesCountry](../../models/operations/getsearchalllibrariescountry.md)] | :heavy_minus_sign: | N/A | | -| `director` | List[[operations.GetSearchAllLibrariesDirector](../../models/operations/getsearchalllibrariesdirector.md)] | :heavy_minus_sign: | N/A | | -| `writer` | List[[operations.GetSearchAllLibrariesWriter](../../models/operations/getsearchalllibrarieswriter.md)] | :heavy_minus_sign: | N/A | | -| `role` | List[[operations.GetSearchAllLibrariesRole](../../models/operations/getsearchalllibrariesrole.md)] | :heavy_minus_sign: | N/A | | -| `location` | List[[operations.GetSearchAllLibrariesLocation](../../models/operations/getsearchalllibrarieslocation.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesoptimizedforstreaming.md b/docs/models/operations/getsearchalllibrariesoptimizedforstreaming.md deleted file mode 100644 index 2b56314..0000000 --- a/docs/models/operations/getsearchalllibrariesoptimizedforstreaming.md +++ /dev/null @@ -1,19 +0,0 @@ -# GetSearchAllLibrariesOptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - -## Supported Types - -### `operations.GetSearchAllLibrariesOptimizedForStreaming1` - -```python -value: operations.GetSearchAllLibrariesOptimizedForStreaming1 = /* values here */ -``` - -### `bool` - -```python -value: bool = /* values here */ -``` - diff --git a/docs/models/operations/getsearchalllibrariesoptimizedforstreaming1.md b/docs/models/operations/getsearchalllibrariesoptimizedforstreaming1.md deleted file mode 100644 index ff8e21a..0000000 --- a/docs/models/operations/getsearchalllibrariesoptimizedforstreaming1.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetSearchAllLibrariesOptimizedForStreaming1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesoptimizedforstreaminglibrary1.md b/docs/models/operations/getsearchalllibrariesoptimizedforstreaminglibrary1.md deleted file mode 100644 index b078b22..0000000 --- a/docs/models/operations/getsearchalllibrariesoptimizedforstreaminglibrary1.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetSearchAllLibrariesOptimizedForStreamingLibrary1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariespart.md b/docs/models/operations/getsearchalllibrariespart.md deleted file mode 100644 index 1fe8ac1..0000000 --- a/docs/models/operations/getsearchalllibrariespart.md +++ /dev/null @@ -1,22 +0,0 @@ -# GetSearchAllLibrariesPart - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `accessible` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the part is accessible. | true | -| `exists` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the part exists. | true | -| `id` | *int* | :heavy_check_mark: | Unique part identifier. | 418385 | -| `key` | *Optional[str]* | :heavy_minus_sign: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | -| `indexes` | *Optional[str]* | :heavy_minus_sign: | N/A | sd | -| `duration` | *Optional[int]* | :heavy_minus_sign: | Duration of the part in milliseconds. | 9610350 | -| `file` | *Optional[str]* | :heavy_minus_sign: | File path for the part. | /mnt/Movies_1/W/Wicked (2024).mkv | -| `size` | *Optional[int]* | :heavy_minus_sign: | File size in bytes. | 30649952104 | -| `packet_length` | *Optional[int]* | :heavy_minus_sign: | N/A | 188 | -| `container` | *Optional[str]* | :heavy_minus_sign: | Container format of the part. | mkv | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | Video profile for the part. | main 10 | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `optimized_for_streaming` | [Optional[operations.GetSearchAllLibrariesLibraryOptimizedForStreaming]](../../models/operations/getsearchalllibrarieslibraryoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true
| | -| `has_thumbnail` | [Optional[operations.GetSearchAllLibrariesHasThumbnail]](../../models/operations/getsearchalllibrarieshasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesqueryparamincludecollections.md b/docs/models/operations/getsearchalllibrariesqueryparamincludecollections.md deleted file mode 100644 index 4e0bd5e..0000000 --- a/docs/models/operations/getsearchalllibrariesqueryparamincludecollections.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchAllLibrariesQueryParamIncludeCollections - -Whether to include collections in the search results. - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md b/docs/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md deleted file mode 100644 index bc82aa8..0000000 --- a/docs/models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchAllLibrariesQueryParamIncludeExternalMedia - -Whether to include external media in the search results. - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesrequest.md b/docs/models/operations/getsearchalllibrariesrequest.md deleted file mode 100644 index e134276..0000000 --- a/docs/models/operations/getsearchalllibrariesrequest.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetSearchAllLibrariesRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `query` | *str* | :heavy_check_mark: | The search query term. | | -| `client_id` | *str* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | -| `limit` | *Optional[int]* | :heavy_minus_sign: | Limit the number of results returned. | | -| `search_types` | List[[operations.SearchTypes](../../models/operations/searchtypes.md)] | :heavy_minus_sign: | A comma-separated list of search types to include. Valid values are: movies, music, otherVideos, people, tv.
| movies,music,otherVideos,people,tv | -| `include_collections` | [Optional[operations.GetSearchAllLibrariesQueryParamIncludeCollections]](../../models/operations/getsearchalllibrariesqueryparamincludecollections.md) | :heavy_minus_sign: | Whether to include collections in the search results. | 1 | -| `include_external_media` | [Optional[operations.GetSearchAllLibrariesQueryParamIncludeExternalMedia]](../../models/operations/getsearchalllibrariesqueryparamincludeexternalmedia.md) | :heavy_minus_sign: | Whether to include external media in the search results. | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesresponse.md b/docs/models/operations/getsearchalllibrariesresponse.md deleted file mode 100644 index c738e95..0000000 --- a/docs/models/operations/getsearchalllibrariesresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchAllLibrariesResponse - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetSearchAllLibrariesResponseBody]](../../models/operations/getsearchalllibrariesresponsebody.md) | :heavy_minus_sign: | The libraries available on the Server | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesresponsebody.md b/docs/models/operations/getsearchalllibrariesresponsebody.md deleted file mode 100644 index 850d174..0000000 --- a/docs/models/operations/getsearchalllibrariesresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchAllLibrariesResponseBody - -The libraries available on the Server - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `media_container` | [operations.GetSearchAllLibrariesMediaContainer](../../models/operations/getsearchalllibrariesmediacontainer.md) | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesrole.md b/docs/models/operations/getsearchalllibrariesrole.md deleted file mode 100644 index 56fd714..0000000 --- a/docs/models/operations/getsearchalllibrariesrole.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchAllLibrariesRole - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique identifier for the role.
NOTE: This is different for each Plex server and is not globally unique.
| 126522 | -| `tag` | *str* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | -| `role` | *Optional[str]* | :heavy_minus_sign: | The role played by the actor in the media item. | Self - Judge | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesshowordering.md b/docs/models/operations/getsearchalllibrariesshowordering.md deleted file mode 100644 index ae56245..0000000 --- a/docs/models/operations/getsearchalllibrariesshowordering.md +++ /dev/null @@ -1,21 +0,0 @@ -# GetSearchAllLibrariesShowOrdering - -Setting that indicates the episode ordering for the show. -Options: - - None = Library default - - tmdbAiring = The Movie Database (Aired) - - aired = TheTVDB (Aired) - - dvd = TheTVDB (DVD) - - absolute = TheTVDB (Absolute) - - - -## Values - -| Name | Value | -| --------------- | --------------- | -| `NONE` | None | -| `TMDB_AIRING` | tmdbAiring | -| `TVDB_AIRED` | aired | -| `TVDB_DVD` | dvd | -| `TVDB_ABSOLUTE` | absolute | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariestype.md b/docs/models/operations/getsearchalllibrariestype.md deleted file mode 100644 index 71241a6..0000000 --- a/docs/models/operations/getsearchalllibrariestype.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetSearchAllLibrariesType - -The type of media content in the Plex library. This can represent videos, music, or photos. - - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `MOVIE` | movie | -| `TV_SHOW` | show | -| `SEASON` | season | -| `EPISODE` | episode | -| `ARTIST` | artist | -| `ALBUM` | album | -| `TRACK` | track | -| `PHOTO_ALBUM` | photoalbum | -| `PHOTO` | photo | -| `COLLECTION` | collection | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrariesultrablurcolors.md b/docs/models/operations/getsearchalllibrariesultrablurcolors.md deleted file mode 100644 index 0f81d4b..0000000 --- a/docs/models/operations/getsearchalllibrariesultrablurcolors.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchAllLibrariesUltraBlurColors - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `top_left` | *str* | :heavy_check_mark: | N/A | 11333b | -| `top_right` | *str* | :heavy_check_mark: | N/A | 0a232d | -| `bottom_right` | *str* | :heavy_check_mark: | N/A | 73958 | -| `bottom_left` | *str* | :heavy_check_mark: | N/A | 1f5066 | \ No newline at end of file diff --git a/docs/models/operations/getsearchalllibrarieswriter.md b/docs/models/operations/getsearchalllibrarieswriter.md deleted file mode 100644 index 59671c1..0000000 --- a/docs/models/operations/getsearchalllibrarieswriter.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchAllLibrariesWriter - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique identifier for the writer. | 126522 | -| `tag` | *str* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the writer. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/models/operations/getsearchlibrarymediacontainer.md b/docs/models/operations/getsearchlibrarymediacontainer.md deleted file mode 100644 index b5448f8..0000000 --- a/docs/models/operations/getsearchlibrarymediacontainer.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetSearchLibraryMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | -| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /:/resources/show-fanart.jpg | -| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `media_tag_prefix` | *Optional[str]* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | -| `media_tag_version` | *Optional[int]* | :heavy_minus_sign: | N/A | 1698860922 | -| `nocache` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /:/resources/show.png | -| `title1` | *Optional[str]* | :heavy_minus_sign: | N/A | TV Shows | -| `title2` | *Optional[str]* | :heavy_minus_sign: | N/A | Search for '' | -| `view_group` | *Optional[str]* | :heavy_minus_sign: | N/A | season | -| `view_mode` | *Optional[int]* | :heavy_minus_sign: | N/A | 65593 | -| `metadata` | List[[operations.GetSearchLibraryMetadata](../../models/operations/getsearchlibrarymetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsearchlibrarymetadata.md b/docs/models/operations/getsearchlibrarymetadata.md deleted file mode 100644 index 2c418e4..0000000 --- a/docs/models/operations/getsearchlibrarymetadata.md +++ /dev/null @@ -1,27 +0,0 @@ -# GetSearchLibraryMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 2 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/2/children | -| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://season/602e67e766dfdb002c0a1b5b | -| `parent_guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://show/5d9c086c7d06d9001ffd27aa | -| `parent_studio` | *Optional[str]* | :heavy_minus_sign: | N/A | Mutant Enemy Productions | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | season | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Season 1 | -| `parent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/1 | -| `parent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Firefly | -| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | Captain Malcolm 'Mal' Reynolds is a former galactic war veteran who is the captain of the transport ship "Serenity". Mal and his crew, ensign Zoe Alleyne Washburne; Zoe's husband, pilot Hoban 'Wash' Washburne; muscular mercenary Jayne Cobb; young mechanic Kaylee Frye; former Alliance medical officer Simon Tam; his disturbed teenage sister River (both on the run from the interplanetary government "The Alliance"); the beautiful courtesan Inara Serra; and preacher Shepherd Book do any jobs, legal or illegal, they can find as the Serenity crew travels across the outskirts of outer space. | -| `index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `parent_index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `parent_year` | *Optional[int]* | :heavy_minus_sign: | N/A | 2002 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/2/thumb/1705636920 | -| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/1/art/1705636920 | -| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/1/thumb/1705636920 | -| `parent_theme` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/1/theme/1705636920 | -| `added_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705636916 | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705636920 | \ No newline at end of file diff --git a/docs/models/operations/getsearchlibraryqueryparamtype.md b/docs/models/operations/getsearchlibraryqueryparamtype.md deleted file mode 100644 index 1804367..0000000 --- a/docs/models/operations/getsearchlibraryqueryparamtype.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetSearchLibraryQueryParamType - -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `MOVIE` | 1 | -| `TV_SHOW` | 2 | -| `SEASON` | 3 | -| `EPISODE` | 4 | -| `ARTIST` | 5 | -| `ALBUM` | 6 | -| `TRACK` | 7 | -| `PHOTO_ALBUM` | 8 | -| `PHOTO` | 9 | \ No newline at end of file diff --git a/docs/models/operations/getsearchlibraryrequest.md b/docs/models/operations/getsearchlibraryrequest.md deleted file mode 100644 index 99ed3fb..0000000 --- a/docs/models/operations/getsearchlibraryrequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetSearchLibraryRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `type` | [operations.GetSearchLibraryQueryParamType](../../models/operations/getsearchlibraryqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | \ No newline at end of file diff --git a/docs/models/operations/getsearchlibraryresponse.md b/docs/models/operations/getsearchlibraryresponse.md deleted file mode 100644 index 5cc9d1c..0000000 --- a/docs/models/operations/getsearchlibraryresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchLibraryResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetSearchLibraryResponseBody]](../../models/operations/getsearchlibraryresponsebody.md) | :heavy_minus_sign: | The contents of the library by section and type | \ No newline at end of file diff --git a/docs/models/operations/getsearchlibraryresponsebody.md b/docs/models/operations/getsearchlibraryresponsebody.md deleted file mode 100644 index e735587..0000000 --- a/docs/models/operations/getsearchlibraryresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchLibraryResponseBody - -The contents of the library by section and type - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetSearchLibraryMediaContainer]](../../models/operations/getsearchlibrarymediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getsearchresultscountry.md b/docs/models/operations/getsearchresultscountry.md deleted file mode 100644 index 855a19f..0000000 --- a/docs/models/operations/getsearchresultscountry.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetSearchResultsCountry - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | United States of America | \ No newline at end of file diff --git a/docs/models/operations/getsearchresultsdirector.md b/docs/models/operations/getsearchresultsdirector.md deleted file mode 100644 index 5576acd..0000000 --- a/docs/models/operations/getsearchresultsdirector.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetSearchResultsDirector - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Brian De Palma | \ No newline at end of file diff --git a/docs/models/operations/getsearchresultsgenre.md b/docs/models/operations/getsearchresultsgenre.md deleted file mode 100644 index 56cae67..0000000 --- a/docs/models/operations/getsearchresultsgenre.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetSearchResultsGenre - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Action | \ No newline at end of file diff --git a/docs/models/operations/getsearchresultsmedia.md b/docs/models/operations/getsearchresultsmedia.md deleted file mode 100644 index 2fa8136..0000000 --- a/docs/models/operations/getsearchresultsmedia.md +++ /dev/null @@ -1,22 +0,0 @@ -# GetSearchResultsMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `id` | *Optional[float]* | :heavy_minus_sign: | N/A | 26610 | -| `duration` | *Optional[float]* | :heavy_minus_sign: | N/A | 6612628 | -| `bitrate` | *Optional[float]* | :heavy_minus_sign: | N/A | 4751 | -| `width` | *Optional[float]* | :heavy_minus_sign: | N/A | 1916 | -| `height` | *Optional[float]* | :heavy_minus_sign: | N/A | 796 | -| `aspect_ratio` | *Optional[float]* | :heavy_minus_sign: | N/A | 2.35 | -| `audio_channels` | *Optional[float]* | :heavy_minus_sign: | N/A | 6 | -| `audio_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | aac | -| `video_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | hevc | -| `video_resolution` | *Optional[float]* | :heavy_minus_sign: | N/A | 1080 | -| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mkv | -| `video_frame_rate` | *Optional[str]* | :heavy_minus_sign: | N/A | 24p | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | lc | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | main 10 | -| `part` | List[[operations.GetSearchResultsPart](../../models/operations/getsearchresultspart.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsearchresultsmediacontainer.md b/docs/models/operations/getsearchresultsmediacontainer.md deleted file mode 100644 index 1916c2f..0000000 --- a/docs/models/operations/getsearchresultsmediacontainer.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetSearchResultsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `size` | *Optional[float]* | :heavy_minus_sign: | N/A | 26 | -| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | com.plexapp.plugins.library | -| `media_tag_prefix` | *Optional[str]* | :heavy_minus_sign: | N/A | /system/bundle/media/flags/ | -| `media_tag_version` | *Optional[float]* | :heavy_minus_sign: | N/A | 1680021154 | -| `metadata` | List[[operations.GetSearchResultsMetadata](../../models/operations/getsearchresultsmetadata.md)] | :heavy_minus_sign: | N/A | | -| `provider` | List[[operations.Provider](../../models/operations/provider.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsearchresultsmetadata.md b/docs/models/operations/getsearchresultsmetadata.md deleted file mode 100644 index 7073ec0..0000000 --- a/docs/models/operations/getsearchresultsmetadata.md +++ /dev/null @@ -1,41 +0,0 @@ -# GetSearchResultsMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `library_section_id` | *Optional[float]* | :heavy_minus_sign: | N/A | 1 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Movies | -| `library_section_uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | 322a231a-b7f7-49f5-920f-14c61199cd30 | -| `personal` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `source_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Hera | -| `rating_key` | *Optional[float]* | :heavy_minus_sign: | N/A | 10398 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/10398 | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://movie/5d7768284de0ee001fcc8f52 | -| `studio` | *Optional[str]* | :heavy_minus_sign: | N/A | Paramount | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | movie | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Mission: Impossible | -| `content_rating` | *Optional[str]* | :heavy_minus_sign: | N/A | PG-13 | -| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | When Ethan Hunt the leader of a crack espionage team whose perilous operation has gone awry with no explanation discovers that a mole has penetrated the CIA he's surprised to learn that he's the No. 1 suspect. To clear his name Hunt now must ferret out the real double agent and in the process even the score. | -| `rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 6.6 | -| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 7.1 | -| `year` | *Optional[float]* | :heavy_minus_sign: | N/A | 1996 | -| `tagline` | *Optional[str]* | :heavy_minus_sign: | N/A | Expect the impossible. | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/10398/thumb/1679505055 | -| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/10398/art/1679505055 | -| `duration` | *Optional[float]* | :heavy_minus_sign: | N/A | 6612628 | -| `originally_available_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 1996-05-22 00:00:00 +0000 UTC | -| `added_at` | *Optional[float]* | :heavy_minus_sign: | N/A | 1589234571 | -| `updated_at` | *Optional[float]* | :heavy_minus_sign: | N/A | 1679505055 | -| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | -| `chapter_source` | *Optional[str]* | :heavy_minus_sign: | N/A | media | -| `primary_extra_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/10501 | -| `rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.ripe | -| `media` | List[[operations.GetSearchResultsMedia](../../models/operations/getsearchresultsmedia.md)] | :heavy_minus_sign: | N/A | | -| `genre` | List[[operations.GetSearchResultsGenre](../../models/operations/getsearchresultsgenre.md)] | :heavy_minus_sign: | N/A | | -| `director` | List[[operations.GetSearchResultsDirector](../../models/operations/getsearchresultsdirector.md)] | :heavy_minus_sign: | N/A | | -| `writer` | List[[operations.GetSearchResultsWriter](../../models/operations/getsearchresultswriter.md)] | :heavy_minus_sign: | N/A | | -| `country` | List[[operations.GetSearchResultsCountry](../../models/operations/getsearchresultscountry.md)] | :heavy_minus_sign: | N/A | | -| `role` | List[[operations.GetSearchResultsRole](../../models/operations/getsearchresultsrole.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsearchresultspart.md b/docs/models/operations/getsearchresultspart.md deleted file mode 100644 index 8ca3a9f..0000000 --- a/docs/models/operations/getsearchresultspart.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetSearchResultsPart - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `id` | *Optional[float]* | :heavy_minus_sign: | N/A | 26610 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/parts/26610/1589234571/file.mkv | -| `duration` | *Optional[float]* | :heavy_minus_sign: | N/A | 6612628 | -| `file` | *Optional[str]* | :heavy_minus_sign: | N/A | /movies/Mission Impossible (1996)/Mission Impossible (1996) Bluray-1080p.mkv | -| `size` | *Optional[float]* | :heavy_minus_sign: | N/A | 3926903851 | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | lc | -| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mkv | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | N/A | main 10 | \ No newline at end of file diff --git a/docs/models/operations/getsearchresultsrequest.md b/docs/models/operations/getsearchresultsrequest.md deleted file mode 100644 index b99ffee..0000000 --- a/docs/models/operations/getsearchresultsrequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetSearchResultsRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | ------------------------------ | -| `query` | *str* | :heavy_check_mark: | The search query string to use | 110 | \ No newline at end of file diff --git a/docs/models/operations/getsearchresultsresponse.md b/docs/models/operations/getsearchresultsresponse.md deleted file mode 100644 index 3ec9265..0000000 --- a/docs/models/operations/getsearchresultsresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSearchResultsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetSearchResultsResponseBody]](../../models/operations/getsearchresultsresponsebody.md) | :heavy_minus_sign: | Search Results | \ No newline at end of file diff --git a/docs/models/operations/getsearchresultsresponsebody.md b/docs/models/operations/getsearchresultsresponsebody.md deleted file mode 100644 index bbf81b9..0000000 --- a/docs/models/operations/getsearchresultsresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSearchResultsResponseBody - -Search Results - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetSearchResultsMediaContainer]](../../models/operations/getsearchresultsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getsearchresultsrole.md b/docs/models/operations/getsearchresultsrole.md deleted file mode 100644 index 02a1f66..0000000 --- a/docs/models/operations/getsearchresultsrole.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetSearchResultsRole - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Tom Cruise | \ No newline at end of file diff --git a/docs/models/operations/getsearchresultswriter.md b/docs/models/operations/getsearchresultswriter.md deleted file mode 100644 index f8d31d3..0000000 --- a/docs/models/operations/getsearchresultswriter.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetSearchResultsWriter - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | David Koepp | \ No newline at end of file diff --git a/docs/models/operations/getsectionfiltersglobals.md b/docs/models/operations/getsectionfiltersglobals.md new file mode 100644 index 0000000..5c55111 --- /dev/null +++ b/docs/models/operations/getsectionfiltersglobals.md @@ -0,0 +1,18 @@ +# GetSectionFiltersGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getsectionfiltersmediacontainer.md b/docs/models/operations/getsectionfiltersmediacontainer.md new file mode 100644 index 0000000..652fdcd --- /dev/null +++ b/docs/models/operations/getsectionfiltersmediacontainer.md @@ -0,0 +1,17 @@ +# GetSectionFiltersMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `directory` | List[[components.Directory](../../models/components/directory.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getsectionfiltersrequest.md b/docs/models/operations/getsectionfiltersrequest.md new file mode 100644 index 0000000..b2bc892 --- /dev/null +++ b/docs/models/operations/getsectionfiltersrequest.md @@ -0,0 +1,19 @@ +# GetSectionFiltersRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/models/operations/getsectionfiltersresponse.md b/docs/models/operations/getsectionfiltersresponse.md new file mode 100644 index 0000000..2ff7309 --- /dev/null +++ b/docs/models/operations/getsectionfiltersresponse.md @@ -0,0 +1,11 @@ +# GetSectionFiltersResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetSectionFiltersResponseBody]](../../models/operations/getsectionfiltersresponsebody.md) | :heavy_minus_sign: | The filters on the section | \ No newline at end of file diff --git a/docs/models/operations/getsectionfiltersresponsebody.md b/docs/models/operations/getsectionfiltersresponsebody.md new file mode 100644 index 0000000..a7c58b2 --- /dev/null +++ b/docs/models/operations/getsectionfiltersresponsebody.md @@ -0,0 +1,10 @@ +# GetSectionFiltersResponseBody + +The filters on the section + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.GetSectionFiltersMediaContainer]](../../models/operations/getsectionfiltersmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getsectionhubsglobals.md b/docs/models/operations/getsectionhubsglobals.md new file mode 100644 index 0000000..0fad32c --- /dev/null +++ b/docs/models/operations/getsectionhubsglobals.md @@ -0,0 +1,18 @@ +# GetSectionHubsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getsectionhubsmediacontainer.md b/docs/models/operations/getsectionhubsmediacontainer.md new file mode 100644 index 0000000..bfba021 --- /dev/null +++ b/docs/models/operations/getsectionhubsmediacontainer.md @@ -0,0 +1,17 @@ +# GetSectionHubsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `hub` | List[[components.Hub](../../models/components/hub.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getsectionhubsrequest.md b/docs/models/operations/getsectionhubsrequest.md new file mode 100644 index 0000000..9a7b0de --- /dev/null +++ b/docs/models/operations/getsectionhubsrequest.md @@ -0,0 +1,21 @@ +# GetSectionHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | The section ID for the hubs to fetch | | +| `count` | *Optional[int]* | :heavy_minus_sign: | Limit results to count items | | +| `only_transient` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added) | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsectionhubsresponse.md b/docs/models/operations/getsectionhubsresponse.md new file mode 100644 index 0000000..30fdc6d --- /dev/null +++ b/docs/models/operations/getsectionhubsresponse.md @@ -0,0 +1,12 @@ +# GetSectionHubsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetSectionHubsResponseBody]](../../models/operations/getsectionhubsresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getsectionhubsresponsebody.md b/docs/models/operations/getsectionhubsresponsebody.md new file mode 100644 index 0000000..9550d88 --- /dev/null +++ b/docs/models/operations/getsectionhubsresponsebody.md @@ -0,0 +1,10 @@ +# GetSectionHubsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.GetSectionHubsMediaContainer]](../../models/operations/getsectionhubsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getsectionimageglobals.md b/docs/models/operations/getsectionimageglobals.md new file mode 100644 index 0000000..7374fbf --- /dev/null +++ b/docs/models/operations/getsectionimageglobals.md @@ -0,0 +1,18 @@ +# GetSectionImageGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getsectionimagerequest.md b/docs/models/operations/getsectionimagerequest.md new file mode 100644 index 0000000..ae5e4e2 --- /dev/null +++ b/docs/models/operations/getsectionimagerequest.md @@ -0,0 +1,22 @@ +# GetSectionImageRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | +| `updated_at` | *int* | :heavy_check_mark: | The update time of the image. Used for busting cache. | | +| `media_query` | [Optional[components.MediaQuery]](../../models/components/mediaquery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | +| `composite` | [Optional[components.Composite]](../../models/components/composite.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsectionimageresponse.md b/docs/models/operations/getsectionimageresponse.md new file mode 100644 index 0000000..a4498de --- /dev/null +++ b/docs/models/operations/getsectionimageresponse.md @@ -0,0 +1,10 @@ +# GetSectionImageResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/getsectionpreferencesglobals.md b/docs/models/operations/getsectionpreferencesglobals.md new file mode 100644 index 0000000..5287cce --- /dev/null +++ b/docs/models/operations/getsectionpreferencesglobals.md @@ -0,0 +1,18 @@ +# GetSectionPreferencesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getsectionpreferencesrequest.md b/docs/models/operations/getsectionpreferencesrequest.md new file mode 100644 index 0000000..b788f2f --- /dev/null +++ b/docs/models/operations/getsectionpreferencesrequest.md @@ -0,0 +1,20 @@ +# GetSectionPreferencesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | +| `agent` | *Optional[str]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsectionpreferencesresponse.md b/docs/models/operations/getsectionpreferencesresponse.md new file mode 100644 index 0000000..e78b693 --- /dev/null +++ b/docs/models/operations/getsectionpreferencesresponse.md @@ -0,0 +1,11 @@ +# GetSectionPreferencesResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_settings` | [Optional[components.MediaContainerWithSettings]](../../models/components/mediacontainerwithsettings.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getsectionsmediacontainer.md b/docs/models/operations/getsectionsmediacontainer.md new file mode 100644 index 0000000..1c0342b --- /dev/null +++ b/docs/models/operations/getsectionsmediacontainer.md @@ -0,0 +1,19 @@ +# GetSectionsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `directory` | List[[components.LibrarySection](../../models/components/librarysection.md)] | :heavy_minus_sign: | N/A | +| `title1` | *Optional[str]* | :heavy_minus_sign: | Typically just "Plex Library" | \ No newline at end of file diff --git a/docs/models/operations/getsectionsprefsglobals.md b/docs/models/operations/getsectionsprefsglobals.md new file mode 100644 index 0000000..9855e57 --- /dev/null +++ b/docs/models/operations/getsectionsprefsglobals.md @@ -0,0 +1,18 @@ +# GetSectionsPrefsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getsectionsprefsrequest.md b/docs/models/operations/getsectionsprefsrequest.md new file mode 100644 index 0000000..74e17b8 --- /dev/null +++ b/docs/models/operations/getsectionsprefsrequest.md @@ -0,0 +1,20 @@ +# GetSectionsPrefsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `type` | *int* | :heavy_check_mark: | The metadata type | | +| `agent` | *Optional[str]* | :heavy_minus_sign: | The metadata agent in use | | \ No newline at end of file diff --git a/docs/models/operations/getsectionsprefsresponse.md b/docs/models/operations/getsectionsprefsresponse.md new file mode 100644 index 0000000..5ad2e08 --- /dev/null +++ b/docs/models/operations/getsectionsprefsresponse.md @@ -0,0 +1,11 @@ +# GetSectionsPrefsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `request_handler_slash_get_responses_200` | [Optional[components.RequestHandlerSlashGetResponses200]](../../models/components/requesthandlerslashgetresponses200.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getsectionsresponse.md b/docs/models/operations/getsectionsresponse.md new file mode 100644 index 0000000..7862e0f --- /dev/null +++ b/docs/models/operations/getsectionsresponse.md @@ -0,0 +1,12 @@ +# GetSectionsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetSectionsResponseBody]](../../models/operations/getsectionsresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getsectionsresponsebody.md b/docs/models/operations/getsectionsresponsebody.md new file mode 100644 index 0000000..940f9c6 --- /dev/null +++ b/docs/models/operations/getsectionsresponsebody.md @@ -0,0 +1,10 @@ +# GetSectionsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.GetSectionsMediaContainer]](../../models/operations/getsectionsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getserveractivitiesmediacontainer.md b/docs/models/operations/getserveractivitiesmediacontainer.md deleted file mode 100644 index 0acf6de..0000000 --- a/docs/models/operations/getserveractivitiesmediacontainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetServerActivitiesMediaContainer - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| `size` | *Optional[float]* | :heavy_minus_sign: | N/A | -| `activity` | List[[operations.Activity](../../models/operations/activity.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getserveractivitiesresponse.md b/docs/models/operations/getserveractivitiesresponse.md deleted file mode 100644 index 23aaa87..0000000 --- a/docs/models/operations/getserveractivitiesresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerActivitiesResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetServerActivitiesResponseBody]](../../models/operations/getserveractivitiesresponsebody.md) | :heavy_minus_sign: | The Server Activities | \ No newline at end of file diff --git a/docs/models/operations/getserveractivitiesresponsebody.md b/docs/models/operations/getserveractivitiesresponsebody.md deleted file mode 100644 index 809e48d..0000000 --- a/docs/models/operations/getserveractivitiesresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerActivitiesResponseBody - -The Server Activities - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetServerActivitiesMediaContainer]](../../models/operations/getserveractivitiesmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getservercapabilitiesresponse.md b/docs/models/operations/getservercapabilitiesresponse.md deleted file mode 100644 index 173dccf..0000000 --- a/docs/models/operations/getservercapabilitiesresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerCapabilitiesResponse - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetServerCapabilitiesResponseBody]](../../models/operations/getservercapabilitiesresponsebody.md) | :heavy_minus_sign: | The Server Capabilities | \ No newline at end of file diff --git a/docs/models/operations/getservercapabilitiesresponsebody.md b/docs/models/operations/getservercapabilitiesresponsebody.md deleted file mode 100644 index 6bf6e65..0000000 --- a/docs/models/operations/getservercapabilitiesresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerCapabilitiesResponseBody - -The Server Capabilities - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.MediaContainer]](../../models/operations/mediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getserveridentitymediacontainer.md b/docs/models/operations/getserveridentitymediacontainer.md deleted file mode 100644 index f5eb169..0000000 --- a/docs/models/operations/getserveridentitymediacontainer.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerIdentityMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `size` | *Optional[float]* | :heavy_minus_sign: | N/A | 0 | -| `claimed` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `machine_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | 96f2fe7a78c9dc1f16a16bedbe90f98149be16b4 | -| `version` | *Optional[str]* | :heavy_minus_sign: | N/A | 1.31.3.6868-28fc46b27 | \ No newline at end of file diff --git a/docs/models/operations/getserveridentityresponse.md b/docs/models/operations/getserveridentityresponse.md deleted file mode 100644 index de7b493..0000000 --- a/docs/models/operations/getserveridentityresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerIdentityResponse - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetServerIdentityResponseBody]](../../models/operations/getserveridentityresponsebody.md) | :heavy_minus_sign: | The Server Identity information | \ No newline at end of file diff --git a/docs/models/operations/getserveridentityresponsebody.md b/docs/models/operations/getserveridentityresponsebody.md deleted file mode 100644 index 0201c88..0000000 --- a/docs/models/operations/getserveridentityresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerIdentityResponseBody - -The Server Identity information - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `media_container` | [Optional[operations.GetServerIdentityMediaContainer]](../../models/operations/getserveridentitymediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getserverinfoglobals.md b/docs/models/operations/getserverinfoglobals.md new file mode 100644 index 0000000..9dbc5eb --- /dev/null +++ b/docs/models/operations/getserverinfoglobals.md @@ -0,0 +1,18 @@ +# GetServerInfoGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getserverinforequest.md b/docs/models/operations/getserverinforequest.md new file mode 100644 index 0000000..afbbd88 --- /dev/null +++ b/docs/models/operations/getserverinforequest.md @@ -0,0 +1,18 @@ +# GetServerInfoRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getserverinforesponse.md b/docs/models/operations/getserverinforesponse.md new file mode 100644 index 0000000..3926bfb --- /dev/null +++ b/docs/models/operations/getserverinforesponse.md @@ -0,0 +1,11 @@ +# GetServerInfoResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_directory` | [Optional[components.MediaContainerWithDirectory]](../../models/components/mediacontainerwithdirectory.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getserverlistmediacontainer.md b/docs/models/operations/getserverlistmediacontainer.md deleted file mode 100644 index b6b171f..0000000 --- a/docs/models/operations/getserverlistmediacontainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetServerListMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `size` | *Optional[float]* | :heavy_minus_sign: | N/A | 1 | -| `server` | List[[operations.GetServerListServer](../../models/operations/getserverlistserver.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getserverlistresponse.md b/docs/models/operations/getserverlistresponse.md deleted file mode 100644 index 0303454..0000000 --- a/docs/models/operations/getserverlistresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerListResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetServerListResponseBody]](../../models/operations/getserverlistresponsebody.md) | :heavy_minus_sign: | List of Servers | \ No newline at end of file diff --git a/docs/models/operations/getserverlistresponsebody.md b/docs/models/operations/getserverlistresponsebody.md deleted file mode 100644 index e8b2cb0..0000000 --- a/docs/models/operations/getserverlistresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerListResponseBody - -List of Servers - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetServerListMediaContainer]](../../models/operations/getserverlistmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getserverlistserver.md b/docs/models/operations/getserverlistserver.md deleted file mode 100644 index 68b23ad..0000000 --- a/docs/models/operations/getserverlistserver.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetServerListServer - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | Hera | -| `host` | *Optional[str]* | :heavy_minus_sign: | N/A | 10.10.10.47 | -| `address` | *Optional[str]* | :heavy_minus_sign: | N/A | 10.10.10.47 | -| `port` | *Optional[float]* | :heavy_minus_sign: | N/A | 32400 | -| `machine_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | 96f2fe7a78c9dc1f16a16bedbe90f98149be16b4 | -| `version` | *Optional[str]* | :heavy_minus_sign: | N/A | 1.31.3.6868-28fc46b27 | \ No newline at end of file diff --git a/docs/models/operations/getserverpreferencesmediacontainer.md b/docs/models/operations/getserverpreferencesmediacontainer.md deleted file mode 100644 index 7f5943d..0000000 --- a/docs/models/operations/getserverpreferencesmediacontainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetServerPreferencesMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 161 | -| `setting` | List[[operations.Setting](../../models/operations/setting.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getserverpreferencesresponse.md b/docs/models/operations/getserverpreferencesresponse.md deleted file mode 100644 index 3caa8f4..0000000 --- a/docs/models/operations/getserverpreferencesresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerPreferencesResponse - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetServerPreferencesResponseBody]](../../models/operations/getserverpreferencesresponsebody.md) | :heavy_minus_sign: | Server Preferences | \ No newline at end of file diff --git a/docs/models/operations/getserverpreferencesresponsebody.md b/docs/models/operations/getserverpreferencesresponsebody.md deleted file mode 100644 index 5774150..0000000 --- a/docs/models/operations/getserverpreferencesresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetServerPreferencesResponseBody - -Server Preferences - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | -| `media_container` | [Optional[operations.GetServerPreferencesMediaContainer]](../../models/operations/getserverpreferencesmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getserverresourcesrequest.md b/docs/models/operations/getserverresourcesrequest.md deleted file mode 100644 index 9ef4ece..0000000 --- a/docs/models/operations/getserverresourcesrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerResourcesRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `include_https` | [Optional[operations.IncludeHTTPS]](../../models/operations/includehttps.md) | :heavy_minus_sign: | Include Https entries in the results | 1 | -| `include_relay` | [Optional[operations.IncludeRelay]](../../models/operations/includerelay.md) | :heavy_minus_sign: | Include Relay addresses in the results
E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400
| 1 | -| `include_i_pv6` | [Optional[operations.IncludeIPv6]](../../models/operations/includeipv6.md) | :heavy_minus_sign: | Include IPv6 entries in the results | 1 | -| `client_id` | *str* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | \ No newline at end of file diff --git a/docs/models/operations/getserverresourcesresponse.md b/docs/models/operations/getserverresourcesresponse.md deleted file mode 100644 index aa86ae4..0000000 --- a/docs/models/operations/getserverresourcesresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetServerResourcesResponse - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `plex_devices` | List[[operations.PlexDevice](../../models/operations/plexdevice.md)] | :heavy_minus_sign: | List of Plex Devices. This includes Plex hosted servers and clients | \ No newline at end of file diff --git a/docs/models/operations/getsessionhistorymediacontainer.md b/docs/models/operations/getsessionhistorymediacontainer.md deleted file mode 100644 index 81e5d2a..0000000 --- a/docs/models/operations/getsessionhistorymediacontainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetSessionHistoryMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 10855 | -| `metadata` | List[[operations.GetSessionHistoryMetadata](../../models/operations/getsessionhistorymetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsessionhistorymetadata.md b/docs/models/operations/getsessionhistorymetadata.md deleted file mode 100644 index 1fe11ba..0000000 --- a/docs/models/operations/getsessionhistorymetadata.md +++ /dev/null @@ -1,26 +0,0 @@ -# GetSessionHistoryMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `history_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /status/sessions/history/1 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/32171 | -| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 32171 | -| `library_section_id` | *Optional[str]* | :heavy_minus_sign: | N/A | 2 | -| `parent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/32170 | -| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/32132 | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | The Noise That Blue Makes | -| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Taskmaster | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | episode | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/32171/thumb/-1 | -| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/32170/thumb/1654134301 | -| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/32132/thumb/1703933346 | -| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/32132/art/1703933346 | -| `index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `parent_index` | *Optional[int]* | :heavy_minus_sign: | N/A | 13 | -| `originally_available_at` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | N/A | 2022-04-14 00:00:00 +0000 UTC | -| `viewed_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1654139223 | -| `account_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `device_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 5 | \ No newline at end of file diff --git a/docs/models/operations/getsessionhistoryrequest.md b/docs/models/operations/getsessionhistoryrequest.md deleted file mode 100644 index 0699f9c..0000000 --- a/docs/models/operations/getsessionhistoryrequest.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSessionHistoryRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `sort` | *Optional[str]* | :heavy_minus_sign: | Sorts the results by the specified field followed by the direction (asc, desc)
| | -| `account_id` | *Optional[int]* | :heavy_minus_sign: | Filter results by those that are related to a specific users id
| 1 | -| `filter_` | [Optional[operations.QueryParamFilter]](../../models/operations/queryparamfilter.md) | :heavy_minus_sign: | Filters content by field and direction/equality
(Unknown if viewedAt is the only supported column)
| {
"viewed-at-greater-than": {
"value": "viewedAt\u003e"
},
"viewed-at-greater-than-or-equal-to": {
"value": "viewedAt\u003e=\u003e"
},
"viewed-at-less-than": {
"value": "viewedAt\u003c"
}
} | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | Filters the results based on the id of a valid library section
| 12 | \ No newline at end of file diff --git a/docs/models/operations/getsessionhistoryresponse.md b/docs/models/operations/getsessionhistoryresponse.md deleted file mode 100644 index 273575a..0000000 --- a/docs/models/operations/getsessionhistoryresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetSessionHistoryResponse - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetSessionHistoryResponseBody]](../../models/operations/getsessionhistoryresponsebody.md) | :heavy_minus_sign: | List of Plex Sessions | \ No newline at end of file diff --git a/docs/models/operations/getsessionhistoryresponsebody.md b/docs/models/operations/getsessionhistoryresponsebody.md deleted file mode 100644 index a2e16aa..0000000 --- a/docs/models/operations/getsessionhistoryresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSessionHistoryResponseBody - -List of Plex Sessions - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `media_container` | [Optional[operations.GetSessionHistoryMediaContainer]](../../models/operations/getsessionhistorymediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getsessionplaylistindexglobals.md b/docs/models/operations/getsessionplaylistindexglobals.md new file mode 100644 index 0000000..eb390bd --- /dev/null +++ b/docs/models/operations/getsessionplaylistindexglobals.md @@ -0,0 +1,18 @@ +# GetSessionPlaylistIndexGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getsessionplaylistindexrequest.md b/docs/models/operations/getsessionplaylistindexrequest.md new file mode 100644 index 0000000..d0b1b1e --- /dev/null +++ b/docs/models/operations/getsessionplaylistindexrequest.md @@ -0,0 +1,20 @@ +# GetSessionPlaylistIndexRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `session_id` | *str* | :heavy_check_mark: | The session id | | +| `consumer_id` | *str* | :heavy_check_mark: | The consumer id | | \ No newline at end of file diff --git a/docs/models/operations/getsessionplaylistindexresponse.md b/docs/models/operations/getsessionplaylistindexresponse.md new file mode 100644 index 0000000..03a931d --- /dev/null +++ b/docs/models/operations/getsessionplaylistindexresponse.md @@ -0,0 +1,10 @@ +# GetSessionPlaylistIndexResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/getsessionsegmentglobals.md b/docs/models/operations/getsessionsegmentglobals.md new file mode 100644 index 0000000..474c7ed --- /dev/null +++ b/docs/models/operations/getsessionsegmentglobals.md @@ -0,0 +1,18 @@ +# GetSessionSegmentGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getsessionsegmentrequest.md b/docs/models/operations/getsessionsegmentrequest.md new file mode 100644 index 0000000..ebc9ca6 --- /dev/null +++ b/docs/models/operations/getsessionsegmentrequest.md @@ -0,0 +1,21 @@ +# GetSessionSegmentRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `session_id` | *str* | :heavy_check_mark: | The session id | | +| `consumer_id` | *str* | :heavy_check_mark: | The consumer id | | +| `segment_id` | *str* | :heavy_check_mark: | The segment id | | \ No newline at end of file diff --git a/docs/models/operations/getsessionsegmentresponse.md b/docs/models/operations/getsessionsegmentresponse.md new file mode 100644 index 0000000..7028885 --- /dev/null +++ b/docs/models/operations/getsessionsegmentresponse.md @@ -0,0 +1,10 @@ +# GetSessionSegmentResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/getsessionsmedia.md b/docs/models/operations/getsessionsmedia.md deleted file mode 100644 index a01e595..0000000 --- a/docs/models/operations/getsessionsmedia.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetSessionsMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `audio_channels` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | -| `audio_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | flac | -| `bitrate` | *Optional[int]* | :heavy_minus_sign: | N/A | 1014 | -| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | flac | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 186240 | -| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | 130355 | -| `selected` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `part` | List[[operations.GetSessionsPart](../../models/operations/getsessionspart.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsessionsmediacontainer.md b/docs/models/operations/getsessionsmediacontainer.md deleted file mode 100644 index eeec935..0000000 --- a/docs/models/operations/getsessionsmediacontainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetSessionsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `metadata` | List[[operations.GetSessionsMetadata](../../models/operations/getsessionsmetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsessionsmetadata.md b/docs/models/operations/getsessionsmetadata.md deleted file mode 100644 index ad1fe05..0000000 --- a/docs/models/operations/getsessionsmetadata.md +++ /dev/null @@ -1,45 +0,0 @@ -# GetSessionsMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | -| `added_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705543312 | -| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/39904/art/1705310687 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 186240 | -| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/39904/art/1705310687 | -| `grandparent_guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://artist/5d07bbfd403c6402904a6480 | -| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/39904 | -| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 39904 | -| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/39904/thumb/1705310687 | -| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Green Day | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://track/6535834f71f22f36f71a8e8f | -| `index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/67085 | -| `library_section_id` | *Optional[str]* | :heavy_minus_sign: | N/A | 3 | -| `library_section_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/3 | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Music | -| `music_analysis_version` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | -| `original_title` | *Optional[str]* | :heavy_minus_sign: | The original untranslated name of the media item when non-english, or the track artist if an audio Item has an album artist | The American Dream Is Killing Me | -| `parent_guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://album/65394d6d472b8ab03ef47f12 | -| `parent_index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `parent_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/67084 | -| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 67084 | -| `parent_studio` | *Optional[str]* | :heavy_minus_sign: | N/A | Reprise Records | -| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/67084/thumb/1705543314 | -| `parent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Saviors | -| `parent_year` | *Optional[int]* | :heavy_minus_sign: | N/A | 2024 | -| `rating_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 45885 | -| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 67085 | -| `session_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 203 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/67084/thumb/1705543314 | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | The American Dream Is Killing Me | -| `title_sort` | *Optional[str]* | :heavy_minus_sign: | N/A | American Dream Is Killing Me | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | track | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705543314 | -| `view_offset` | *Optional[int]* | :heavy_minus_sign: | N/A | 1000 | -| `media` | List[[operations.GetSessionsMedia](../../models/operations/getsessionsmedia.md)] | :heavy_minus_sign: | N/A | | -| `user` | [Optional[operations.GetSessionsUser]](../../models/operations/getsessionsuser.md) | :heavy_minus_sign: | N/A | | -| `player` | [Optional[operations.Player]](../../models/operations/player.md) | :heavy_minus_sign: | N/A | | -| `session` | [Optional[operations.Session]](../../models/operations/session.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsessionspart.md b/docs/models/operations/getsessionspart.md deleted file mode 100644 index 4e1743e..0000000 --- a/docs/models/operations/getsessionspart.md +++ /dev/null @@ -1,17 +0,0 @@ -# GetSessionsPart - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | flac | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 186240 | -| `file` | *Optional[str]* | :heavy_minus_sign: | N/A | /music/Green Day/Saviors (2024)/Green Day - Saviors - 01 - The American Dream Is Killing Me.flac | -| `has_thumbnail` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | -| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | 130625 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/parts/130625/1705543268/file.flac | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 23644000 | -| `decision` | *Optional[str]* | :heavy_minus_sign: | N/A | directplay | -| `selected` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `stream` | List[[operations.GetSessionsStream](../../models/operations/getsessionsstream.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getsessionsresponse.md b/docs/models/operations/getsessionsresponse.md index 16ff237..a042da3 100644 --- a/docs/models/operations/getsessionsresponse.md +++ b/docs/models/operations/getsessionsresponse.md @@ -3,9 +3,10 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetSessionsResponseBody]](../../models/operations/getsessionsresponsebody.md) | :heavy_minus_sign: | List of Active Plex Sessions | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getsessionsresponsebody.md b/docs/models/operations/getsessionsresponsebody.md deleted file mode 100644 index 7e87b62..0000000 --- a/docs/models/operations/getsessionsresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSessionsResponseBody - -List of Active Plex Sessions - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `media_container` | [Optional[operations.GetSessionsMediaContainer]](../../models/operations/getsessionsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getsessionsstream.md b/docs/models/operations/getsessionsstream.md deleted file mode 100644 index 0e068ea..0000000 --- a/docs/models/operations/getsessionsstream.md +++ /dev/null @@ -1,27 +0,0 @@ -# GetSessionsStream - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `album_gain` | *Optional[str]* | :heavy_minus_sign: | N/A | -12.94 | -| `album_peak` | *Optional[str]* | :heavy_minus_sign: | N/A | 1.000000 | -| `album_range` | *Optional[str]* | :heavy_minus_sign: | N/A | 4.751014 | -| `audio_channel_layout` | *Optional[str]* | :heavy_minus_sign: | N/A | stereo | -| `bit_depth` | *Optional[int]* | :heavy_minus_sign: | N/A | 16 | -| `bitrate` | *Optional[int]* | :heavy_minus_sign: | N/A | 1014 | -| `channels` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | -| `codec` | *Optional[str]* | :heavy_minus_sign: | N/A | flac | -| `display_title` | *Optional[str]* | :heavy_minus_sign: | N/A | FLAC (Stereo) | -| `extended_display_title` | *Optional[str]* | :heavy_minus_sign: | N/A | FLAC (Stereo) | -| `gain` | *Optional[str]* | :heavy_minus_sign: | N/A | -12.94 | -| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | 352487 | -| `index` | *Optional[int]* | :heavy_minus_sign: | N/A | 0 | -| `loudness` | *Optional[str]* | :heavy_minus_sign: | N/A | -5.94 | -| `lra` | *Optional[str]* | :heavy_minus_sign: | N/A | 1.74 | -| `peak` | *Optional[str]* | :heavy_minus_sign: | N/A | 1.000000 | -| `sampling_rate` | *Optional[int]* | :heavy_minus_sign: | N/A | 44100 | -| `selected` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `stream_type` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | -| `location` | *Optional[str]* | :heavy_minus_sign: | N/A | direct | \ No newline at end of file diff --git a/docs/models/operations/getsessionsuser.md b/docs/models/operations/getsessionsuser.md deleted file mode 100644 index 0738993..0000000 --- a/docs/models/operations/getsessionsuser.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetSessionsUser - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | 1 | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | https://plex.tv/users/844780fc6f8a26b5/avatar?c=1705853661 | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Blindkitty38 | \ No newline at end of file diff --git a/docs/models/operations/getsonicallysimilarglobals.md b/docs/models/operations/getsonicallysimilarglobals.md new file mode 100644 index 0000000..e5d88d4 --- /dev/null +++ b/docs/models/operations/getsonicallysimilarglobals.md @@ -0,0 +1,18 @@ +# GetSonicallySimilarGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getsonicallysimilarrequest.md b/docs/models/operations/getsonicallysimilarrequest.md new file mode 100644 index 0000000..0435be1 --- /dev/null +++ b/docs/models/operations/getsonicallysimilarrequest.md @@ -0,0 +1,23 @@ +# GetSonicallySimilarRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | +| `type` | *Optional[int]* | :heavy_minus_sign: | The metadata type to fetch (should be 10 for audio track) | | +| `values` | List[*int*] | :heavy_check_mark: | The music analysis to center the search. Typically obtained from the `musicAnalysis` of a track | | +| `limit` | *Optional[int]* | :heavy_minus_sign: | The limit of the number of items to fetch; defaults to 50 | | +| `max_distance` | *Optional[float]* | :heavy_minus_sign: | The maximum distance to search, defaults to 0.25 | | \ No newline at end of file diff --git a/docs/models/operations/getsonicallysimilarresponse.md b/docs/models/operations/getsonicallysimilarresponse.md new file mode 100644 index 0000000..c43f1d3 --- /dev/null +++ b/docs/models/operations/getsonicallysimilarresponse.md @@ -0,0 +1,11 @@ +# GetSonicallySimilarResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getsonicpathglobals.md b/docs/models/operations/getsonicpathglobals.md new file mode 100644 index 0000000..a348006 --- /dev/null +++ b/docs/models/operations/getsonicpathglobals.md @@ -0,0 +1,18 @@ +# GetSonicPathGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getsonicpathrequest.md b/docs/models/operations/getsonicpathrequest.md new file mode 100644 index 0000000..67b7b1e --- /dev/null +++ b/docs/models/operations/getsonicpathrequest.md @@ -0,0 +1,23 @@ +# GetSonicPathRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | +| `start_id` | *int* | :heavy_check_mark: | The starting metadata item id | | +| `end_id` | *int* | :heavy_check_mark: | The ending metadata item id | | +| `count` | *Optional[int]* | :heavy_minus_sign: | Limit results to count items | | +| `max_distance` | *Optional[float]* | :heavy_minus_sign: | The maximum distance allowed along the path; defaults to 0.25 | | \ No newline at end of file diff --git a/docs/models/operations/getsonicpathresponse.md b/docs/models/operations/getsonicpathresponse.md new file mode 100644 index 0000000..0240e52 --- /dev/null +++ b/docs/models/operations/getsonicpathresponse.md @@ -0,0 +1,11 @@ +# GetSonicPathResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getsourceconnectioninformationglobals.md b/docs/models/operations/getsourceconnectioninformationglobals.md new file mode 100644 index 0000000..2645ed7 --- /dev/null +++ b/docs/models/operations/getsourceconnectioninformationglobals.md @@ -0,0 +1,18 @@ +# GetSourceConnectionInformationGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getsourceconnectioninformationmediacontainer.md b/docs/models/operations/getsourceconnectioninformationmediacontainer.md new file mode 100644 index 0000000..9fa4b54 --- /dev/null +++ b/docs/models/operations/getsourceconnectioninformationmediacontainer.md @@ -0,0 +1,17 @@ +# GetSourceConnectionInformationMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `device` | [Optional[operations.Device]](../../models/operations/device.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getsourceconnectioninformationrequest.md b/docs/models/operations/getsourceconnectioninformationrequest.md index 7c59ee6..142ede6 100644 --- a/docs/models/operations/getsourceconnectioninformationrequest.md +++ b/docs/models/operations/getsourceconnectioninformationrequest.md @@ -3,6 +3,18 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | -| `source` | *str* | :heavy_check_mark: | The source identifier with an included prefix. | server://client-identifier | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `source` | *str* | :heavy_check_mark: | The source identifier with an included prefix. | | +| `refresh` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Force refresh | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsourceconnectioninformationresponse.md b/docs/models/operations/getsourceconnectioninformationresponse.md index 3f49272..56049fe 100644 --- a/docs/models/operations/getsourceconnectioninformationresponse.md +++ b/docs/models/operations/getsourceconnectioninformationresponse.md @@ -3,8 +3,9 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetSourceConnectionInformationResponseBody]](../../models/operations/getsourceconnectioninformationresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getsourceconnectioninformationresponsebody.md b/docs/models/operations/getsourceconnectioninformationresponsebody.md new file mode 100644 index 0000000..7ad815d --- /dev/null +++ b/docs/models/operations/getsourceconnectioninformationresponsebody.md @@ -0,0 +1,10 @@ +# GetSourceConnectionInformationResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetSourceConnectionInformationMediaContainer]](../../models/operations/getsourceconnectioninformationmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getstatisticsdevice.md b/docs/models/operations/getstatisticsdevice.md deleted file mode 100644 index aeed772..0000000 --- a/docs/models/operations/getstatisticsdevice.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetStatisticsDevice - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -------------------------------- | -| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 208 | -| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | Roku Express | -| `platform` | *Optional[str]* | :heavy_minus_sign: | N/A | Roku | -| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | 793095d235660625108ef785cc7646e9 | -| `created_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1706470556 | \ No newline at end of file diff --git a/docs/models/operations/getstatisticsmediacontainer.md b/docs/models/operations/getstatisticsmediacontainer.md deleted file mode 100644 index c242f36..0000000 --- a/docs/models/operations/getstatisticsmediacontainer.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetStatisticsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 5497 | -| `device` | List[[operations.GetStatisticsDevice](../../models/operations/getstatisticsdevice.md)] | :heavy_minus_sign: | N/A | | -| `account` | List[[operations.Account](../../models/operations/account.md)] | :heavy_minus_sign: | N/A | | -| `statistics_media` | List[[operations.StatisticsMedia](../../models/operations/statisticsmedia.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/getstatisticsrequest.md b/docs/models/operations/getstatisticsrequest.md deleted file mode 100644 index ab29cee..0000000 --- a/docs/models/operations/getstatisticsrequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetStatisticsRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `timespan` | *Optional[int]* | :heavy_minus_sign: | The timespan to retrieve statistics for
the exact meaning of this parameter is not known
| 4 | \ No newline at end of file diff --git a/docs/models/operations/getstatisticsresponse.md b/docs/models/operations/getstatisticsresponse.md deleted file mode 100644 index d495e8d..0000000 --- a/docs/models/operations/getstatisticsresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetStatisticsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetStatisticsResponseBody]](../../models/operations/getstatisticsresponsebody.md) | :heavy_minus_sign: | Media Statistics | \ No newline at end of file diff --git a/docs/models/operations/getstatisticsresponsebody.md b/docs/models/operations/getstatisticsresponsebody.md deleted file mode 100644 index 01df2cd..0000000 --- a/docs/models/operations/getstatisticsresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetStatisticsResponseBody - -Media Statistics - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetStatisticsMediaContainer]](../../models/operations/getstatisticsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getstreamglobals.md b/docs/models/operations/getstreamglobals.md new file mode 100644 index 0000000..4560c0d --- /dev/null +++ b/docs/models/operations/getstreamglobals.md @@ -0,0 +1,18 @@ +# GetStreamGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getstreamlevelsglobals.md b/docs/models/operations/getstreamlevelsglobals.md new file mode 100644 index 0000000..ecc46dc --- /dev/null +++ b/docs/models/operations/getstreamlevelsglobals.md @@ -0,0 +1,18 @@ +# GetStreamLevelsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getstreamlevelslevel.md b/docs/models/operations/getstreamlevelslevel.md new file mode 100644 index 0000000..4328f09 --- /dev/null +++ b/docs/models/operations/getstreamlevelslevel.md @@ -0,0 +1,8 @@ +# GetStreamLevelsLevel + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `v` | *Optional[float]* | :heavy_minus_sign: | The level in db. | \ No newline at end of file diff --git a/docs/models/operations/getstreamlevelsmediacontainer.md b/docs/models/operations/getstreamlevelsmediacontainer.md new file mode 100644 index 0000000..28dfa10 --- /dev/null +++ b/docs/models/operations/getstreamlevelsmediacontainer.md @@ -0,0 +1,18 @@ +# GetStreamLevelsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `level` | List[[operations.GetStreamLevelsLevel](../../models/operations/getstreamlevelslevel.md)] | :heavy_minus_sign: | N/A | +| `total_samples` | *Optional[str]* | :heavy_minus_sign: | The total number of samples (as a string) | \ No newline at end of file diff --git a/docs/models/operations/getstreamlevelsrequest.md b/docs/models/operations/getstreamlevelsrequest.md new file mode 100644 index 0000000..add3a77 --- /dev/null +++ b/docs/models/operations/getstreamlevelsrequest.md @@ -0,0 +1,20 @@ +# GetStreamLevelsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `stream_id` | *int* | :heavy_check_mark: | The id of the stream | | +| `subsample` | *Optional[int]* | :heavy_minus_sign: | Subsample result down to return only the provided number of samples | | \ No newline at end of file diff --git a/docs/models/operations/getstreamlevelsresponse.md b/docs/models/operations/getstreamlevelsresponse.md new file mode 100644 index 0000000..869d98b --- /dev/null +++ b/docs/models/operations/getstreamlevelsresponse.md @@ -0,0 +1,11 @@ +# GetStreamLevelsResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetStreamLevelsResponseBody]](../../models/operations/getstreamlevelsresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getstreamlevelsresponsebody.md b/docs/models/operations/getstreamlevelsresponsebody.md new file mode 100644 index 0000000..610dd81 --- /dev/null +++ b/docs/models/operations/getstreamlevelsresponsebody.md @@ -0,0 +1,10 @@ +# GetStreamLevelsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetStreamLevelsMediaContainer]](../../models/operations/getstreamlevelsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getstreamloudnessglobals.md b/docs/models/operations/getstreamloudnessglobals.md new file mode 100644 index 0000000..92dc3e1 --- /dev/null +++ b/docs/models/operations/getstreamloudnessglobals.md @@ -0,0 +1,18 @@ +# GetStreamLoudnessGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getstreamloudnessrequest.md b/docs/models/operations/getstreamloudnessrequest.md new file mode 100644 index 0000000..6a2a839 --- /dev/null +++ b/docs/models/operations/getstreamloudnessrequest.md @@ -0,0 +1,20 @@ +# GetStreamLoudnessRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `stream_id` | *int* | :heavy_check_mark: | The id of the stream | | +| `subsample` | *Optional[int]* | :heavy_minus_sign: | Subsample result down to return only the provided number of samples | | \ No newline at end of file diff --git a/docs/models/operations/getstreamloudnessresponse.md b/docs/models/operations/getstreamloudnessresponse.md new file mode 100644 index 0000000..89bca5c --- /dev/null +++ b/docs/models/operations/getstreamloudnessresponse.md @@ -0,0 +1,11 @@ +# GetStreamLoudnessResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `res` | *Optional[str]* | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getstreamrequest.md b/docs/models/operations/getstreamrequest.md new file mode 100644 index 0000000..a05988a --- /dev/null +++ b/docs/models/operations/getstreamrequest.md @@ -0,0 +1,23 @@ +# GetStreamRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `stream_id` | *int* | :heavy_check_mark: | The id of the stream | | +| `ext` | *str* | :heavy_check_mark: | The extension of the stream. Required to fetch the `sub` portion of `idx`/`sub` subtitles | | +| `encoding` | *Optional[str]* | :heavy_minus_sign: | The requested encoding for the subtitle (only used for text subtitles) | | +| `format_` | *Optional[str]* | :heavy_minus_sign: | The requested format for the subtitle to convert the subtitles to (only used for text subtitles) | | +| `auto_adjust_subtitle` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether the server should attempt to automatically adjust the subtitle timestamps to match the media | 1 | \ No newline at end of file diff --git a/docs/models/operations/getstreamresponse.md b/docs/models/operations/getstreamresponse.md new file mode 100644 index 0000000..1834e30 --- /dev/null +++ b/docs/models/operations/getstreamresponse.md @@ -0,0 +1,10 @@ +# GetStreamResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/getsubscriptionglobals.md b/docs/models/operations/getsubscriptionglobals.md new file mode 100644 index 0000000..7d63fea5 --- /dev/null +++ b/docs/models/operations/getsubscriptionglobals.md @@ -0,0 +1,18 @@ +# GetSubscriptionGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getsubscriptionrequest.md b/docs/models/operations/getsubscriptionrequest.md new file mode 100644 index 0000000..58a4138 --- /dev/null +++ b/docs/models/operations/getsubscriptionrequest.md @@ -0,0 +1,21 @@ +# GetSubscriptionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `subscription_id` | *int* | :heavy_check_mark: | N/A | | +| `include_grabs` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates whether the active grabs should be included as well | 1 | +| `include_storage` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Compute the storage of recorded items desired by this subscription | 1 | \ No newline at end of file diff --git a/docs/models/operations/getsubscriptionresponse.md b/docs/models/operations/getsubscriptionresponse.md new file mode 100644 index 0000000..382235b --- /dev/null +++ b/docs/models/operations/getsubscriptionresponse.md @@ -0,0 +1,11 @@ +# GetSubscriptionResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_subscription` | [Optional[components.MediaContainerWithSubscription]](../../models/components/mediacontainerwithsubscription.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/gettagsglobals.md b/docs/models/operations/gettagsglobals.md new file mode 100644 index 0000000..611660d --- /dev/null +++ b/docs/models/operations/gettagsglobals.md @@ -0,0 +1,18 @@ +# GetTagsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/gettagsmediacontainer.md b/docs/models/operations/gettagsmediacontainer.md new file mode 100644 index 0000000..4fe4862 --- /dev/null +++ b/docs/models/operations/gettagsmediacontainer.md @@ -0,0 +1,17 @@ +# GetTagsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `directory` | List[[operations.Directory](../../models/operations/directory.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/gettagsrequest.md b/docs/models/operations/gettagsrequest.md new file mode 100644 index 0000000..9d5ed77 --- /dev/null +++ b/docs/models/operations/gettagsrequest.md @@ -0,0 +1,19 @@ +# GetTagsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `type` | *Optional[int]* | :heavy_minus_sign: | The metadata type to filter by | | \ No newline at end of file diff --git a/docs/models/operations/gettagsresponse.md b/docs/models/operations/gettagsresponse.md new file mode 100644 index 0000000..42ed25f --- /dev/null +++ b/docs/models/operations/gettagsresponse.md @@ -0,0 +1,11 @@ +# GetTagsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetTagsResponseBody]](../../models/operations/gettagsresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/gettagsresponsebody.md b/docs/models/operations/gettagsresponsebody.md new file mode 100644 index 0000000..a78009e --- /dev/null +++ b/docs/models/operations/gettagsresponsebody.md @@ -0,0 +1,10 @@ +# GetTagsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetTagsMediaContainer]](../../models/operations/gettagsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/gettasksresponse.md b/docs/models/operations/gettasksresponse.md new file mode 100644 index 0000000..97dd80c --- /dev/null +++ b/docs/models/operations/gettasksresponse.md @@ -0,0 +1,11 @@ +# GetTasksResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetTasksResponseBody]](../../models/operations/gettasksresponsebody.md) | :heavy_minus_sign: | Butler tasks | \ No newline at end of file diff --git a/docs/models/operations/gettasksresponsebody.md b/docs/models/operations/gettasksresponsebody.md new file mode 100644 index 0000000..41e6ced --- /dev/null +++ b/docs/models/operations/gettasksresponsebody.md @@ -0,0 +1,10 @@ +# GetTasksResponseBody + +Butler tasks + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `butler_tasks` | [Optional[operations.ButlerTasks]](../../models/operations/butlertasks.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/gettemplateglobals.md b/docs/models/operations/gettemplateglobals.md new file mode 100644 index 0000000..28638c8 --- /dev/null +++ b/docs/models/operations/gettemplateglobals.md @@ -0,0 +1,18 @@ +# GetTemplateGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/gettemplatemediacontainer.md b/docs/models/operations/gettemplatemediacontainer.md new file mode 100644 index 0000000..04c486b --- /dev/null +++ b/docs/models/operations/gettemplatemediacontainer.md @@ -0,0 +1,17 @@ +# GetTemplateMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `subscription_template` | List[[operations.SubscriptionTemplate](../../models/operations/subscriptiontemplate.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/gettemplaterequest.md b/docs/models/operations/gettemplaterequest.md new file mode 100644 index 0000000..8a08c05 --- /dev/null +++ b/docs/models/operations/gettemplaterequest.md @@ -0,0 +1,19 @@ +# GetTemplateRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `guid` | *Optional[str]* | :heavy_minus_sign: | The guid of the item for which to get the template | plex://episode/5fc70265c40548002d539d23 | \ No newline at end of file diff --git a/docs/models/operations/gettemplateresponse.md b/docs/models/operations/gettemplateresponse.md new file mode 100644 index 0000000..705363e --- /dev/null +++ b/docs/models/operations/gettemplateresponse.md @@ -0,0 +1,12 @@ +# GetTemplateResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetTemplateResponseBody]](../../models/operations/gettemplateresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/gettemplateresponsebody.md b/docs/models/operations/gettemplateresponsebody.md new file mode 100644 index 0000000..da63277 --- /dev/null +++ b/docs/models/operations/gettemplateresponsebody.md @@ -0,0 +1,10 @@ +# GetTemplateResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.GetTemplateMediaContainer]](../../models/operations/gettemplatemediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getthumbglobals.md b/docs/models/operations/getthumbglobals.md new file mode 100644 index 0000000..88c9f5d --- /dev/null +++ b/docs/models/operations/getthumbglobals.md @@ -0,0 +1,18 @@ +# GetThumbGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/getthumbimagerequest.md b/docs/models/operations/getthumbimagerequest.md deleted file mode 100644 index 37a308c..0000000 --- a/docs/models/operations/getthumbimagerequest.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetThumbImageRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------- | -| `rating_key` | *int* | :heavy_check_mark: | the id of the library item to return the children of. | 9518 | -| `width` | *int* | :heavy_check_mark: | N/A | 396 | -| `height` | *int* | :heavy_check_mark: | N/A | 396 | -| `min_size` | *int* | :heavy_check_mark: | N/A | 1 | -| `upscale` | *int* | :heavy_check_mark: | N/A | 1 | -| `x_plex_token` | *str* | :heavy_check_mark: | An authentication token, obtained from plex.tv | CV5xoxjTpFKUzBTShsaf | \ No newline at end of file diff --git a/docs/models/operations/getthumbimageresponse.md b/docs/models/operations/getthumbimageresponse.md deleted file mode 100644 index 54adb65..0000000 --- a/docs/models/operations/getthumbimageresponse.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetThumbImageResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | Successful response returning an image | -| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getthumbrequest.md b/docs/models/operations/getthumbrequest.md new file mode 100644 index 0000000..92006e0 --- /dev/null +++ b/docs/models/operations/getthumbrequest.md @@ -0,0 +1,20 @@ +# GetThumbRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `device_id` | *int* | :heavy_check_mark: | The ID of the device. | | +| `version_path_parameter` | *int* | :heavy_check_mark: | A version number of the thumb used for busting cache | | \ No newline at end of file diff --git a/docs/models/operations/getthumbresponse.md b/docs/models/operations/getthumbresponse.md new file mode 100644 index 0000000..817af9c --- /dev/null +++ b/docs/models/operations/getthumbresponse.md @@ -0,0 +1,10 @@ +# GetThumbResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/gettimelinerequest.md b/docs/models/operations/gettimelinerequest.md deleted file mode 100644 index 0b52718..0000000 --- a/docs/models/operations/gettimelinerequest.md +++ /dev/null @@ -1,17 +0,0 @@ -# GetTimelineRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| `rating_key` | *float* | :heavy_check_mark: | The rating key of the media item | 23409 | -| `key` | *str* | :heavy_check_mark: | The key of the media item to get the timeline for | /library/metadata/23409 | -| `state` | [operations.State](../../models/operations/state.md) | :heavy_check_mark: | The state of the media item | playing | -| `has_mde` | *float* | :heavy_check_mark: | Whether the media item has MDE | 1 | -| `time` | *float* | :heavy_check_mark: | The time of the media item | 2000 | -| `duration` | *float* | :heavy_check_mark: | The duration of the media item | 10000 | -| `context` | *str* | :heavy_check_mark: | The context of the media item | home:hub.continueWatching | -| `play_queue_item_id` | *float* | :heavy_check_mark: | The play queue item ID of the media item | 1 | -| `play_back_time` | *float* | :heavy_check_mark: | The playback time of the media item | 2000 | -| `row` | *float* | :heavy_check_mark: | The row of the media item | 1 | \ No newline at end of file diff --git a/docs/models/operations/gettimelineresponse.md b/docs/models/operations/gettimelineresponse.md deleted file mode 100644 index 8bea94e..0000000 --- a/docs/models/operations/gettimelineresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTimelineResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/gettokenbypinidauthpincontainer.md b/docs/models/operations/gettokenbypinidauthpincontainer.md deleted file mode 100644 index d2b1cd0..0000000 --- a/docs/models/operations/gettokenbypinidauthpincontainer.md +++ /dev/null @@ -1,21 +0,0 @@ -# GetTokenByPinIDAuthPinContainer - -The Pin with a non-null authToken when it has been verified by the user - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | N/A | 308667304 | -| `code` | *str* | :heavy_check_mark: | N/A | 7RQZ | -| `product` | *str* | :heavy_check_mark: | N/A | Tautulli | -| `trusted` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `qr` | *str* | :heavy_check_mark: | N/A | https://plex.tv/api/v2/pins/qr/7RQZ | -| `client_identifier` | *str* | :heavy_check_mark: | The X-Client-Identifier used in the request | Tautulli | -| `location` | [operations.GetTokenByPinIDGeoData](../../models/operations/gettokenbypinidgeodata.md) | :heavy_check_mark: | Geo location data | {
"code": "VI",
"continent_code": "NA",
"country": "United States Virgin Islands",
"city": "Amsterdam",
"european_union_member": true,
"time_zone": "America/St_Thomas",
"postal_code": 802,
"in_privacy_restricted_country": true,
"in_privacy_restricted_region": true,
"subdivisions": "Saint Thomas",
"coordinates": "18.3381, -64.8941"
} | -| `expires_in` | *Optional[int]* | :heavy_minus_sign: | The number of seconds this pin expires, by default 900 seconds | 876 | -| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | N/A | 2024-07-16T17:03:05Z | -| `expires_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | N/A | 2024-07-16T17:18:05Z | -| `auth_token` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | gcgzw5rz2xovp84b4vha3a40 | -| `new_registration` | *OptionalNullable[Any]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/gettokenbypinidgeodata.md b/docs/models/operations/gettokenbypinidgeodata.md deleted file mode 100644 index 1de3085..0000000 --- a/docs/models/operations/gettokenbypinidgeodata.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetTokenByPinIDGeoData - -Geo location data - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `code` | *str* | :heavy_check_mark: | The ISO 3166-1 alpha-2 code of the country. | VI | -| `continent_code` | *str* | :heavy_check_mark: | The continent code where the country is located. | NA | -| `country` | *str* | :heavy_check_mark: | The official name of the country. | United States Virgin Islands | -| `city` | *str* | :heavy_check_mark: | The name of the city. | Amsterdam | -| `european_union_member` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the country is a member of the European Union. | true | -| `time_zone` | *str* | :heavy_check_mark: | The time zone of the country. | America/St_Thomas | -| `postal_code` | *str* | :heavy_check_mark: | The postal code of the location. | 802 | -| `in_privacy_restricted_country` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the country has privacy restrictions. | true | -| `in_privacy_restricted_region` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the region has privacy restrictions. | true | -| `subdivisions` | *str* | :heavy_check_mark: | The name of the primary administrative subdivision. | Saint Thomas | -| `coordinates` | *str* | :heavy_check_mark: | The geographical coordinates (latitude, longitude) of the location. | 18.3381, -64.8941 | \ No newline at end of file diff --git a/docs/models/operations/gettokenbypinidrequest.md b/docs/models/operations/gettokenbypinidrequest.md deleted file mode 100644 index 07d7661..0000000 --- a/docs/models/operations/gettokenbypinidrequest.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetTokenByPinIDRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `pin_id` | *int* | :heavy_check_mark: | The PinID to retrieve an access token for | | -| `client_id` | *str* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | -| `client_name` | *Optional[str]* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku | -| `device_nickname` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `client_version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application. | 2.4.1 | -| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client application. | Roku | \ No newline at end of file diff --git a/docs/models/operations/gettokenbypinidresponse.md b/docs/models/operations/gettokenbypinidresponse.md deleted file mode 100644 index bccc75e..0000000 --- a/docs/models/operations/gettokenbypinidresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTokenByPinIDResponse - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | | -| `auth_pin_container` | [Optional[operations.GetTokenByPinIDAuthPinContainer]](../../models/operations/gettokenbypinidauthpincontainer.md) | :heavy_minus_sign: | The Pin with a non-null authToken when it has been verified by the user | {
"id": 308667304,
"code": "7RQZ",
"product": "0",
"trusted": false,
"qr": "https://plex.tv/api/v2/pins/qr/7RQZ",
"clientIdentifier": "string",
"location": {
"code": "VI",
"continent_code": "NA",
"country": "United States Virgin Islands",
"city": "Amsterdam",
"european_union_member": true,
"time_zone": "America/St_Thomas",
"postal_code": 802,
"in_privacy_restricted_country": true,
"in_privacy_restricted_region": true,
"subdivisions": "Saint Thomas",
"coordinates": "18.3381, -64.8941"
},
"expiresIn": 876,
"createdAt": "2024-07-16T17:03:05Z",
"expiresAt": "2024-07-16T17:18:05Z",
"authToken": null,
"newRegistration": null
} | \ No newline at end of file diff --git a/docs/models/operations/gettokendetailsauthenticationresponsestatus.md b/docs/models/operations/gettokendetailsauthenticationresponsestatus.md deleted file mode 100644 index c13e886..0000000 --- a/docs/models/operations/gettokendetailsauthenticationresponsestatus.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTokenDetailsAuthenticationResponseStatus - -String representation of subscriptionActive - - -## Values - -| Name | Value | -| ---------- | ---------- | -| `INACTIVE` | Inactive | -| `ACTIVE` | Active | \ No newline at end of file diff --git a/docs/models/operations/gettokendetailsauthenticationstatus.md b/docs/models/operations/gettokendetailsauthenticationstatus.md deleted file mode 100644 index 7a8ee4b..0000000 --- a/docs/models/operations/gettokendetailsauthenticationstatus.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTokenDetailsAuthenticationStatus - -String representation of subscriptionActive - - -## Values - -| Name | Value | -| ---------- | ---------- | -| `INACTIVE` | Inactive | -| `ACTIVE` | Active | \ No newline at end of file diff --git a/docs/models/operations/gettokendetailsresponse.md b/docs/models/operations/gettokendetailsresponse.md deleted file mode 100644 index 1f78493..0000000 --- a/docs/models/operations/gettokendetailsresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTokenDetailsResponse - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `user_plex_account` | [Optional[operations.GetTokenDetailsUserPlexAccount]](../../models/operations/gettokendetailsuserplexaccount.md) | :heavy_minus_sign: | Logged in user details | \ No newline at end of file diff --git a/docs/models/operations/gettokendetailsstatus.md b/docs/models/operations/gettokendetailsstatus.md deleted file mode 100644 index 94e900d..0000000 --- a/docs/models/operations/gettokendetailsstatus.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetTokenDetailsStatus - - -## Values - -| Name | Value | -| --------- | --------- | -| `ONLINE` | online | -| `OFFLINE` | offline | \ No newline at end of file diff --git a/docs/models/operations/gettokendetailssubscription.md b/docs/models/operations/gettokendetailssubscription.md deleted file mode 100644 index 3e72452..0000000 --- a/docs/models/operations/gettokendetailssubscription.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetTokenDetailsSubscription - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | -| `features` | List[*str*] | :heavy_minus_sign: | List of features allowed on your Plex Pass subscription | | -| `active` | *Optional[bool]* | :heavy_minus_sign: | If the account's Plex Pass subscription is active | true | -| `subscribed_at` | *OptionalNullable[str]* | :heavy_minus_sign: | Date the account subscribed to Plex Pass | 2021-04-12T18:21:12Z | -| `status` | [Optional[operations.GetTokenDetailsAuthenticationResponseStatus]](../../models/operations/gettokendetailsauthenticationresponsestatus.md) | :heavy_minus_sign: | String representation of subscriptionActive | Inactive | -| `payment_service` | *OptionalNullable[str]* | :heavy_minus_sign: | Payment service used for your Plex Pass subscription | | -| `plan` | *OptionalNullable[str]* | :heavy_minus_sign: | Name of Plex Pass subscription plan | | \ No newline at end of file diff --git a/docs/models/operations/gettokendetailsuserplexaccount.md b/docs/models/operations/gettokendetailsuserplexaccount.md deleted file mode 100644 index c5314e8..0000000 --- a/docs/models/operations/gettokendetailsuserplexaccount.md +++ /dev/null @@ -1,50 +0,0 @@ -# GetTokenDetailsUserPlexAccount - -Logged in user details - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `ads_consent` | *Nullable[bool]* | :heavy_check_mark: | Unknown | | -| `ads_consent_reminder_at` | *Nullable[int]* | :heavy_check_mark: | N/A | 1556281940 | -| `ads_consent_set_at` | *Nullable[int]* | :heavy_check_mark: | N/A | 1556281940 | -| `anonymous` | *OptionalNullable[bool]* | :heavy_minus_sign: | Unknown | | -| `auth_token` | *str* | :heavy_check_mark: | The account token | CxoUzBTSV5hsxjTpFKaf | -| `backup_codes_created` | *Optional[bool]* | :heavy_minus_sign: | If the two-factor authentication backup codes have been created | | -| `confirmed` | *Optional[bool]* | :heavy_minus_sign: | If the account has been confirmed | | -| `country` | *str* | :heavy_check_mark: | The account country | US | -| `email` | *str* | :heavy_check_mark: | The account email address | username@email.com | -| `email_only_auth` | *Optional[bool]* | :heavy_minus_sign: | If login with email only is enabled | | -| `experimental_features` | *Optional[bool]* | :heavy_minus_sign: | If experimental features are enabled | | -| `friendly_name` | *str* | :heavy_check_mark: | Your account full name | friendlyUsername | -| `entitlements` | List[*str*] | :heavy_check_mark: | List of devices your allowed to use with this account | | -| `guest` | *Optional[bool]* | :heavy_minus_sign: | If the account is a Plex Home guest user | | -| `has_password` | *Optional[bool]* | :heavy_minus_sign: | If the account has a password | | -| `home` | *Optional[bool]* | :heavy_minus_sign: | If the account is a Plex Home user | | -| `home_admin` | *Optional[bool]* | :heavy_minus_sign: | If the account is the Plex Home admin | | -| `home_size` | *int* | :heavy_check_mark: | The number of accounts in the Plex Home | 1 | -| `id` | *int* | :heavy_check_mark: | The Plex account ID | 13692262 | -| `joined_at` | *int* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | -| `locale` | *Nullable[str]* | :heavy_check_mark: | The account locale | | -| `mailing_list_active` | *Optional[bool]* | :heavy_minus_sign: | If you are subscribed to the Plex newsletter | | -| `mailing_list_status` | [operations.MailingListStatus](../../models/operations/mailingliststatus.md) | :heavy_check_mark: | Your current mailing list status (active or unsubscribed) | active | -| `max_home_size` | *int* | :heavy_check_mark: | The maximum number of accounts allowed in the Plex Home | 15 | -| ~~`pin`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

[Might be removed] The hashed Plex Home PIN | | -| `profile` | [operations.UserProfile](../../models/operations/userprofile.md) | :heavy_check_mark: | N/A | | -| `protected` | *Optional[bool]* | :heavy_minus_sign: | If the account has a Plex Home PIN enabled | | -| `remember_expires_at` | *int* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | -| `restricted` | *Optional[bool]* | :heavy_minus_sign: | If the account is a Plex Home managed user | | -| `roles` | List[*str*] | :heavy_minus_sign: | [Might be removed] List of account roles. Plexpass membership listed here | | -| `scrobble_types` | *str* | :heavy_check_mark: | Unknown | | -| `services` | List[[operations.Services](../../models/operations/services.md)] | :heavy_check_mark: | N/A | | -| `subscription` | [operations.Subscription](../../models/operations/subscription.md) | :heavy_check_mark: | If the account’s Plex Pass subscription is active | | -| `subscription_description` | *Nullable[str]* | :heavy_check_mark: | Description of the Plex Pass subscription | | -| `subscriptions` | List[[operations.GetTokenDetailsSubscription](../../models/operations/gettokendetailssubscription.md)] | :heavy_minus_sign: | N/A | | -| `thumb` | *str* | :heavy_check_mark: | URL of the account thumbnail | https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101 | -| `title` | *str* | :heavy_check_mark: | The title of the account (username or friendly name) | UsernameTitle | -| `two_factor_enabled` | *Optional[bool]* | :heavy_minus_sign: | If two-factor authentication is enabled | | -| `username` | *str* | :heavy_check_mark: | The account username | Username | -| `uuid` | *str* | :heavy_check_mark: | The account UUID | dae343c1f45beb4f | -| `attribution_partner` | *Nullable[str]* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentcountry.md b/docs/models/operations/gettopwatchedcontentcountry.md deleted file mode 100644 index 137f941..0000000 --- a/docs/models/operations/gettopwatchedcontentcountry.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTopWatchedContentCountry - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 116 | -| `filter_` | *Optional[str]* | :heavy_minus_sign: | N/A | country=116 | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | United States of America | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentgenre.md b/docs/models/operations/gettopwatchedcontentgenre.md deleted file mode 100644 index a13d819..0000000 --- a/docs/models/operations/gettopwatchedcontentgenre.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTopWatchedContentGenre - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 184 | -| `filter_` | *Optional[str]* | :heavy_minus_sign: | N/A | genre=184 | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Thriller | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentguids.md b/docs/models/operations/gettopwatchedcontentguids.md deleted file mode 100644 index 0aed329..0000000 --- a/docs/models/operations/gettopwatchedcontentguids.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetTopWatchedContentGuids - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | tvdb://2337 | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentmediacontainer.md b/docs/models/operations/gettopwatchedcontentmediacontainer.md deleted file mode 100644 index df3d059..0000000 --- a/docs/models/operations/gettopwatchedcontentmediacontainer.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetTopWatchedContentMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `size` | *int* | :heavy_check_mark: | Number of media items returned in this response. | 50 | -| `allow_sync` | *bool* | :heavy_check_mark: | Indicates whether syncing is allowed. | false | -| `identifier` | *str* | :heavy_check_mark: | An plugin identifier for the media container. | com.plexapp.plugins.library | -| `media_tag_prefix` | *str* | :heavy_check_mark: | The prefix used for media tag resource paths. | /system/bundle/media/flags/ | -| `media_tag_version` | *int* | :heavy_check_mark: | The version number for media tags. | 1734362201 | -| `metadata` | List[[operations.GetTopWatchedContentMetadata](../../models/operations/gettopwatchedcontentmetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentmetadata.md b/docs/models/operations/gettopwatchedcontentmetadata.md deleted file mode 100644 index c10f587..0000000 --- a/docs/models/operations/gettopwatchedcontentmetadata.md +++ /dev/null @@ -1,39 +0,0 @@ -# GetTopWatchedContentMetadata - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 17 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/17 | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | plex://movie/5d77683f6f4521001ea9dc53 | -| `slug` | *Optional[str]* | :heavy_minus_sign: | N/A | waterloo-road | -| `studio` | *Optional[str]* | :heavy_minus_sign: | N/A | Universal Pictures | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | movie | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Serenity | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | Movies | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `library_section_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/1 | -| `content_rating` | *Optional[str]* | :heavy_minus_sign: | N/A | PG-13 | -| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | Serenity continues the story of the TV series it was based upon ("Firefly"). River Tam had a secret - one in which she's not even aware - so dangerous, no one's safe, as an Alliance operative's sent to capture her, and all others are considered irrelevant to his job. | -| `index` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | N/A | 9.1 | -| `year` | *Optional[int]* | :heavy_minus_sign: | N/A | 2005 | -| `tagline` | *Optional[str]* | :heavy_minus_sign: | N/A | They aim to misbehave. | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/17/thumb/1705637165 | -| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/17/art/1705637165 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 141417 | -| `originally_available_at` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | N/A | 2005-09-29 00:00:00 +0000 UTC | -| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 222 | -| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 100 | -| `child_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 13 | -| `added_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705637164 | -| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705637165 | -| `global_view_count` | *Optional[int]* | :heavy_minus_sign: | N/A | 80 | -| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | rottentomatoes://image.rating.upright | -| `genre` | List[[operations.GetTopWatchedContentGenre](../../models/operations/gettopwatchedcontentgenre.md)] | :heavy_minus_sign: | N/A | | -| `country` | List[[operations.GetTopWatchedContentCountry](../../models/operations/gettopwatchedcontentcountry.md)] | :heavy_minus_sign: | N/A | | -| `guids` | List[[operations.GetTopWatchedContentGuids](../../models/operations/gettopwatchedcontentguids.md)] | :heavy_minus_sign: | N/A | | -| `role` | List[[operations.GetTopWatchedContentRole](../../models/operations/gettopwatchedcontentrole.md)] | :heavy_minus_sign: | N/A | | -| `user` | List[[operations.GetTopWatchedContentUser](../../models/operations/gettopwatchedcontentuser.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentqueryparamincludeguids.md b/docs/models/operations/gettopwatchedcontentqueryparamincludeguids.md deleted file mode 100644 index 547db90..0000000 --- a/docs/models/operations/gettopwatchedcontentqueryparamincludeguids.md +++ /dev/null @@ -1,12 +0,0 @@ -# GetTopWatchedContentQueryParamIncludeGuids - -Adds the Guid object to the response - - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentqueryparamtype.md b/docs/models/operations/gettopwatchedcontentqueryparamtype.md deleted file mode 100644 index 0c90fec..0000000 --- a/docs/models/operations/gettopwatchedcontentqueryparamtype.md +++ /dev/null @@ -1,24 +0,0 @@ -# GetTopWatchedContentQueryParamType - -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - - -## Values - -| Name | Value | -| ------------- | ------------- | -| `MOVIE` | 1 | -| `TV_SHOW` | 2 | -| `SEASON` | 3 | -| `EPISODE` | 4 | -| `ARTIST` | 5 | -| `ALBUM` | 6 | -| `TRACK` | 7 | -| `PHOTO_ALBUM` | 8 | -| `PHOTO` | 9 | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentrequest.md b/docs/models/operations/gettopwatchedcontentrequest.md deleted file mode 100644 index bb30e41..0000000 --- a/docs/models/operations/gettopwatchedcontentrequest.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetTopWatchedContentRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `type` | [operations.GetTopWatchedContentQueryParamType](../../models/operations/gettopwatchedcontentqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `include_guids` | [Optional[operations.GetTopWatchedContentQueryParamIncludeGuids]](../../models/operations/gettopwatchedcontentqueryparamincludeguids.md) | :heavy_minus_sign: | Adds the Guid object to the response
| 1 | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentresponse.md b/docs/models/operations/gettopwatchedcontentresponse.md deleted file mode 100644 index 1841d49..0000000 --- a/docs/models/operations/gettopwatchedcontentresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTopWatchedContentResponse - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetTopWatchedContentResponseBody]](../../models/operations/gettopwatchedcontentresponsebody.md) | :heavy_minus_sign: | The metadata of the library item. | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentresponsebody.md b/docs/models/operations/gettopwatchedcontentresponsebody.md deleted file mode 100644 index 4861624..0000000 --- a/docs/models/operations/gettopwatchedcontentresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTopWatchedContentResponseBody - -The metadata of the library item. - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | -| `media_container` | [Optional[operations.GetTopWatchedContentMediaContainer]](../../models/operations/gettopwatchedcontentmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentrole.md b/docs/models/operations/gettopwatchedcontentrole.md deleted file mode 100644 index 3887c4b..0000000 --- a/docs/models/operations/gettopwatchedcontentrole.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetTopWatchedContentRole - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 220 | -| `filter_` | *Optional[str]* | :heavy_minus_sign: | N/A | actor=220 | -| `tag` | *Optional[str]* | :heavy_minus_sign: | N/A | Dennis Keiffer | -| `tag_key` | *Optional[str]* | :heavy_minus_sign: | N/A | 5d77683554f42c001f8c4708 | -| `role` | *Optional[str]* | :heavy_minus_sign: | N/A | Bar Guy (uncredited) | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | https://metadata-static.plex.tv/6/people/648e9a7ea1d537bccfcd7615134b78ce.jpg | \ No newline at end of file diff --git a/docs/models/operations/gettopwatchedcontentuser.md b/docs/models/operations/gettopwatchedcontentuser.md deleted file mode 100644 index afc40e0..0000000 --- a/docs/models/operations/gettopwatchedcontentuser.md +++ /dev/null @@ -1,8 +0,0 @@ -# GetTopWatchedContentUser - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | 220 | \ No newline at end of file diff --git a/docs/models/operations/gettranscodesessionsmediacontainer.md b/docs/models/operations/gettranscodesessionsmediacontainer.md deleted file mode 100644 index 548797a..0000000 --- a/docs/models/operations/gettranscodesessionsmediacontainer.md +++ /dev/null @@ -1,9 +0,0 @@ -# GetTranscodeSessionsMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `transcode_session` | List[[operations.TranscodeSession](../../models/operations/transcodesession.md)] | :heavy_minus_sign: | N/A | [
{
"key": "vv3i2q2lax92qlzul1hbd4bx",
"throttled": false,
"complete": false,
"progress": 1.7999999523162842,
"size": -22,
"speed": 25.100000381469727,
"error": false,
"duration": 1445695,
"remaining": 53,
"context": "streaming",
"sourceVideoCodec": "h264",
"sourceAudioCodec": "aac",
"videoDecision": "transcode",
"audioDecision": "transcode",
"subtitleDecision": "burn",
"protocol": "http",
"container": "mkv",
"videoCodec": "h264",
"audioCodec": "opus",
"audioChannels": 1,
"transcodeHwRequested": true,
"timeStamp": 1705895805.4919229,
"maxOffsetAvailable": 29.53,
"minOffsetAvailable": 3.003000020980835
}
] | \ No newline at end of file diff --git a/docs/models/operations/gettranscodesessionsresponse.md b/docs/models/operations/gettranscodesessionsresponse.md deleted file mode 100644 index 8e7a13a..0000000 --- a/docs/models/operations/gettranscodesessionsresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetTranscodeSessionsResponse - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetTranscodeSessionsResponseBody]](../../models/operations/gettranscodesessionsresponsebody.md) | :heavy_minus_sign: | The Transcode Sessions | \ No newline at end of file diff --git a/docs/models/operations/gettranscodesessionsresponsebody.md b/docs/models/operations/gettranscodesessionsresponsebody.md deleted file mode 100644 index f98b978..0000000 --- a/docs/models/operations/gettranscodesessionsresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTranscodeSessionsResponseBody - -The Transcode Sessions - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | -| `media_container` | [Optional[operations.GetTranscodeSessionsMediaContainer]](../../models/operations/gettranscodesessionsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/gettransienttokenglobals.md b/docs/models/operations/gettransienttokenglobals.md new file mode 100644 index 0000000..64d5e7d --- /dev/null +++ b/docs/models/operations/gettransienttokenglobals.md @@ -0,0 +1,18 @@ +# GetTransientTokenGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/gettransienttokenmediacontainer.md b/docs/models/operations/gettransienttokenmediacontainer.md new file mode 100644 index 0000000..624a765 --- /dev/null +++ b/docs/models/operations/gettransienttokenmediacontainer.md @@ -0,0 +1,17 @@ +# GetTransientTokenMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `token` | *Optional[str]* | :heavy_minus_sign: | The transient token | \ No newline at end of file diff --git a/docs/models/operations/gettransienttokenqueryparamtype.md b/docs/models/operations/gettransienttokenqueryparamtype.md deleted file mode 100644 index 5c33dc3..0000000 --- a/docs/models/operations/gettransienttokenqueryparamtype.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetTransientTokenQueryParamType - -`delegation` - This is the only supported `type` parameter. - - -## Values - -| Name | Value | -| ------------ | ------------ | -| `DELEGATION` | delegation | \ No newline at end of file diff --git a/docs/models/operations/gettransienttokenrequest.md b/docs/models/operations/gettransienttokenrequest.md index 23ce0e9..465c2c1 100644 --- a/docs/models/operations/gettransienttokenrequest.md +++ b/docs/models/operations/gettransienttokenrequest.md @@ -3,7 +3,18 @@ ## Fields -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `type` | [operations.GetTransientTokenQueryParamType](../../models/operations/gettransienttokenqueryparamtype.md) | :heavy_check_mark: | `delegation` - This is the only supported `type` parameter. | -| `scope` | [operations.Scope](../../models/operations/scope.md) | :heavy_check_mark: | `all` - This is the only supported `scope` parameter. | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `type` | [operations.QueryParamType](../../models/operations/queryparamtype.md) | :heavy_check_mark: | The value `delegation` is the only supported `type` parameter. | | +| `scope` | [operations.Scope](../../models/operations/scope.md) | :heavy_check_mark: | The value `all` is the only supported `scope` parameter. | | \ No newline at end of file diff --git a/docs/models/operations/gettransienttokenresponse.md b/docs/models/operations/gettransienttokenresponse.md index da14eff..0693609 100644 --- a/docs/models/operations/gettransienttokenresponse.md +++ b/docs/models/operations/gettransienttokenresponse.md @@ -3,8 +3,9 @@ ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetTransientTokenResponseBody]](../../models/operations/gettransienttokenresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/gettransienttokenresponsebody.md b/docs/models/operations/gettransienttokenresponsebody.md new file mode 100644 index 0000000..d7fecdc --- /dev/null +++ b/docs/models/operations/gettransienttokenresponsebody.md @@ -0,0 +1,10 @@ +# GetTransientTokenResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.GetTransientTokenMediaContainer]](../../models/operations/gettransienttokenmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getupdatesstatusmediacontainer.md b/docs/models/operations/getupdatesstatusmediacontainer.md new file mode 100644 index 0000000..b02ad75 --- /dev/null +++ b/docs/models/operations/getupdatesstatusmediacontainer.md @@ -0,0 +1,13 @@ +# GetUpdatesStatusMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `auto_update_version` | *Optional[int]* | :heavy_minus_sign: | The version of the updater (currently `1`) | +| `can_install` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether this install can be updated through these endpoints (typically only on MacOS and Windows) | +| `checked_at` | *Optional[int]* | :heavy_minus_sign: | The last time a check for updates was performed | +| `download_url` | *Optional[str]* | :heavy_minus_sign: | The URL where the update is available | +| `release` | List[[operations.Release](../../models/operations/release.md)] | :heavy_minus_sign: | N/A | +| `status` | *Optional[int]* | :heavy_minus_sign: | The current error code (`0` means no error) | \ No newline at end of file diff --git a/docs/models/operations/getupdatesstatusresponse.md b/docs/models/operations/getupdatesstatusresponse.md new file mode 100644 index 0000000..eb4c7c1 --- /dev/null +++ b/docs/models/operations/getupdatesstatusresponse.md @@ -0,0 +1,11 @@ +# GetUpdatesStatusResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.GetUpdatesStatusResponseBody]](../../models/operations/getupdatesstatusresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/getupdatesstatusresponsebody.md b/docs/models/operations/getupdatesstatusresponsebody.md new file mode 100644 index 0000000..e9fd2e0 --- /dev/null +++ b/docs/models/operations/getupdatesstatusresponsebody.md @@ -0,0 +1,10 @@ +# GetUpdatesStatusResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.GetUpdatesStatusMediaContainer]](../../models/operations/getupdatesstatusmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getupdatesstatusstate.md b/docs/models/operations/getupdatesstatusstate.md new file mode 100644 index 0000000..ac4ba86 --- /dev/null +++ b/docs/models/operations/getupdatesstatusstate.md @@ -0,0 +1,29 @@ +# GetUpdatesStatusState + +The status of this update. + +- available - This release is available +- downloading - This release is downloading +- downloaded - This release has been downloaded +- installing - This release is installing +- tonight - This release will be installed tonight +- skipped - This release has been skipped +- error - This release has an error +- notify - This release is only notifying it is available (typically because it cannot be installed on this setup) +- done - This release is complete + + + +## Values + +| Name | Value | +| ------------- | ------------- | +| `AVAILABLE` | available | +| `DOWNLOADING` | downloading | +| `DOWNLOADED` | downloaded | +| `INSTALLING` | installing | +| `TONIGHT` | tonight | +| `SKIPPED` | skipped | +| `ERROR` | error | +| `NOTIFY` | notify | +| `DONE` | done | \ No newline at end of file diff --git a/docs/models/operations/getupdatestatusmediacontainer.md b/docs/models/operations/getupdatestatusmediacontainer.md deleted file mode 100644 index 357eb9c..0000000 --- a/docs/models/operations/getupdatestatusmediacontainer.md +++ /dev/null @@ -1,13 +0,0 @@ -# GetUpdateStatusMediaContainer - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `can_install` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `checked_at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1705801232 | -| `download_url` | *Optional[str]* | :heavy_minus_sign: | N/A | https://plex.tv/downloads/latest/5?channel=8&build=linux-x86_64&distro=redhat&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx | -| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | 0 | -| `release` | List[[operations.Release](../../models/operations/release.md)] | :heavy_minus_sign: | N/A | [
{
"key": "https://plex.tv/updater/releases/5136",
"version": "1.40.0.7775-456fbaf97",
"added": "(PLEASE NOTE) This version makes changes to the database which will make it compatible only with server versions 1.31.2 or higher (released March 14). You will not be able to use your database on Plex Media Server versions lower than this after this update. Please also be patient when updating to this version if you have a very large database and allow the upgrade process to finish.\n(Collections) Items added to a collection from the item context menu will now lock the collection field on the items (#12793)\n(Music) Store track genres and add filtering options (#14653)\n(Music) Support ID3v2.4 null-separated tags for genres and release type (#14653)\n(View History) No longer create a view history entry for items marked as played (#10888)\n(Web) Updated to 4.118.0",
"fixed": "(Agents) Changing a 'Other Videos' type library to the modern movie agent would fail (#14483)\n(Agents) It is possible that agents are not initialised during startup on rare occasions (#14654)\n(Agents) Remove the legacy OpenSubtitles agent which is no longer supported upstream (#14667)\n(Collection) Server could become unresponsive when collection membership changes (#14612)\n(DVR) Previously watched recordings could be deleted without being watched again (#13779)\n(Libraries) When performing fix match on items from certain music libraries the language would default to Arabic (#14501)\n(Library) The Content Rating not equal to None filter does not work (#14620)\n(Search) Album search results could contain all the album's tracks too (#14486)\n(Subtitles) In some circumstances, sidecar subtitles can show up for media when they're no longer available (#14674)\n(Transcoder) HW encoding would fail on devices with no rate control (#14222)\n(Transcoder) Software transcoding on Ubuntu could cause unexpected behavior (#14605)",
"downloadURL": "https://plex.tv/downloads/latest/5?channel=8\u0026build=linux-x86_64\u0026distro=redhat\u0026X-Plex-Token=xxxxxxxxxxxxxxxxxxxx",
"state": "notify"
}
] | \ No newline at end of file diff --git a/docs/models/operations/getupdatestatusresponse.md b/docs/models/operations/getupdatestatusresponse.md deleted file mode 100644 index 505d24e..0000000 --- a/docs/models/operations/getupdatestatusresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUpdateStatusResponse - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetUpdateStatusResponseBody]](../../models/operations/getupdatestatusresponsebody.md) | :heavy_minus_sign: | The Server Updates | \ No newline at end of file diff --git a/docs/models/operations/getupdatestatusresponsebody.md b/docs/models/operations/getupdatestatusresponsebody.md deleted file mode 100644 index 32ed362..0000000 --- a/docs/models/operations/getupdatestatusresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUpdateStatusResponseBody - -The Server Updates - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -| `media_container` | [Optional[operations.GetUpdateStatusMediaContainer]](../../models/operations/getupdatestatusmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getuserfriendsresponse.md b/docs/models/operations/getuserfriendsresponse.md deleted file mode 100644 index 32758cc..0000000 --- a/docs/models/operations/getuserfriendsresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUserFriendsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `friends` | List[[operations.Friend](../../models/operations/friend.md)] | :heavy_minus_sign: | Friends Data | \ No newline at end of file diff --git a/docs/models/operations/getusersmediacontainer.md b/docs/models/operations/getusersmediacontainer.md deleted file mode 100644 index aed8301..0000000 --- a/docs/models/operations/getusersmediacontainer.md +++ /dev/null @@ -1,15 +0,0 @@ -# GetUsersMediaContainer - -Container holding user and server details. - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -| `friendly_name` | *str* | :heavy_check_mark: | The friendly name of the Plex instance. | myPlex | -| `identifier` | *str* | :heavy_check_mark: | N/A | com.plexapp.plugins.myplex | -| `machine_identifier` | *str* | :heavy_check_mark: | Unique Machine identifier of the Plex server. | 3dff4c4da3b1229a649aa574a9e2b419a684a20e | -| `total_size` | *int* | :heavy_check_mark: | Total number of users. | 30 | -| `size` | *int* | :heavy_check_mark: | Number of users in the current response. | 30 | -| `user` | List[[operations.User](../../models/operations/user.md)] | :heavy_check_mark: | List of users with access to the Plex server. | | \ No newline at end of file diff --git a/docs/models/operations/getusersrequest.md b/docs/models/operations/getusersrequest.md deleted file mode 100644 index 2a7e5bb..0000000 --- a/docs/models/operations/getusersrequest.md +++ /dev/null @@ -1,20 +0,0 @@ -# GetUsersRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -| `client_id` | *str* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | -| `client_name` | *Optional[str]* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku | -| `device_nickname` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `device_name` | *Optional[str]* | :heavy_minus_sign: | The name of the device the client application is running on. This is used to track the client application and its usage. (Chrome, Safari, etc.) | Chrome | -| `device_screen_resolution` | *Optional[str]* | :heavy_minus_sign: | The resolution of the device the client application is running on. This is used to track the client application and its usage. (1487x1165,2560x1440) | 1487x1165,2560x1440 | -| `client_version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application. | 2.4.1 | -| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client application. | Roku | -| `client_features` | *Optional[str]* | :heavy_minus_sign: | The features of the client application. This is used to track the client application and its usage. (external-media,indirect-media,hub-style-list) | external-media,indirect-media,hub-style-list | -| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | -| `x_plex_session_id` | *Optional[str]* | :heavy_minus_sign: | The session ID of the client application. This is used to track the client application and its usage. (97e136ef-4ddd-4ff3-89a7-a5820c96c2ca) | 97e136ef-4ddd-4ff3-89a7-a5820c96c2ca | -| `x_plex_language` | *Optional[str]* | :heavy_minus_sign: | The language of the client application. | en | -| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | -| `x_plex_token` | *str* | :heavy_check_mark: | An authentication token, obtained from plex.tv | CV5xoxjTpFKUzBTShsaf | \ No newline at end of file diff --git a/docs/models/operations/getusersresponse.md b/docs/models/operations/getusersresponse.md deleted file mode 100644 index 18c2af5..0000000 --- a/docs/models/operations/getusersresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetUsersResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `body` | *Optional[bytes]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/getusersresponsebody.md b/docs/models/operations/getusersresponsebody.md deleted file mode 100644 index 7acd1e7..0000000 --- a/docs/models/operations/getusersresponsebody.md +++ /dev/null @@ -1,10 +0,0 @@ -# GetUsersResponseBody - -Successful response with media container data in XML - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | -| `media_container` | [Optional[operations.GetUsersMediaContainer]](../../models/operations/getusersmediacontainer.md) | :heavy_minus_sign: | Container holding user and server details. | \ No newline at end of file diff --git a/docs/models/operations/getusersserver.md b/docs/models/operations/getusersserver.md deleted file mode 100644 index edb1333..0000000 --- a/docs/models/operations/getusersserver.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetUsersServer - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique ID of the server of the connected user | 907759180 | -| `server_id` | *int* | :heavy_check_mark: | ID of the actual Plex server. | 9999999 | -| `machine_identifier` | *str* | :heavy_check_mark: | Machine identifier of the Plex server. | fbb8aa6be6e0c997c6268bc2b4431c8807f70a3 | -| `name` | *str* | :heavy_check_mark: | Name of the Plex server of the connected user. | ConnectedUserFlix | -| `last_seen_at` | *int* | :heavy_check_mark: | N/A | 1556281940 | -| `num_libraries` | *int* | :heavy_check_mark: | Number of libraries in the server this user has access to. | 16 | -| `all_libraries` | [Optional[operations.AllLibraries]](../../models/operations/alllibraries.md) | :heavy_minus_sign: | N/A | 1 | -| `owned` | [Optional[operations.Owned]](../../models/operations/owned.md) | :heavy_minus_sign: | N/A | 1 | -| `pending` | [Optional[operations.Pending]](../../models/operations/pending.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/models/operations/getwatchlistrequest.md b/docs/models/operations/getwatchlistrequest.md deleted file mode 100644 index b2ea798..0000000 --- a/docs/models/operations/getwatchlistrequest.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetWatchListRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `filter_` | [operations.Filter](../../models/operations/filter_.md) | :heavy_check_mark: | Filter | | -| `sort` | *Optional[str]* | :heavy_minus_sign: | In the format "field:dir". Available fields are "watchlistedAt" (Added At),
"titleSort" (Title), "originallyAvailableAt" (Release Date), or "rating" (Critic Rating).
"dir" can be "asc" or "desc"
| | -| `libtype` | [Optional[operations.Libtype]](../../models/operations/libtype.md) | :heavy_minus_sign: | The type of library to filter. Can be "movie" or "show", or all if not present.
| | -| `maxresults` | *Optional[int]* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
| | -| `include_collections` | [Optional[operations.IncludeCollections]](../../models/operations/includecollections.md) | :heavy_minus_sign: | include collections in the results
| | -| `include_external_media` | [Optional[operations.IncludeExternalMedia]](../../models/operations/includeexternalmedia.md) | :heavy_minus_sign: | include external media in the results
| | -| `x_plex_container_start` | *Optional[int]* | :heavy_minus_sign: | The index of the first item to return. If not specified, the first item will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 0
| 0 | -| `x_plex_container_size` | *Optional[int]* | :heavy_minus_sign: | The number of items to return. If not specified, all items will be returned.
If the number of items exceeds the limit, the response will be paginated.
By default this is 50
| 50 | -| `x_plex_token` | *str* | :heavy_check_mark: | An authentication token, obtained from plex.tv | CV5xoxjTpFKUzBTShsaf | \ No newline at end of file diff --git a/docs/models/operations/getwatchlistresponse.md b/docs/models/operations/getwatchlistresponse.md deleted file mode 100644 index b10a528..0000000 --- a/docs/models/operations/getwatchlistresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# GetWatchListResponse - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `object` | [Optional[operations.GetWatchListResponseBody]](../../models/operations/getwatchlistresponsebody.md) | :heavy_minus_sign: | Watchlist Data | \ No newline at end of file diff --git a/docs/models/operations/getwatchlistresponsebody.md b/docs/models/operations/getwatchlistresponsebody.md deleted file mode 100644 index 7ad64e0..0000000 --- a/docs/models/operations/getwatchlistresponsebody.md +++ /dev/null @@ -1,16 +0,0 @@ -# GetWatchListResponseBody - -Watchlist Data - - -## Fields - -| Field | Type | Required | Description | -| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | -| `library_section_id` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `offset` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `total_size` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `metadata` | List[[operations.Metadata](../../models/operations/metadata.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/guids.md b/docs/models/operations/guids.md deleted file mode 100644 index 2a8153a..0000000 --- a/docs/models/operations/guids.md +++ /dev/null @@ -1,8 +0,0 @@ -# Guids - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *str* | :heavy_check_mark: | The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb://
| {
"imdbExample": {
"summary": "IMDB example",
"value": "imdb://tt13015952"
},
"tmdbExample": {
"summary": "TMDB example",
"value": "tmdb://2434012"
},
"tvdbExample": {
"summary": "TVDB example",
"value": "tvdb://7945991"
}
} | \ No newline at end of file diff --git a/docs/models/operations/hasthumbnail.md b/docs/models/operations/hasthumbnail.md deleted file mode 100644 index 3741df8..0000000 --- a/docs/models/operations/hasthumbnail.md +++ /dev/null @@ -1,11 +0,0 @@ -# HasThumbnail - -Indicates if the part has a thumbnail. - - -## Values - -| Name | Value | -| ------- | ------- | -| `FALSE` | 0 | -| `TRUE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/hidden.md b/docs/models/operations/hidden.md deleted file mode 100644 index bcf6baf..0000000 --- a/docs/models/operations/hidden.md +++ /dev/null @@ -1,12 +0,0 @@ -# Hidden - -The Plex library visibility setting - - -## Values - -| Name | Value | -| --------------------------------------- | --------------------------------------- | -| `VISIBLE` | 0 | -| `EXCLUDE_HOME_SCREEN` | 1 | -| `EXCLUDE_HOME_SCREEN_AND_GLOBAL_SEARCH` | 2 | \ No newline at end of file diff --git a/docs/models/operations/hints.md b/docs/models/operations/hints.md new file mode 100644 index 0000000..baedb29 --- /dev/null +++ b/docs/models/operations/hints.md @@ -0,0 +1,9 @@ +# Hints + +Hints describing what we're looking for. Note: The hint `ratingKey` is required for downloading from a PMS remote. + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/home.md b/docs/models/operations/home.md deleted file mode 100644 index b7b9973..0000000 --- a/docs/models/operations/home.md +++ /dev/null @@ -1,11 +0,0 @@ -# Home - -Indicates if the user is part of a home group. - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/homevisibility.md b/docs/models/operations/homevisibility.md new file mode 100644 index 0000000..fe364cb --- /dev/null +++ b/docs/models/operations/homevisibility.md @@ -0,0 +1,18 @@ +# HomeVisibility + +Whether this hub is visible on the home screen + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + + +## Values + +| Name | Value | +| -------- | -------- | +| `ALL` | all | +| `NONE` | none | +| `ADMIN` | admin | +| `SHARED` | shared | \ No newline at end of file diff --git a/docs/models/operations/hub.md b/docs/models/operations/hub.md index d93d2d7..6faedfc 100644 --- a/docs/models/operations/hub.md +++ b/docs/models/operations/hub.md @@ -3,16 +3,12 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `hub_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/metadata/50768,65523,58188,57341,57302,57070 | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /playlists/all?type=15&sort=lastViewedAt:desc&playlistType=video,audio | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Recent Playlists | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | playlist | -| `hub_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | home.playlists | -| `context` | *Optional[str]* | :heavy_minus_sign: | N/A | hub.home.playlists | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | 6 | -| `more` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `style` | *Optional[str]* | :heavy_minus_sign: | N/A | shelf | -| `promoted` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `metadata` | List[[operations.GetGlobalHubsMetadata](../../models/operations/getglobalhubsmetadata.md)] | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `home_visibility` | [Optional[operations.HomeVisibility]](../../models/operations/homevisibility.md) | :heavy_minus_sign: | Whether this hub is visible on the home screen
- all: Visible to all users
- none: Visible to no users
- admin: Visible to only admin users
- shared: Visible to shared users
| +| `identifier` | *Optional[str]* | :heavy_minus_sign: | The identifier for this hub | +| `promoted_to_own_home` | *Optional[bool]* | :heavy_minus_sign: | Whether this hub is visible to admin user home | +| `promoted_to_recommended` | *Optional[bool]* | :heavy_minus_sign: | Whether this hub is promoted to all for recommendations | +| `promoted_to_shared_home` | *Optional[bool]* | :heavy_minus_sign: | Whether this hub is visible to shared user's home | +| `recommendations_visibility` | [Optional[operations.RecommendationsVisibility]](../../models/operations/recommendationsvisibility.md) | :heavy_minus_sign: | The visibility of this hub in recommendations:
- all: Visible to all users
- none: Visible to no users
- admin: Visible to only admin users
- shared: Visible to shared users
| +| `title` | *Optional[str]* | :heavy_minus_sign: | The title of this hub | \ No newline at end of file diff --git a/docs/models/operations/image.md b/docs/models/operations/image.md deleted file mode 100644 index 5a5c29d..0000000 --- a/docs/models/operations/image.md +++ /dev/null @@ -1,10 +0,0 @@ -# Image - - -## Fields - -| Field | Type | Required | Description | -| ------------------ | ------------------ | ------------------ | ------------------ | -| `alt` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `url` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/includeadvanced.md b/docs/models/operations/includeadvanced.md deleted file mode 100644 index 6186f64..0000000 --- a/docs/models/operations/includeadvanced.md +++ /dev/null @@ -1,9 +0,0 @@ -# IncludeAdvanced - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/includecollections.md b/docs/models/operations/includecollections.md deleted file mode 100644 index cc248df..0000000 --- a/docs/models/operations/includecollections.md +++ /dev/null @@ -1,12 +0,0 @@ -# IncludeCollections - -include collections in the results - - - -## Values - -| Name | Value | -| ------ | ------ | -| `ONE` | 1 | -| `ZERO` | 0 | \ No newline at end of file diff --git a/docs/models/operations/includedetails.md b/docs/models/operations/includedetails.md deleted file mode 100644 index 4dbe243..0000000 --- a/docs/models/operations/includedetails.md +++ /dev/null @@ -1,13 +0,0 @@ -# IncludeDetails - -Whether or not to include details for a section (types, filters, and sorts). -Only exists for backwards compatibility, media providers other than the server libraries have it on always. - - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/includeexternalmedia.md b/docs/models/operations/includeexternalmedia.md deleted file mode 100644 index 07bbeab..0000000 --- a/docs/models/operations/includeexternalmedia.md +++ /dev/null @@ -1,12 +0,0 @@ -# IncludeExternalMedia - -include external media in the results - - - -## Values - -| Name | Value | -| ------ | ------ | -| `ONE` | 1 | -| `ZERO` | 0 | \ No newline at end of file diff --git a/docs/models/operations/includeguids.md b/docs/models/operations/includeguids.md deleted file mode 100644 index 8ca17dd..0000000 --- a/docs/models/operations/includeguids.md +++ /dev/null @@ -1,12 +0,0 @@ -# IncludeGuids - -Adds the Guids object to the response - - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/includehttps.md b/docs/models/operations/includehttps.md deleted file mode 100644 index 8840c20..0000000 --- a/docs/models/operations/includehttps.md +++ /dev/null @@ -1,11 +0,0 @@ -# IncludeHTTPS - -Include Https entries in the results - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/includeipv6.md b/docs/models/operations/includeipv6.md deleted file mode 100644 index 7ca8784..0000000 --- a/docs/models/operations/includeipv6.md +++ /dev/null @@ -1,11 +0,0 @@ -# IncludeIPv6 - -Include IPv6 entries in the results - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/includemeta.md b/docs/models/operations/includemeta.md deleted file mode 100644 index 9202980..0000000 --- a/docs/models/operations/includemeta.md +++ /dev/null @@ -1,12 +0,0 @@ -# IncludeMeta - -Adds the Meta object to the response - - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/includerelay.md b/docs/models/operations/includerelay.md deleted file mode 100644 index df7ee33..0000000 --- a/docs/models/operations/includerelay.md +++ /dev/null @@ -1,13 +0,0 @@ -# IncludeRelay - -Include Relay addresses in the results -E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400 - - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/index.md b/docs/models/operations/index.md new file mode 100644 index 0000000..5e9bb11 --- /dev/null +++ b/docs/models/operations/index.md @@ -0,0 +1,10 @@ +# Index + +The type of index to grab. + + +## Values + +| Name | Value | +| ----- | ----- | +| `SD` | sd | \ No newline at end of file diff --git a/docs/models/operations/ingesttransientitemglobals.md b/docs/models/operations/ingesttransientitemglobals.md new file mode 100644 index 0000000..5dead07 --- /dev/null +++ b/docs/models/operations/ingesttransientitemglobals.md @@ -0,0 +1,18 @@ +# IngestTransientItemGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/ingesttransientitemrequest.md b/docs/models/operations/ingesttransientitemrequest.md new file mode 100644 index 0000000..69042a7 --- /dev/null +++ b/docs/models/operations/ingesttransientitemrequest.md @@ -0,0 +1,22 @@ +# IngestTransientItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `url` | *Optional[str]* | :heavy_minus_sign: | The file of the file to ingest. | file:///storage%2Femulated%2F0%2FArcher-S01E01.mkv | +| `virtual_file_path` | *Optional[str]* | :heavy_minus_sign: | A virtual path to use when the url is opaque. | /Avatar.mkv | +| `compute_hashes` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether or not to compute Plex and OpenSubtitle hashes for the file. Defaults to 0. | 1 | +| `ingest_non_matches` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether or not non matching media should be stored. Defaults to 0. | 1 | \ No newline at end of file diff --git a/docs/models/operations/ingesttransientitemresponse.md b/docs/models/operations/ingesttransientitemresponse.md new file mode 100644 index 0000000..20d515c --- /dev/null +++ b/docs/models/operations/ingesttransientitemresponse.md @@ -0,0 +1,12 @@ +# IngestTransientItemResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/internalpaymentmethod.md b/docs/models/operations/internalpaymentmethod.md deleted file mode 100644 index f1103c2..0000000 --- a/docs/models/operations/internalpaymentmethod.md +++ /dev/null @@ -1,7 +0,0 @@ -# InternalPaymentMethod - - -## Fields - -| Field | Type | Required | Description | -| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/item.md b/docs/models/operations/item.md new file mode 100644 index 0000000..46f33df --- /dev/null +++ b/docs/models/operations/item.md @@ -0,0 +1,19 @@ +# Item + +Note: OpenAPI cannot properly render this query parameter example ([See GHI](https://github.com/OAI/OpenAPI-Specification/issues/1706)). It should be rendered as: + +Item[type]=42&Item[title]=Jack-Jack Attack&Item[target]=&Item[targetTagID]=1&Item[locationID]=-1&Item[Location][uri]=library://82503060-0d68-4603-b594-8b071d54819e/item//library/metadata/146&Item[Policy][scope]=all&Item[Policy][value]=&Item[Policy][unwatched]=0 + + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `location` | [Optional[operations.ModifyPlaylistGeneratorQueryParamLocation]](../../models/operations/modifyplaylistgeneratorqueryparamlocation.md) | :heavy_minus_sign: | N/A | +| `location_id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `policy` | [Optional[operations.Policy]](../../models/operations/policy.md) | :heavy_minus_sign: | N/A | +| `target` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `target_tag_id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/language.md b/docs/models/operations/language.md new file mode 100644 index 0000000..1f33639 --- /dev/null +++ b/docs/models/operations/language.md @@ -0,0 +1,9 @@ +# Language + + +## Fields + +| Field | Type | Required | Description | +| ---------------------- | ---------------------- | ---------------------- | ---------------------- | +| `code` | *Optional[str]* | :heavy_minus_sign: | 3 letter language code | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/level.md b/docs/models/operations/level.md index 5db4f27..1df216b 100644 --- a/docs/models/operations/level.md +++ b/docs/models/operations/level.md @@ -1,11 +1,11 @@ # Level An integer log level to write to the PMS log with. -0: Error -1: Warning -2: Info -3: Debug -4: Verbose + - 0: Error + - 1: Warning + - 2: Info + - 3: Debug + - 4: Verbose diff --git a/docs/models/operations/libtype.md b/docs/models/operations/libtype.md deleted file mode 100644 index 6828dfd..0000000 --- a/docs/models/operations/libtype.md +++ /dev/null @@ -1,12 +0,0 @@ -# Libtype - -The type of library to filter. Can be "movie" or "show", or all if not present. - - - -## Values - -| Name | Value | -| ------- | ------- | -| `MOVIE` | movie | -| `SHOW` | show | \ No newline at end of file diff --git a/docs/models/operations/lineup.md b/docs/models/operations/lineup.md new file mode 100644 index 0000000..50354a9 --- /dev/null +++ b/docs/models/operations/lineup.md @@ -0,0 +1,13 @@ +# Lineup + + +## Fields + +| Field | Type | Required | Description | +| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | *Optional[str]* | :heavy_minus_sign: | The type of this object (`lineup` in this case) | +| `lineup_type` | [Optional[operations.LineupType]](../../models/operations/lineuptype.md) | :heavy_minus_sign: | - `-1`: N/A
- `0`: Over the air
- `1`: Cable
- `2`: Satellite
- `3`: IPTV
- `4`: Virtual
| +| `location` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | The uuid of this lineup | +| `channel` | List[[components.Channel](../../models/components/channel.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/lineuptype.md b/docs/models/operations/lineuptype.md new file mode 100644 index 0000000..279e8e0 --- /dev/null +++ b/docs/models/operations/lineuptype.md @@ -0,0 +1,21 @@ +# LineupType + +- `-1`: N/A +- `0`: Over the air +- `1`: Cable +- `2`: Satellite +- `3`: IPTV +- `4`: Virtual + + + +## Values + +| Name | Value | +| --------- | --------- | +| `MINUS_1` | -1 | +| `ZERO` | 0 | +| `ONE` | 1 | +| `TWO` | 2 | +| `THREE` | 3 | +| `FOUR` | 4 | \ No newline at end of file diff --git a/docs/models/operations/listactivitiesmediacontainer.md b/docs/models/operations/listactivitiesmediacontainer.md new file mode 100644 index 0000000..b53773d --- /dev/null +++ b/docs/models/operations/listactivitiesmediacontainer.md @@ -0,0 +1,8 @@ +# ListActivitiesMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | +| `activity` | List[[operations.Activity](../../models/operations/activity.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listactivitiesresponse.md b/docs/models/operations/listactivitiesresponse.md new file mode 100644 index 0000000..e38a0a5 --- /dev/null +++ b/docs/models/operations/listactivitiesresponse.md @@ -0,0 +1,11 @@ +# ListActivitiesResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.ListActivitiesResponseBody]](../../models/operations/listactivitiesresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/listactivitiesresponsebody.md b/docs/models/operations/listactivitiesresponsebody.md new file mode 100644 index 0000000..7ab5605 --- /dev/null +++ b/docs/models/operations/listactivitiesresponsebody.md @@ -0,0 +1,10 @@ +# ListActivitiesResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.ListActivitiesMediaContainer]](../../models/operations/listactivitiesmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listcontentglobals.md b/docs/models/operations/listcontentglobals.md new file mode 100644 index 0000000..4ffe511 --- /dev/null +++ b/docs/models/operations/listcontentglobals.md @@ -0,0 +1,18 @@ +# ListContentGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/listcontentrequest.md b/docs/models/operations/listcontentrequest.md new file mode 100644 index 0000000..8cfbbf8 --- /dev/null +++ b/docs/models/operations/listcontentrequest.md @@ -0,0 +1,20 @@ +# ListContentRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `media_query` | [Optional[components.MediaQuery]](../../models/components/mediaquery.md) | :heavy_minus_sign: | This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries | | +| `section_id` | *str* | :heavy_check_mark: | The id of the section | | \ No newline at end of file diff --git a/docs/models/operations/listcontentresponse.md b/docs/models/operations/listcontentresponse.md new file mode 100644 index 0000000..878ff86 --- /dev/null +++ b/docs/models/operations/listcontentresponse.md @@ -0,0 +1,12 @@ +# ListContentResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listdevicesresponse.md b/docs/models/operations/listdevicesresponse.md new file mode 100644 index 0000000..83dd4b8 --- /dev/null +++ b/docs/models/operations/listdevicesresponse.md @@ -0,0 +1,12 @@ +# ListDevicesResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_device` | [Optional[components.MediaContainerWithDevice]](../../models/components/mediacontainerwithdevice.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listdownloadqueueitemsglobals.md b/docs/models/operations/listdownloadqueueitemsglobals.md new file mode 100644 index 0000000..cde32b9 --- /dev/null +++ b/docs/models/operations/listdownloadqueueitemsglobals.md @@ -0,0 +1,18 @@ +# ListDownloadQueueItemsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/listdownloadqueueitemsmediacontainer.md b/docs/models/operations/listdownloadqueueitemsmediacontainer.md new file mode 100644 index 0000000..e9999c6 --- /dev/null +++ b/docs/models/operations/listdownloadqueueitemsmediacontainer.md @@ -0,0 +1,17 @@ +# ListDownloadQueueItemsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `download_queue_item` | List[[operations.DownloadQueueItem](../../models/operations/downloadqueueitem.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listdownloadqueueitemsrequest.md b/docs/models/operations/listdownloadqueueitemsrequest.md new file mode 100644 index 0000000..c29894c --- /dev/null +++ b/docs/models/operations/listdownloadqueueitemsrequest.md @@ -0,0 +1,19 @@ +# ListDownloadQueueItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `queue_id` | *int* | :heavy_check_mark: | The queue id | | \ No newline at end of file diff --git a/docs/models/operations/listdownloadqueueitemsresponse.md b/docs/models/operations/listdownloadqueueitemsresponse.md new file mode 100644 index 0000000..8907ee5 --- /dev/null +++ b/docs/models/operations/listdownloadqueueitemsresponse.md @@ -0,0 +1,11 @@ +# ListDownloadQueueItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.ListDownloadQueueItemsResponseBody]](../../models/operations/listdownloadqueueitemsresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/listdownloadqueueitemsresponsebody.md b/docs/models/operations/listdownloadqueueitemsresponsebody.md new file mode 100644 index 0000000..3defb4d --- /dev/null +++ b/docs/models/operations/listdownloadqueueitemsresponsebody.md @@ -0,0 +1,10 @@ +# ListDownloadQueueItemsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.ListDownloadQueueItemsMediaContainer]](../../models/operations/listdownloadqueueitemsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listdownloadqueueitemsstatus.md b/docs/models/operations/listdownloadqueueitemsstatus.md new file mode 100644 index 0000000..b9a4bf4 --- /dev/null +++ b/docs/models/operations/listdownloadqueueitemsstatus.md @@ -0,0 +1,22 @@ +# ListDownloadQueueItemsStatus + +The state of the item: + - deciding: The item decision is pending + - waiting: The item is waiting for transcode + - processing: The item is being transcoded + - available: The item is available for download + - error: The item encountered an error in the decision or transcode + - expired: The transcoded item has timed out and is no longer available + + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `DECIDING` | deciding | +| `WAITING` | waiting | +| `PROCESSING` | processing | +| `AVAILABLE` | available | +| `ERROR` | error | +| `EXPIRED` | expired | \ No newline at end of file diff --git a/docs/models/operations/listdvrsdvrsmediacontainer.md b/docs/models/operations/listdvrsdvrsmediacontainer.md new file mode 100644 index 0000000..75da60b --- /dev/null +++ b/docs/models/operations/listdvrsdvrsmediacontainer.md @@ -0,0 +1,17 @@ +# ListDVRsDVRsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `status` | *Optional[int]* | :heavy_minus_sign: | A status indicator. If present and non-zero, indicates an error | \ No newline at end of file diff --git a/docs/models/operations/listdvrsmediacontainer.md b/docs/models/operations/listdvrsmediacontainer.md new file mode 100644 index 0000000..44a79f1 --- /dev/null +++ b/docs/models/operations/listdvrsmediacontainer.md @@ -0,0 +1,9 @@ +# ListDVRsMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.ListDVRsDVRsMediaContainer]](../../models/operations/listdvrsdvrsmediacontainer.md) | :heavy_minus_sign: | N/A | +| `dvr` | List[[operations.Dvr](../../models/operations/dvr.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listdvrsresponse.md b/docs/models/operations/listdvrsresponse.md new file mode 100644 index 0000000..d3f483e --- /dev/null +++ b/docs/models/operations/listdvrsresponse.md @@ -0,0 +1,12 @@ +# ListDVRsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.ListDVRsResponseBody]](../../models/operations/listdvrsresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listdvrsresponsebody.md b/docs/models/operations/listdvrsresponsebody.md new file mode 100644 index 0000000..3a6570e --- /dev/null +++ b/docs/models/operations/listdvrsresponsebody.md @@ -0,0 +1,10 @@ +# ListDVRsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.ListDVRsMediaContainer]](../../models/operations/listdvrsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listhubsglobals.md b/docs/models/operations/listhubsglobals.md new file mode 100644 index 0000000..49ebdb2 --- /dev/null +++ b/docs/models/operations/listhubsglobals.md @@ -0,0 +1,18 @@ +# ListHubsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/listhubsmediacontainer.md b/docs/models/operations/listhubsmediacontainer.md new file mode 100644 index 0000000..44e7c5c --- /dev/null +++ b/docs/models/operations/listhubsmediacontainer.md @@ -0,0 +1,17 @@ +# ListHubsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `hub` | List[[operations.Hub](../../models/operations/hub.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listhubsrequest.md b/docs/models/operations/listhubsrequest.md new file mode 100644 index 0000000..2ef0225 --- /dev/null +++ b/docs/models/operations/listhubsrequest.md @@ -0,0 +1,20 @@ +# ListHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | The section ID for the hubs to reorder | | +| `metadata_item_id` | *Optional[int]* | :heavy_minus_sign: | Restrict hubs to ones relevant to the provided metadata item | | \ No newline at end of file diff --git a/docs/models/operations/listhubsresponse.md b/docs/models/operations/listhubsresponse.md new file mode 100644 index 0000000..646c8a3 --- /dev/null +++ b/docs/models/operations/listhubsresponse.md @@ -0,0 +1,12 @@ +# ListHubsResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.ListHubsResponseBody]](../../models/operations/listhubsresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listhubsresponsebody.md b/docs/models/operations/listhubsresponsebody.md new file mode 100644 index 0000000..f74a453 --- /dev/null +++ b/docs/models/operations/listhubsresponsebody.md @@ -0,0 +1,10 @@ +# ListHubsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.ListHubsMediaContainer]](../../models/operations/listhubsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listlineupsglobals.md b/docs/models/operations/listlineupsglobals.md new file mode 100644 index 0000000..28fe1fe --- /dev/null +++ b/docs/models/operations/listlineupsglobals.md @@ -0,0 +1,18 @@ +# ListLineupsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/listlineupsrequest.md b/docs/models/operations/listlineupsrequest.md new file mode 100644 index 0000000..60ad252 --- /dev/null +++ b/docs/models/operations/listlineupsrequest.md @@ -0,0 +1,21 @@ +# ListLineupsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `country` | *str* | :heavy_check_mark: | 3 letter country code | | +| `epg_id` | *str* | :heavy_check_mark: | The `providerIdentifier` of the provider | | +| `region` | *str* | :heavy_check_mark: | The region for the lineup | | \ No newline at end of file diff --git a/docs/models/operations/listlineupsresponse.md b/docs/models/operations/listlineupsresponse.md new file mode 100644 index 0000000..ed5db5c --- /dev/null +++ b/docs/models/operations/listlineupsresponse.md @@ -0,0 +1,12 @@ +# ListLineupsResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_lineup` | [Optional[components.MediaContainerWithLineup]](../../models/components/mediacontainerwithlineup.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listmatchesglobals.md b/docs/models/operations/listmatchesglobals.md new file mode 100644 index 0000000..03d36a4 --- /dev/null +++ b/docs/models/operations/listmatchesglobals.md @@ -0,0 +1,18 @@ +# ListMatchesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/listmatchesrequest.md b/docs/models/operations/listmatchesrequest.md new file mode 100644 index 0000000..ac834c6 --- /dev/null +++ b/docs/models/operations/listmatchesrequest.md @@ -0,0 +1,25 @@ +# ListMatchesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `parent_title` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `agent` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `year` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `manual` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/models/operations/listmatchesresponse.md b/docs/models/operations/listmatchesresponse.md new file mode 100644 index 0000000..4553ec4 --- /dev/null +++ b/docs/models/operations/listmatchesresponse.md @@ -0,0 +1,11 @@ +# ListMatchesResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/listmomentsglobals.md b/docs/models/operations/listmomentsglobals.md new file mode 100644 index 0000000..fe173ae --- /dev/null +++ b/docs/models/operations/listmomentsglobals.md @@ -0,0 +1,18 @@ +# ListMomentsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/listmomentsrequest.md b/docs/models/operations/listmomentsrequest.md new file mode 100644 index 0000000..cf878a6 --- /dev/null +++ b/docs/models/operations/listmomentsrequest.md @@ -0,0 +1,19 @@ +# ListMomentsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/models/operations/listmomentsresponse.md b/docs/models/operations/listmomentsresponse.md new file mode 100644 index 0000000..9b3ed17 --- /dev/null +++ b/docs/models/operations/listmomentsresponse.md @@ -0,0 +1,11 @@ +# ListMomentsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_artwork` | [Optional[components.MediaContainerWithArtwork]](../../models/components/mediacontainerwithartwork.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/listpersonmediaglobals.md b/docs/models/operations/listpersonmediaglobals.md new file mode 100644 index 0000000..9f5ff1d --- /dev/null +++ b/docs/models/operations/listpersonmediaglobals.md @@ -0,0 +1,18 @@ +# ListPersonMediaGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/listpersonmediarequest.md b/docs/models/operations/listpersonmediarequest.md new file mode 100644 index 0000000..bcaf734 --- /dev/null +++ b/docs/models/operations/listpersonmediarequest.md @@ -0,0 +1,19 @@ +# ListPersonMediaRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `person_id` | *str* | :heavy_check_mark: | Either the PMS tag `id` of the person or `tagKey` of the actor. Note the `tagKey` is the hex portion of the plex guid for the actor | | \ No newline at end of file diff --git a/docs/models/operations/listpersonmediaresponse.md b/docs/models/operations/listpersonmediaresponse.md new file mode 100644 index 0000000..489984f --- /dev/null +++ b/docs/models/operations/listpersonmediaresponse.md @@ -0,0 +1,11 @@ +# ListPersonMediaResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/listplaybackhistoryglobals.md b/docs/models/operations/listplaybackhistoryglobals.md new file mode 100644 index 0000000..8cc1a99 --- /dev/null +++ b/docs/models/operations/listplaybackhistoryglobals.md @@ -0,0 +1,18 @@ +# ListPlaybackHistoryGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/listplaybackhistorymediacontainer.md b/docs/models/operations/listplaybackhistorymediacontainer.md new file mode 100644 index 0000000..af5dad6 --- /dev/null +++ b/docs/models/operations/listplaybackhistorymediacontainer.md @@ -0,0 +1,17 @@ +# ListPlaybackHistoryMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `metadata` | List[[operations.ListPlaybackHistoryMetadata](../../models/operations/listplaybackhistorymetadata.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listplaybackhistorymetadata.md b/docs/models/operations/listplaybackhistorymetadata.md new file mode 100644 index 0000000..acb96e1 --- /dev/null +++ b/docs/models/operations/listplaybackhistorymetadata.md @@ -0,0 +1,18 @@ +# ListPlaybackHistoryMetadata + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | +| `account_id` | *Optional[int]* | :heavy_minus_sign: | The account id of this playback | +| `device_id` | *Optional[int]* | :heavy_minus_sign: | The device id which played the item | +| `history_key` | *Optional[str]* | :heavy_minus_sign: | The key for this individual history item | +| `key` | *Optional[str]* | :heavy_minus_sign: | The metadata key for the item played | +| `library_section_id` | *Optional[str]* | :heavy_minus_sign: | The library section id containing the item played | +| `originally_available_at` | *Optional[str]* | :heavy_minus_sign: | The originally available at of the item played | +| `rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key for the item played | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | The thumb of the item played | +| `title` | *Optional[str]* | :heavy_minus_sign: | The title of the item played | +| `type` | *Optional[str]* | :heavy_minus_sign: | The metadata type of the item played | +| `viewed_at` | *Optional[int]* | :heavy_minus_sign: | The time when the item was played | \ No newline at end of file diff --git a/docs/models/operations/listplaybackhistoryrequest.md b/docs/models/operations/listplaybackhistoryrequest.md new file mode 100644 index 0000000..3a10812 --- /dev/null +++ b/docs/models/operations/listplaybackhistoryrequest.md @@ -0,0 +1,23 @@ +# ListPlaybackHistoryRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `account_id` | *Optional[int]* | :heavy_minus_sign: | The account id to restrict view history | | +| `viewed_at` | *Optional[int]* | :heavy_minus_sign: | The time period to restrict history (typically of the form `viewedAt>=12456789`) | | +| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | The library section id to restrict view history | | +| `metadata_item_id` | *Optional[int]* | :heavy_minus_sign: | The metadata item to restrict view history (can provide the id for a show to see all of that show's view history). Note this is translated to `metadata_items.id`, `parents.id`, or `grandparents.id` internally depending on the metadata type. | | +| `sort` | List[*str*] | :heavy_minus_sign: | The field on which to sort. Multiple orderings can be specified separated by `,` and the direction specified following a `:` (`desc` or `asc`; `asc` is assumed if not provided). Note `metadataItemID` may not be used here. | viewedAt:desc,accountID | \ No newline at end of file diff --git a/docs/models/operations/listplaybackhistoryresponse.md b/docs/models/operations/listplaybackhistoryresponse.md new file mode 100644 index 0000000..9e0090e --- /dev/null +++ b/docs/models/operations/listplaybackhistoryresponse.md @@ -0,0 +1,12 @@ +# ListPlaybackHistoryResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.ListPlaybackHistoryResponseBody]](../../models/operations/listplaybackhistoryresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listplaybackhistoryresponsebody.md b/docs/models/operations/listplaybackhistoryresponsebody.md new file mode 100644 index 0000000..405c4da --- /dev/null +++ b/docs/models/operations/listplaybackhistoryresponsebody.md @@ -0,0 +1,10 @@ +# ListPlaybackHistoryResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.ListPlaybackHistoryMediaContainer]](../../models/operations/listplaybackhistorymediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listplaylistsglobals.md b/docs/models/operations/listplaylistsglobals.md new file mode 100644 index 0000000..06c3a41 --- /dev/null +++ b/docs/models/operations/listplaylistsglobals.md @@ -0,0 +1,18 @@ +# ListPlaylistsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/listplaylistsrequest.md b/docs/models/operations/listplaylistsrequest.md new file mode 100644 index 0000000..21892e0 --- /dev/null +++ b/docs/models/operations/listplaylistsrequest.md @@ -0,0 +1,20 @@ +# ListPlaylistsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `playlist_type` | [Optional[operations.PlaylistType]](../../models/operations/playlisttype.md) | :heavy_minus_sign: | Limit to a type of playlist | | +| `smart` | *Optional[bool]* | :heavy_minus_sign: | Whether this is a smart collection/playlist | | \ No newline at end of file diff --git a/docs/models/operations/listplaylistsresponse.md b/docs/models/operations/listplaylistsresponse.md new file mode 100644 index 0000000..b187f4a --- /dev/null +++ b/docs/models/operations/listplaylistsresponse.md @@ -0,0 +1,12 @@ +# ListPlaylistsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_playlist_metadata` | [Optional[components.MediaContainerWithPlaylistMetadata]](../../models/components/mediacontainerwithplaylistmetadata.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listprovidersmediacontainer.md b/docs/models/operations/listprovidersmediacontainer.md new file mode 100644 index 0000000..c571644 --- /dev/null +++ b/docs/models/operations/listprovidersmediacontainer.md @@ -0,0 +1,68 @@ +# ListProvidersMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | A unique identifier for the provider, e.g. `com.plexapp.plugins.library`. | | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| | +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| | +| `allow_camera_upload` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `allow_channel_access` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `allow_media_deletion` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `allow_sharing` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `allow_tuners` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `background_processing` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `certificate` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `companion_proxy` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `country_code` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `diagnostics` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `event_stream` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `friendly_name` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `hub_search` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `item_clusters` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `livetv` | *Optional[int]* | :heavy_minus_sign: | N/A | 7 | +| `machine_identifier` | *Optional[Any]* | :heavy_minus_sign: | N/A | 0123456789abcdef0123456789abcdef012345678 | +| `media_providers` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `multiuser` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `music_analysis` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | +| `my_plex` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `my_plex_mapping_state` | *Optional[Any]* | :heavy_minus_sign: | N/A | mapped | +| `my_plex_signin_state` | *Optional[Any]* | :heavy_minus_sign: | N/A | ok | +| `my_plex_subscription` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `my_plex_username` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `offline_transcode` | *Optional[Any]* | :heavy_minus_sign: | N/A | 1 | +| `owner_features` | *Optional[str]* | :heavy_minus_sign: | A comma-separated list of features which are enabled for the server owner | | +| `platform` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `plugin_host` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `push_notifications` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `read_only_libraries` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `streaming_brain_abr_version` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `streaming_brain_version` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_active_video_sessions` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `transcoder_audio` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_lyrics` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_photo` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_subtitles` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_video` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_video_bitrates` | *Optional[Any]* | :heavy_minus_sign: | The suggested video quality bitrates to present to the user | | +| `transcoder_video_qualities` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `transcoder_video_resolutions` | *Optional[Any]* | :heavy_minus_sign: | The suggested video resolutions to the above quality bitrates | | +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `updater` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `version` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `voice_search` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `feature` | List[[operations.Feature](../../models/operations/feature.md)] | :heavy_minus_sign: | N/A | | +| `protocols` | *Optional[str]* | :heavy_minus_sign: | A comma-separated list of default protocols for the provider, which can be:
- `stream`: The provider allows streaming media directly from the provider (e.g. for Vimeo). - `download`: The provider allows downloading media for offline storage, sync, etc. (e.g. Podcasts). - `livetv`: The provider provides live content which is only available on a schedule basis. | | +| `title` | *Optional[str]* | :heavy_minus_sign: | The title of the provider. | | +| `types` | *Optional[str]* | :heavy_minus_sign: | This attribute contains a comma-separated list of the media types exposed by the provider (e.g. `video, audio`). | | \ No newline at end of file diff --git a/docs/models/operations/listprovidersresponse.md b/docs/models/operations/listprovidersresponse.md new file mode 100644 index 0000000..b81559e --- /dev/null +++ b/docs/models/operations/listprovidersresponse.md @@ -0,0 +1,11 @@ +# ListProvidersResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.ListProvidersResponseBody]](../../models/operations/listprovidersresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/listprovidersresponsebody.md b/docs/models/operations/listprovidersresponsebody.md new file mode 100644 index 0000000..4f4e592 --- /dev/null +++ b/docs/models/operations/listprovidersresponsebody.md @@ -0,0 +1,10 @@ +# ListProvidersResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.ListProvidersMediaContainer]](../../models/operations/listprovidersmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listsessionsmediacontainer.md b/docs/models/operations/listsessionsmediacontainer.md new file mode 100644 index 0000000..2484ec9 --- /dev/null +++ b/docs/models/operations/listsessionsmediacontainer.md @@ -0,0 +1,17 @@ +# ListSessionsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `metadata` | List[[operations.Metadata](../../models/operations/metadata.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listsessionsresponse.md b/docs/models/operations/listsessionsresponse.md new file mode 100644 index 0000000..1853aa2 --- /dev/null +++ b/docs/models/operations/listsessionsresponse.md @@ -0,0 +1,12 @@ +# ListSessionsResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.ListSessionsResponseBody]](../../models/operations/listsessionsresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listsessionsresponsebody.md b/docs/models/operations/listsessionsresponsebody.md new file mode 100644 index 0000000..0eed721 --- /dev/null +++ b/docs/models/operations/listsessionsresponsebody.md @@ -0,0 +1,10 @@ +# ListSessionsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.ListSessionsMediaContainer]](../../models/operations/listsessionsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listsimilarglobals.md b/docs/models/operations/listsimilarglobals.md new file mode 100644 index 0000000..6ceed3a --- /dev/null +++ b/docs/models/operations/listsimilarglobals.md @@ -0,0 +1,18 @@ +# ListSimilarGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/listsimilarrequest.md b/docs/models/operations/listsimilarrequest.md new file mode 100644 index 0000000..832bfaf --- /dev/null +++ b/docs/models/operations/listsimilarrequest.md @@ -0,0 +1,20 @@ +# ListSimilarRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `count` | *Optional[int]* | :heavy_minus_sign: | Limit results to count items | | \ No newline at end of file diff --git a/docs/models/operations/listsimilarresponse.md b/docs/models/operations/listsimilarresponse.md new file mode 100644 index 0000000..baf8b9c --- /dev/null +++ b/docs/models/operations/listsimilarresponse.md @@ -0,0 +1,11 @@ +# ListSimilarResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/listsonicallysimilarglobals.md b/docs/models/operations/listsonicallysimilarglobals.md new file mode 100644 index 0000000..c10f601 --- /dev/null +++ b/docs/models/operations/listsonicallysimilarglobals.md @@ -0,0 +1,18 @@ +# ListSonicallySimilarGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/listsonicallysimilarrequest.md b/docs/models/operations/listsonicallysimilarrequest.md new file mode 100644 index 0000000..e5d02e8 --- /dev/null +++ b/docs/models/operations/listsonicallysimilarrequest.md @@ -0,0 +1,23 @@ +# ListSonicallySimilarRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `exclude_parent_id` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `exclude_grandparent_id` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `limit` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `max_distance` | *Optional[float]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/listsonicallysimilarresponse.md b/docs/models/operations/listsonicallysimilarresponse.md new file mode 100644 index 0000000..4cbfee2 --- /dev/null +++ b/docs/models/operations/listsonicallysimilarresponse.md @@ -0,0 +1,11 @@ +# ListSonicallySimilarResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/listtopusersglobals.md b/docs/models/operations/listtopusersglobals.md new file mode 100644 index 0000000..a00c272 --- /dev/null +++ b/docs/models/operations/listtopusersglobals.md @@ -0,0 +1,18 @@ +# ListTopUsersGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/listtopusersmediacontainer.md b/docs/models/operations/listtopusersmediacontainer.md new file mode 100644 index 0000000..4336fcd --- /dev/null +++ b/docs/models/operations/listtopusersmediacontainer.md @@ -0,0 +1,17 @@ +# ListTopUsersMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `account` | List[[operations.Account](../../models/operations/account.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/listtopusersrequest.md b/docs/models/operations/listtopusersrequest.md new file mode 100644 index 0000000..7ab4b4c --- /dev/null +++ b/docs/models/operations/listtopusersrequest.md @@ -0,0 +1,19 @@ +# ListTopUsersRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/listtopusersresponse.md b/docs/models/operations/listtopusersresponse.md new file mode 100644 index 0000000..c8f8712 --- /dev/null +++ b/docs/models/operations/listtopusersresponse.md @@ -0,0 +1,11 @@ +# ListTopUsersResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.ListTopUsersResponseBody]](../../models/operations/listtopusersresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/listtopusersresponsebody.md b/docs/models/operations/listtopusersresponsebody.md new file mode 100644 index 0000000..4048e4c --- /dev/null +++ b/docs/models/operations/listtopusersresponsebody.md @@ -0,0 +1,10 @@ +# ListTopUsersResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.ListTopUsersMediaContainer]](../../models/operations/listtopusersmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/location.md b/docs/models/operations/location.md index 36f56d5..544c06c 100644 --- a/docs/models/operations/location.md +++ b/docs/models/operations/location.md @@ -1,10 +1,12 @@ # Location -The folder path for the media item. +Network type of the client, can be used to help determine target bitrate. -## Fields +## Values -| Field | Type | Required | Description | Example | -| ------------------------- | ------------------------- | ------------------------- | ------------------------- | ------------------------- | -| `path` | *str* | :heavy_check_mark: | N/A | /TV Shows/Clarkson's Farm | \ No newline at end of file +| Name | Value | +| ---------- | ---------- | +| `LAN` | lan | +| `WAN` | wan | +| `CELLULAR` | cellular | \ No newline at end of file diff --git a/docs/models/operations/loglinerequest.md b/docs/models/operations/loglinerequest.md deleted file mode 100644 index 162b4e4..0000000 --- a/docs/models/operations/loglinerequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# LogLineRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -| `level` | [operations.Level](../../models/operations/level.md) | :heavy_check_mark: | An integer log level to write to the PMS log with.
0: Error
1: Warning
2: Info
3: Debug
4: Verbose
| | -| `message` | *str* | :heavy_check_mark: | The text of the message to write to the log. | Test log message | -| `source` | *str* | :heavy_check_mark: | a string indicating the source of the message. | Postman | \ No newline at end of file diff --git a/docs/models/operations/loglineresponse.md b/docs/models/operations/loglineresponse.md deleted file mode 100644 index 8a15ce2..0000000 --- a/docs/models/operations/loglineresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# LogLineResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/logmultilineresponse.md b/docs/models/operations/logmultilineresponse.md deleted file mode 100644 index ffe4af9..0000000 --- a/docs/models/operations/logmultilineresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# LogMultiLineResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/mailingliststatus.md b/docs/models/operations/mailingliststatus.md deleted file mode 100644 index 3f0bbb3..0000000 --- a/docs/models/operations/mailingliststatus.md +++ /dev/null @@ -1,11 +0,0 @@ -# MailingListStatus - -Your current mailing list status (active or unsubscribed) - - -## Values - -| Name | Value | -| -------------- | -------------- | -| `ACTIVE` | active | -| `UNSUBSCRIBED` | unsubscribed | \ No newline at end of file diff --git a/docs/models/operations/makedecisionglobals.md b/docs/models/operations/makedecisionglobals.md new file mode 100644 index 0000000..741f9de --- /dev/null +++ b/docs/models/operations/makedecisionglobals.md @@ -0,0 +1,18 @@ +# MakeDecisionGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/makedecisionrequest.md b/docs/models/operations/makedecisionrequest.md new file mode 100644 index 0000000..6b7144e --- /dev/null +++ b/docs/models/operations/makedecisionrequest.md @@ -0,0 +1,49 @@ +# MakeDecisionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `transcode_type` | [components.TranscodeType](../../models/components/transcodetype.md) | :heavy_check_mark: | Type of transcode media | | +| `transcode_session_id` | *Optional[str]* | :heavy_minus_sign: | Transcode session UUID | | +| `advanced_subtitles` | [Optional[components.AdvancedSubtitles]](../../models/components/advancedsubtitles.md) | :heavy_minus_sign: | Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost
| burn | +| `audio_boost` | *Optional[int]* | :heavy_minus_sign: | Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) | 50 | +| `audio_channel_count` | *Optional[int]* | :heavy_minus_sign: | Target video number of audio channels. | 5 | +| `auto_adjust_quality` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates the client supports ABR. | 1 | +| `auto_adjust_subtitle` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates if the server should adjust subtitles based on Voice Activity Data. | 1 | +| `direct_play` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates the client supports direct playing the indicated content. | 1 | +| `direct_stream` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the video of the indicated content. | 1 | +| `direct_stream_audio` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the audio of the indicated content. | 1 | +| `disable_resolution_rotation` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates if resolution should be adjusted for orientation. | 1 | +| `has_mde` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 | 1 | +| `location` | [Optional[operations.Location]](../../models/operations/location.md) | :heavy_minus_sign: | Network type of the client, can be used to help determine target bitrate. | wan | +| `media_buffer_size` | *Optional[int]* | :heavy_minus_sign: | Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. | 102400 | +| `media_index` | *Optional[int]* | :heavy_minus_sign: | Index of the media to transcode. -1 or not specified indicates let the server choose. | 0 | +| `music_bitrate` | *Optional[int]* | :heavy_minus_sign: | Target bitrate for audio only files (in kbps, used to transcode). | 5000 | +| `offset` | *Optional[float]* | :heavy_minus_sign: | Offset from the start of the media (in seconds). | 90.5 | +| `part_index` | *Optional[int]* | :heavy_minus_sign: | Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode | 0 | +| `path` | *Optional[str]* | :heavy_minus_sign: | Internal PMS path of the media to transcode. | /library/metadata/151671 | +| `peak_bitrate` | *Optional[int]* | :heavy_minus_sign: | Maximum bitrate (in kbps) to use in ABR. | 12000 | +| `photo_resolution` | *Optional[str]* | :heavy_minus_sign: | Target photo resolution. | 1080x1080 | +| `protocol` | [Optional[operations.Protocol]](../../models/operations/protocol.md) | :heavy_minus_sign: | Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
| dash | +| `seconds_per_segment` | *Optional[int]* | :heavy_minus_sign: | Number of seconds to include in each transcoded segment | 5 | +| `subtitle_size` | *Optional[int]* | :heavy_minus_sign: | Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) | 50 | +| `subtitles` | [Optional[operations.Subtitles]](../../models/operations/subtitles.md) | :heavy_minus_sign: | Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
| Burn | +| `video_bitrate` | *Optional[int]* | :heavy_minus_sign: | Target video bitrate (in kbps). | 12000 | +| `video_quality` | *Optional[int]* | :heavy_minus_sign: | Target photo quality. | 50 | +| `video_resolution` | *Optional[str]* | :heavy_minus_sign: | Target maximum video resolution. | 1080x1080 | +| `x_plex_client_profile_extra` | *Optional[str]* | :heavy_minus_sign: | See [Profile Augmentations](#section/API-Info/Profile-Augmentations) . | add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash) | +| `x_plex_client_profile_name` | *Optional[str]* | :heavy_minus_sign: | Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile. | generic | +| `x_plex_session_identifier` | *Optional[str]* | :heavy_minus_sign: | Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) | | \ No newline at end of file diff --git a/docs/models/operations/makedecisionresponse.md b/docs/models/operations/makedecisionresponse.md new file mode 100644 index 0000000..c9c448a --- /dev/null +++ b/docs/models/operations/makedecisionresponse.md @@ -0,0 +1,11 @@ +# MakeDecisionResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_decision` | [Optional[components.MediaContainerWithDecision]](../../models/components/mediacontainerwithdecision.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/marker.md b/docs/models/operations/marker.md deleted file mode 100644 index a9e8058..0000000 --- a/docs/models/operations/marker.md +++ /dev/null @@ -1,15 +0,0 @@ -# Marker - -The final status of the marker - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | -| `id` | *int* | :heavy_check_mark: | N/A | 306970 | -| `type` | *str* | :heavy_check_mark: | N/A | credits | -| `start_time_offset` | *int* | :heavy_check_mark: | N/A | 4176050 | -| `end_time_offset` | *int* | :heavy_check_mark: | N/A | 4393389 | -| `final` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `attributes` | [Optional[operations.Attributes]](../../models/operations/attributes.md) | :heavy_minus_sign: | Attributes associated with the marker. | | \ No newline at end of file diff --git a/docs/models/operations/markplayedglobals.md b/docs/models/operations/markplayedglobals.md new file mode 100644 index 0000000..fffbe69 --- /dev/null +++ b/docs/models/operations/markplayedglobals.md @@ -0,0 +1,18 @@ +# MarkPlayedGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/markplayedrequest.md b/docs/models/operations/markplayedrequest.md index 20b11eb..5d37970 100644 --- a/docs/models/operations/markplayedrequest.md +++ b/docs/models/operations/markplayedrequest.md @@ -3,6 +3,19 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | ------------------------------- | -| `key` | *float* | :heavy_check_mark: | The media key to mark as played | 59398 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `identifier` | *str* | :heavy_check_mark: | The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library` | | +| `key` | *Optional[str]* | :heavy_minus_sign: | The key of the item to rate. This is the `ratingKey` found in metadata items | | +| `uri` | *Optional[str]* | :heavy_minus_sign: | The URI of the item to mark as played. See intro for description of the URIs | | \ No newline at end of file diff --git a/docs/models/operations/markunplayedrequest.md b/docs/models/operations/markunplayedrequest.md deleted file mode 100644 index 7711a20..0000000 --- a/docs/models/operations/markunplayedrequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# MarkUnplayedRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | --------------------------------- | -| `key` | *float* | :heavy_check_mark: | The media key to mark as Unplayed | 59398 | \ No newline at end of file diff --git a/docs/models/operations/markunplayedresponse.md b/docs/models/operations/markunplayedresponse.md deleted file mode 100644 index 4f17ca8..0000000 --- a/docs/models/operations/markunplayedresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# MarkUnplayedResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/matchitemglobals.md b/docs/models/operations/matchitemglobals.md new file mode 100644 index 0000000..f1441ee --- /dev/null +++ b/docs/models/operations/matchitemglobals.md @@ -0,0 +1,18 @@ +# MatchItemGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/matchitemrequest.md b/docs/models/operations/matchitemrequest.md new file mode 100644 index 0000000..8bdfc50 --- /dev/null +++ b/docs/models/operations/matchitemrequest.md @@ -0,0 +1,22 @@ +# MatchItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `year` | *Optional[int]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/matchitemresponse.md b/docs/models/operations/matchitemresponse.md new file mode 100644 index 0000000..850ac9e --- /dev/null +++ b/docs/models/operations/matchitemresponse.md @@ -0,0 +1,10 @@ +# MatchItemResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/media.md b/docs/models/operations/media.md deleted file mode 100644 index 532d992..0000000 --- a/docs/models/operations/media.md +++ /dev/null @@ -1,26 +0,0 @@ -# Media - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique media identifier. | 387322 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | Duration of the media in milliseconds. | 9610350 | -| `bitrate` | *Optional[int]* | :heavy_minus_sign: | Bitrate in bits per second. | 25512 | -| `width` | *Optional[int]* | :heavy_minus_sign: | Video width in pixels. | 3840 | -| `height` | *Optional[int]* | :heavy_minus_sign: | Video height in pixels. | 1602 | -| `aspect_ratio` | *Optional[float]* | :heavy_minus_sign: | Aspect ratio of the video. | 2.35 | -| `audio_channels` | *Optional[int]* | :heavy_minus_sign: | Number of audio channels. | 6 | -| `display_offset` | *Optional[int]* | :heavy_minus_sign: | N/A | 50 | -| `audio_codec` | *Optional[str]* | :heavy_minus_sign: | Audio codec used. | eac3 | -| `video_codec` | *Optional[str]* | :heavy_minus_sign: | Video codec used. | hevc | -| `video_resolution` | *Optional[str]* | :heavy_minus_sign: | Video resolution (e.g., 4k). | 4k | -| `container` | *Optional[str]* | :heavy_minus_sign: | File container type. | mkv | -| `video_frame_rate` | *Optional[str]* | :heavy_minus_sign: | Frame rate of the video. Values found include NTSC, PAL, 24p
| 24p | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | Video profile (e.g., main 10). | main 10 | -| `has_voice_activity` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether voice activity is detected. | false | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `optimized_for_streaming` | [Optional[operations.OptimizedForStreaming]](../../models/operations/optimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `part` | List[[operations.Part](../../models/operations/part.md)] | :heavy_minus_sign: | An array of parts for this media item. | | \ No newline at end of file diff --git a/docs/models/operations/mediacontainer.md b/docs/models/operations/mediacontainer.md index e473252..585461c 100644 --- a/docs/models/operations/mediacontainer.md +++ b/docs/models/operations/mediacontainer.md @@ -1,58 +1,67 @@ # MediaContainer +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `size` | *Optional[float]* | :heavy_minus_sign: | N/A | -| `allow_camera_upload` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `allow_channel_access` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `allow_media_deletion` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `allow_sharing` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `allow_tuners` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `background_processing` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `certificate` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `companion_proxy` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `country_code` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `diagnostics` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `event_stream` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `friendly_name` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `hub_search` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `item_clusters` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `livetv` | *Optional[float]* | :heavy_minus_sign: | N/A | -| `machine_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `media_providers` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `multiuser` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `music_analysis` | *Optional[float]* | :heavy_minus_sign: | N/A | -| `my_plex` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `my_plex_mapping_state` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `my_plex_signin_state` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `my_plex_subscription` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `my_plex_username` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `offline_transcode` | *Optional[float]* | :heavy_minus_sign: | N/A | -| `owner_features` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `photo_auto_tag` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `platform` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `platform_version` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `plugin_host` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `push_notifications` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `read_only_libraries` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `streaming_brain_abr_version` | *Optional[float]* | :heavy_minus_sign: | N/A | -| `streaming_brain_version` | *Optional[float]* | :heavy_minus_sign: | N/A | -| `sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `transcoder_active_video_sessions` | *Optional[float]* | :heavy_minus_sign: | N/A | -| `transcoder_audio` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `transcoder_lyrics` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `transcoder_photo` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `transcoder_subtitles` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `transcoder_video` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `transcoder_video_bitrates` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `transcoder_video_qualities` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `transcoder_video_resolutions` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `updated_at` | *Optional[float]* | :heavy_minus_sign: | N/A | -| `updater` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `version` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `voice_search` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `directory` | List[[operations.Directory](../../models/operations/directory.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| | +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| | +| `allow_camera_upload` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `allow_channel_access` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `allow_media_deletion` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `allow_sharing` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `allow_sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `allow_tuners` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `background_processing` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `certificate` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `companion_proxy` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `country_code` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `diagnostics` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `event_stream` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `friendly_name` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `hub_search` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `item_clusters` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `livetv` | *Optional[int]* | :heavy_minus_sign: | N/A | 7 | +| `machine_identifier` | *Optional[Any]* | :heavy_minus_sign: | N/A | 0123456789abcdef0123456789abcdef012345678 | +| `media_providers` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `multiuser` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `music_analysis` | *Optional[int]* | :heavy_minus_sign: | N/A | 2 | +| `my_plex` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `my_plex_mapping_state` | *Optional[Any]* | :heavy_minus_sign: | N/A | mapped | +| `my_plex_signin_state` | *Optional[Any]* | :heavy_minus_sign: | N/A | ok | +| `my_plex_subscription` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `my_plex_username` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `offline_transcode` | *Optional[Any]* | :heavy_minus_sign: | N/A | 1 | +| `owner_features` | *Optional[str]* | :heavy_minus_sign: | A comma-separated list of features which are enabled for the server owner | | +| `platform` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `plugin_host` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `push_notifications` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `read_only_libraries` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `streaming_brain_abr_version` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `streaming_brain_version` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `sync` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_active_video_sessions` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `transcoder_audio` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_lyrics` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_photo` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_subtitles` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_video` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `transcoder_video_bitrates` | *Optional[Any]* | :heavy_minus_sign: | The suggested video quality bitrates to present to the user | | +| `transcoder_video_qualities` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `transcoder_video_resolutions` | *Optional[Any]* | :heavy_minus_sign: | The suggested video resolutions to the above quality bitrates | | +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `updater` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `version` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `voice_search` | *Optional[bool]* | :heavy_minus_sign: | N/A | | +| `bandwidths` | [Optional[operations.Bandwidths]](../../models/operations/bandwidths.md) | :heavy_minus_sign: | A list of media times and bandwidths when trascoding is using with auto adjustment of bandwidth | | +| `termination_code` | *Optional[int]* | :heavy_minus_sign: | A code describing why the session was terminated by the server. | | +| `termination_text` | *Optional[str]* | :heavy_minus_sign: | A user friendly and localized text describing why the session was terminated by the server. | | \ No newline at end of file diff --git a/docs/models/operations/mediagrabber.md b/docs/models/operations/mediagrabber.md new file mode 100644 index 0000000..831751c --- /dev/null +++ b/docs/models/operations/mediagrabber.md @@ -0,0 +1,10 @@ +# MediaGrabber + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `protocol` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/mediaprovider.md b/docs/models/operations/mediaprovider.md deleted file mode 100644 index 1b94235..0000000 --- a/docs/models/operations/mediaprovider.md +++ /dev/null @@ -1,12 +0,0 @@ -# MediaProvider - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `types` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `protocols` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `feature` | List[[operations.Feature](../../models/operations/feature.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/mediareviewsvisibility.md b/docs/models/operations/mediareviewsvisibility.md deleted file mode 100644 index 0f8cb77..0000000 --- a/docs/models/operations/mediareviewsvisibility.md +++ /dev/null @@ -1,11 +0,0 @@ -# MediaReviewsVisibility - -Whether or not the account has media reviews visibility enabled - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/mediasettings.md b/docs/models/operations/mediasettings.md new file mode 100644 index 0000000..2b9ec44 --- /dev/null +++ b/docs/models/operations/mediasettings.md @@ -0,0 +1,27 @@ +# MediaSettings + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `advanced_subtitles` | [Optional[operations.AdvancedSubtitles]](../../models/operations/advancedsubtitles.md) | :heavy_minus_sign: | N/A | +| `audio_boost` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `audio_channel_count` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `auto_adjust_quality` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `auto_adjust_subtitle` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `direct_play` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `direct_stream` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `direct_stream_audio` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `disable_resolution_rotation` | *Optional[bool]* | :heavy_minus_sign: | N/A | +| `max_video_bitrate` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `music_bitrate` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `peak_bitrate` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `photo_quality` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `photo_resolution` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `seconds_per_segment` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `subtitles` | [Optional[operations.GetPlaylistGeneratorSubtitles]](../../models/operations/getplaylistgeneratorsubtitles.md) | :heavy_minus_sign: | N/A | +| `subtitle_size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `video_bitrate` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `video_quality` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `video_resolution` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/mediasubscription.md b/docs/models/operations/mediasubscription.md new file mode 100644 index 0000000..00cc253 --- /dev/null +++ b/docs/models/operations/mediasubscription.md @@ -0,0 +1,28 @@ +# MediaSubscription + +A media subscription contains a representation of metadata desired to be recorded + + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `title` | *Optional[str]* | :heavy_minus_sign: | The title of this subscription type | This Episode | +| `type` | *Optional[int]* | :heavy_minus_sign: | Metadata type number | | +| `airings_type` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `created_at` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `directory` | Dict[str, *Any*] | :heavy_minus_sign: | Media Matching Hints | | +| `duration_total` | *Optional[int]* | :heavy_minus_sign: | Only included if `includeStorage` is specified | | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `library_section_title` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `location_path` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `media_grab_operation` | List[[components.MediaGrabOperation](../../models/components/mediagraboperation.md)] | :heavy_minus_sign: | N/A | | +| `playlist` | Dict[str, *Any*] | :heavy_minus_sign: | Media Matching Hints | | +| `setting` | List[[components.Setting](../../models/components/setting.md)] | :heavy_minus_sign: | N/A | | +| `storage_total` | *Optional[int]* | :heavy_minus_sign: | Only included if `includeStorage` is specified | | +| `target_library_section_id` | *Optional[int]* | :heavy_minus_sign: | Where this subscription will record to | | +| `target_section_location_id` | *Optional[int]* | :heavy_minus_sign: | The library section location id for where the item is to be recorded | | +| `video` | Dict[str, *Any*] | :heavy_minus_sign: | Media Matching Hints | | +| `parameters` | *Optional[str]* | :heavy_minus_sign: | Parameter string for creating this subscription | | +| `selected` | *Optional[bool]* | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/mergeitemsglobals.md b/docs/models/operations/mergeitemsglobals.md new file mode 100644 index 0000000..2f9bcbb --- /dev/null +++ b/docs/models/operations/mergeitemsglobals.md @@ -0,0 +1,18 @@ +# MergeItemsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/mergeitemsrequest.md b/docs/models/operations/mergeitemsrequest.md new file mode 100644 index 0000000..650fc0e --- /dev/null +++ b/docs/models/operations/mergeitemsrequest.md @@ -0,0 +1,20 @@ +# MergeItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids_path_parameter` | *str* | :heavy_check_mark: | N/A | | +| `ids_query_parameter` | List[*str*] | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/mergeitemsresponse.md b/docs/models/operations/mergeitemsresponse.md new file mode 100644 index 0000000..9b629af --- /dev/null +++ b/docs/models/operations/mergeitemsresponse.md @@ -0,0 +1,10 @@ +# MergeItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/meta.md b/docs/models/operations/meta.md deleted file mode 100644 index ed91292..0000000 --- a/docs/models/operations/meta.md +++ /dev/null @@ -1,12 +0,0 @@ -# Meta - -The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. - - - -## Fields - -| Field | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `type` | List[[operations.GetRecentlyAddedType](../../models/operations/getrecentlyaddedtype.md)] | :heavy_minus_sign: | N/A | -| `field_type` | List[[operations.GetRecentlyAddedFieldType](../../models/operations/getrecentlyaddedfieldtype.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/metadata.md b/docs/models/operations/metadata.md index 2ad5752..2d78d3f 100644 --- a/docs/models/operations/metadata.md +++ b/docs/models/operations/metadata.md @@ -1,42 +1,85 @@ # Metadata +Items in a library are referred to as "metadata items." These metadata items are distinct from "media items" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a "media item" will have one or more "media parts" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + +Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + +Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, "leaves" refer to metadata items which has associated media (there is no media for a season nor show). A show will have "children" in the form of seasons and a season will have "children" in the form of episodes and episodes have "parent" in the form of a season which has a "parent" in the form of a show. Similarly, a show has "grandchildren" in the form of episodse and an episode has a "grandparent" in the form of a show. + + ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `art` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `guid` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `studio` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `tagline` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `added_at` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `public_pages_url` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `slug` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `user_state` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `content_rating` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `originally_available_at` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | N/A | -| `year` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `image` | List[[operations.Image](../../models/operations/image.md)] | :heavy_minus_sign: | N/A | -| `banner` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `rating` | *Optional[float]* | :heavy_minus_sign: | N/A | -| `expires_at` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `original_title` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | N/A | -| `audience_rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `rating_image` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `imdb_rating_count` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `subtype` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `theme` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `child_count` | *Optional[int]* | :heavy_minus_sign: | N/A | -| `is_continuing_series` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `skip_children` | *Optional[bool]* | :heavy_minus_sign: | N/A | -| `availability_id` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `streaming_media_id` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `playable_key` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `player` | [Optional[components.Player]](../../models/components/player.md) | :heavy_minus_sign: | Information about the player being used for playback | +| `session` | [Optional[components.Session]](../../models/components/session.md) | :heavy_minus_sign: | Information about the playback session | +| `user` | [Optional[components.User]](../../models/components/user.md) | :heavy_minus_sign: | The user playing the content | +| `title` | *Optional[Any]* | :heavy_minus_sign: | The title of the item (e.g. “300” or “The Simpsons”) | +| `type` | *Optional[Any]* | :heavy_minus_sign: | The type of the video item, such as `movie`, `episode`, or `clip`. | +| `absolute_index` | *Optional[int]* | :heavy_minus_sign: | When present, contains the disc number for a track on multi-disc albums. | +| `added_at` | *Optional[int]* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was added to the library. | +| `art` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for the background artwork for the item. | +| `audience_rating` | *Optional[float]* | :heavy_minus_sign: | Some rating systems separate reviewer ratings from audience ratings | +| `audience_rating_image` | *Optional[Any]* | :heavy_minus_sign: | A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled). | +| `autotag` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `banner` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a banner graphic for the item. | +| `chapter_source` | *Optional[Any]* | :heavy_minus_sign: | When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two). | +| `composite` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a composite image for descendent items (e.g. photo albums or playlists). | +| `content_rating` | *Optional[Any]* | :heavy_minus_sign: | If known, the content rating (e.g. MPAA) for an item. | +| `country` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `director` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `duration` | *Optional[int]* | :heavy_minus_sign: | When present, the duration for the item, in units of milliseconds. | +| `filter_` | List[[components.Filter](../../models/components/filter_.md)] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `genre` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `grandparent_art` | *Optional[str]* | :heavy_minus_sign: | The `art` of the grandparent | +| `grandparent_hero` | *Optional[str]* | :heavy_minus_sign: | The `hero` of the grandparent | +| `grandparent_key` | *Optional[str]* | :heavy_minus_sign: | The `key` of the grandparent | +| `grandparent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The `ratingKey` of the grandparent | +| `grandparent_theme` | *Optional[str]* | :heavy_minus_sign: | The `theme` of the grandparent | +| `grandparent_thumb` | *Optional[str]* | :heavy_minus_sign: | The `thumb` of the grandparent | +| `grandparent_title` | *Optional[str]* | :heavy_minus_sign: | The `title` of the grandparent | +| `guid` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `hero` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for a hero image for the item. | +| `image` | List[[components.Image](../../models/components/image.md)] | :heavy_minus_sign: | N/A | +| `index` | *Optional[int]* | :heavy_minus_sign: | When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks. | +| `key` | *Optional[Any]* | :heavy_minus_sign: | The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details. | +| `last_viewed_at` | *Optional[int]* | :heavy_minus_sign: | When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time. | +| `leaf_count` | *Optional[int]* | :heavy_minus_sign: | For shows and seasons, contains the number of total episodes. | +| `media` | List[[components.Media](../../models/components/media.md)] | :heavy_minus_sign: | N/A | +| `originally_available_at` | *Optional[Any]* | :heavy_minus_sign: | When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well. | +| `original_title` | *Optional[Any]* | :heavy_minus_sign: | When present, used to indicate an item's original title, e.g. a movie's foreign title. | +| `parent_hero` | *Optional[str]* | :heavy_minus_sign: | The `hero` of the parent | +| `parent_index` | *Optional[int]* | :heavy_minus_sign: | The `index` of the parent | +| `parent_key` | *Optional[str]* | :heavy_minus_sign: | The `key` of the parent | +| `parent_rating_key` | *Optional[str]* | :heavy_minus_sign: | The `ratingKey` of the parent | +| `parent_thumb` | *Optional[str]* | :heavy_minus_sign: | The `thumb` of the parent | +| `parent_title` | *Optional[str]* | :heavy_minus_sign: | The `title` of the parent | +| `primary_extra_key` | *Optional[Any]* | :heavy_minus_sign: | Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item. | +| `prompt` | *Optional[str]* | :heavy_minus_sign: | Prompt to give the user for this directory (such as `Search Movies`) | +| `rating` | *Optional[float]* | :heavy_minus_sign: | When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from. | +| `rating_array` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `rating_count` | *Optional[int]* | :heavy_minus_sign: | Number of ratings under this metadata | +| `rating_image` | *Optional[Any]* | :heavy_minus_sign: | When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten. | +| `rating_key` | *Optional[Any]* | :heavy_minus_sign: | This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed. | +| `role` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `search` | *Optional[bool]* | :heavy_minus_sign: | Indicates this is a search directory | +| `secondary` | *Optional[bool]* | :heavy_minus_sign: | Used by old clients to provide nested menus allowing for primative (but structured) navigation. | +| `skip_children` | *Optional[bool]* | :heavy_minus_sign: | When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc. | +| `skip_parent` | *Optional[bool]* | :heavy_minus_sign: | When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show). | +| `sort` | List[[components.Sort](../../models/components/sort.md)] | :heavy_minus_sign: | Typically only seen in metadata at a library's top level | +| `studio` | *Optional[Any]* | :heavy_minus_sign: | When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums). | +| `subtype` | *Optional[Any]* | :heavy_minus_sign: | The subtype of the video item, such as `photo` when the video item is in a photo library | +| `summary` | *Optional[Any]* | :heavy_minus_sign: | When present, the extended textual information about the item (e.g. movie plot, artist biography, album review). | +| `tagline` | *Optional[Any]* | :heavy_minus_sign: | When present, a pithy one-liner about the item (usually only seen for movies). | +| `theme` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for theme music for the item (usually only for TV shows). | +| `thumb` | *Optional[Any]* | :heavy_minus_sign: | When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail. | +| `title_sort` | *Optional[Any]* | :heavy_minus_sign: | Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”). | +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated). | +| `user_rating` | *Optional[float]* | :heavy_minus_sign: | When the user has rated an item, this contains the user rating | +| `view_count` | *Optional[int]* | :heavy_minus_sign: | When a users has completed watched or listened to an item, this attribute contains the number of consumptions. | +| `viewed_leaf_count` | *Optional[int]* | :heavy_minus_sign: | For shows and seasons, contains the number of viewed episodes. | +| `view_offset` | *Optional[int]* | :heavy_minus_sign: | When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds. | +| `writer` | List[[components.Tag](../../models/components/tag.md)] | :heavy_minus_sign: | N/A | +| `year` | *Optional[int]* | :heavy_minus_sign: | When present, the year associated with the item's release (e.g. release year for a movie). | +| `__pydantic_extra__` | Dict[str, *Any*] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/minsize.md b/docs/models/operations/minsize.md deleted file mode 100644 index 815444c..0000000 --- a/docs/models/operations/minsize.md +++ /dev/null @@ -1,11 +0,0 @@ -# MinSize - -images are always scaled proportionally. A value of '1' in minSize will make the smaller native dimension the dimension resized against. - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/modifydeviceglobals.md b/docs/models/operations/modifydeviceglobals.md new file mode 100644 index 0000000..6b49520 --- /dev/null +++ b/docs/models/operations/modifydeviceglobals.md @@ -0,0 +1,18 @@ +# ModifyDeviceGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/modifydevicemediacontainer.md b/docs/models/operations/modifydevicemediacontainer.md new file mode 100644 index 0000000..610742f --- /dev/null +++ b/docs/models/operations/modifydevicemediacontainer.md @@ -0,0 +1,18 @@ +# ModifyDeviceMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/modifydevicerequest.md b/docs/models/operations/modifydevicerequest.md new file mode 100644 index 0000000..cd16123 --- /dev/null +++ b/docs/models/operations/modifydevicerequest.md @@ -0,0 +1,20 @@ +# ModifyDeviceRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `device_id` | *int* | :heavy_check_mark: | The ID of the device. | | +| `enabled` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether to enable the device | 1 | \ No newline at end of file diff --git a/docs/models/operations/modifydeviceresponse.md b/docs/models/operations/modifydeviceresponse.md new file mode 100644 index 0000000..2bd3a57 --- /dev/null +++ b/docs/models/operations/modifydeviceresponse.md @@ -0,0 +1,12 @@ +# ModifyDeviceResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.ModifyDeviceResponseBody]](../../models/operations/modifydeviceresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/modifydeviceresponsebody.md b/docs/models/operations/modifydeviceresponsebody.md new file mode 100644 index 0000000..ea5f7f3 --- /dev/null +++ b/docs/models/operations/modifydeviceresponsebody.md @@ -0,0 +1,10 @@ +# ModifyDeviceResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.ModifyDeviceMediaContainer]](../../models/operations/modifydevicemediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/modifyplaylistgeneratorglobals.md b/docs/models/operations/modifyplaylistgeneratorglobals.md new file mode 100644 index 0000000..ec85827 --- /dev/null +++ b/docs/models/operations/modifyplaylistgeneratorglobals.md @@ -0,0 +1,18 @@ +# ModifyPlaylistGeneratorGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/modifyplaylistgeneratorqueryparamlocation.md b/docs/models/operations/modifyplaylistgeneratorqueryparamlocation.md new file mode 100644 index 0000000..aa719f5 --- /dev/null +++ b/docs/models/operations/modifyplaylistgeneratorqueryparamlocation.md @@ -0,0 +1,8 @@ +# ModifyPlaylistGeneratorQueryParamLocation + + +## Fields + +| Field | Type | Required | Description | +| ------------------ | ------------------ | ------------------ | ------------------ | +| `uri` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/modifyplaylistgeneratorrequest.md b/docs/models/operations/modifyplaylistgeneratorrequest.md new file mode 100644 index 0000000..ed1c938 --- /dev/null +++ b/docs/models/operations/modifyplaylistgeneratorrequest.md @@ -0,0 +1,21 @@ +# ModifyPlaylistGeneratorRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `playlist_id` | *int* | :heavy_check_mark: | The ID of the playlist | | +| `generator_id` | *int* | :heavy_check_mark: | The generator item ID to modify. | | +| `item` | [Optional[operations.Item]](../../models/operations/item.md) | :heavy_minus_sign: | Note: OpenAPI cannot properly render this query parameter example ([See GHI](https://github.com/OAI/OpenAPI-Specification/issues/1706)). It should be rendered as:

Item[type]=42&Item[title]=Jack-Jack Attack&Item[target]=&Item[targetTagID]=1&Item[locationID]=-1&Item[Location][uri]=library://82503060-0d68-4603-b594-8b071d54819e/item//library/metadata/146&Item[Policy][scope]=all&Item[Policy][value]=&Item[Policy][unwatched]=0
| {
"Location": {
"uri": "library://82503060-0d68-4603-b594-8b071d54819e/item/%2Flibrary%2Fmetadata%2F146"
},
"locationID": -1,
"Policy": {
"value": "",
"scope": "all",
"unwatched": 0
},
"target": "",
"targetTagID": 1,
"title": "Jack-Jack Attack",
"type": 42
} | \ No newline at end of file diff --git a/docs/models/operations/modifyplaylistgeneratorresponse.md b/docs/models/operations/modifyplaylistgeneratorresponse.md new file mode 100644 index 0000000..7a6612f --- /dev/null +++ b/docs/models/operations/modifyplaylistgeneratorresponse.md @@ -0,0 +1,11 @@ +# ModifyPlaylistGeneratorResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_playlist_metadata` | [Optional[components.MediaContainerWithPlaylistMetadata]](../../models/components/mediacontainerwithplaylistmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/movecollectionitemglobals.md b/docs/models/operations/movecollectionitemglobals.md new file mode 100644 index 0000000..9de1ed4 --- /dev/null +++ b/docs/models/operations/movecollectionitemglobals.md @@ -0,0 +1,18 @@ +# MoveCollectionItemGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/movecollectionitemrequest.md b/docs/models/operations/movecollectionitemrequest.md new file mode 100644 index 0000000..342d7fb --- /dev/null +++ b/docs/models/operations/movecollectionitemrequest.md @@ -0,0 +1,21 @@ +# MoveCollectionItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `collection_id` | *int* | :heavy_check_mark: | The collection id | | +| `item_id` | *int* | :heavy_check_mark: | The item to move | | +| `after` | *Optional[int]* | :heavy_minus_sign: | The item to move this item after. If not provided, this item will be moved to the beginning | | \ No newline at end of file diff --git a/docs/models/operations/movecollectionitemresponse.md b/docs/models/operations/movecollectionitemresponse.md new file mode 100644 index 0000000..dc525ab --- /dev/null +++ b/docs/models/operations/movecollectionitemresponse.md @@ -0,0 +1,11 @@ +# MoveCollectionItemResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/movehubglobals.md b/docs/models/operations/movehubglobals.md new file mode 100644 index 0000000..1da99ec --- /dev/null +++ b/docs/models/operations/movehubglobals.md @@ -0,0 +1,18 @@ +# MoveHubGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/movehubrequest.md b/docs/models/operations/movehubrequest.md new file mode 100644 index 0000000..7ba6bf5 --- /dev/null +++ b/docs/models/operations/movehubrequest.md @@ -0,0 +1,21 @@ +# MoveHubRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | The section ID for the hubs to reorder | | +| `identifier` | *str* | :heavy_check_mark: | The identifier of the hub to move | | +| `after` | *Optional[str]* | :heavy_minus_sign: | The identifier of the hub to order this hub after (or empty/missing to put this hub first) | | \ No newline at end of file diff --git a/docs/models/operations/movehubresponse.md b/docs/models/operations/movehubresponse.md new file mode 100644 index 0000000..551d5b5 --- /dev/null +++ b/docs/models/operations/movehubresponse.md @@ -0,0 +1,12 @@ +# MoveHubResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `get_responses_200` | [Optional[components.GetResponses200]](../../models/components/getresponses200.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/moveplaylistitemglobals.md b/docs/models/operations/moveplaylistitemglobals.md new file mode 100644 index 0000000..9eb3f59 --- /dev/null +++ b/docs/models/operations/moveplaylistitemglobals.md @@ -0,0 +1,18 @@ +# MovePlaylistItemGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/moveplaylistitemrequest.md b/docs/models/operations/moveplaylistitemrequest.md new file mode 100644 index 0000000..76873d7 --- /dev/null +++ b/docs/models/operations/moveplaylistitemrequest.md @@ -0,0 +1,21 @@ +# MovePlaylistItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `playlist_id` | *int* | :heavy_check_mark: | The ID of the playlist | | +| `playlist_item_id` | *int* | :heavy_check_mark: | The playlist item ID to move. | | +| `after` | *Optional[int]* | :heavy_minus_sign: | The playlist item ID to insert the new item after. If not provided, item is moved to beginning of playlist | | \ No newline at end of file diff --git a/docs/models/operations/moveplaylistitemresponse.md b/docs/models/operations/moveplaylistitemresponse.md new file mode 100644 index 0000000..3a9e41b --- /dev/null +++ b/docs/models/operations/moveplaylistitemresponse.md @@ -0,0 +1,11 @@ +# MovePlaylistItemResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_playlist_metadata` | [Optional[components.MediaContainerWithPlaylistMetadata]](../../models/components/mediacontainerwithplaylistmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/moveplayqueueitemglobals.md b/docs/models/operations/moveplayqueueitemglobals.md new file mode 100644 index 0000000..e299924 --- /dev/null +++ b/docs/models/operations/moveplayqueueitemglobals.md @@ -0,0 +1,18 @@ +# MovePlayQueueItemGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/moveplayqueueitemrequest.md b/docs/models/operations/moveplayqueueitemrequest.md new file mode 100644 index 0000000..ddcf523 --- /dev/null +++ b/docs/models/operations/moveplayqueueitemrequest.md @@ -0,0 +1,21 @@ +# MovePlayQueueItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `play_queue_id` | *int* | :heavy_check_mark: | The ID of the play queue. | | +| `play_queue_item_id` | *int* | :heavy_check_mark: | The play queue item ID to delete. | | +| `after` | *Optional[int]* | :heavy_minus_sign: | The play queue item ID to insert the new item after. If not present, moves to the beginning. | | \ No newline at end of file diff --git a/docs/models/operations/moveplayqueueitemresponse.md b/docs/models/operations/moveplayqueueitemresponse.md new file mode 100644 index 0000000..b9a9e8e --- /dev/null +++ b/docs/models/operations/moveplayqueueitemresponse.md @@ -0,0 +1,11 @@ +# MovePlayQueueItemResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_playlist_metadata` | [Optional[components.MediaContainerWithPlaylistMetadata]](../../models/components/mediacontainerwithplaylistmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/myplex.md b/docs/models/operations/myplex.md deleted file mode 100644 index c543eca..0000000 --- a/docs/models/operations/myplex.md +++ /dev/null @@ -1,19 +0,0 @@ -# MyPlex - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `auth_token` | *Optional[str]* | :heavy_minus_sign: | N/A | Z5v-PrNASDFpsaCi3CPK7 | -| `username` | *Optional[str]* | :heavy_minus_sign: | N/A | example.email@mail.com | -| `mapping_state` | *Optional[str]* | :heavy_minus_sign: | N/A | mapped | -| `mapping_error` | *Optional[str]* | :heavy_minus_sign: | N/A | | -| `sign_in_state` | *Optional[str]* | :heavy_minus_sign: | N/A | ok | -| `public_address` | *Optional[str]* | :heavy_minus_sign: | N/A | 140.20.68.140 | -| `public_port` | *Optional[float]* | :heavy_minus_sign: | N/A | 32400 | -| `private_address` | *Optional[str]* | :heavy_minus_sign: | N/A | 10.10.10.47 | -| `private_port` | *Optional[float]* | :heavy_minus_sign: | N/A | 32400 | -| `subscription_features` | *Optional[str]* | :heavy_minus_sign: | N/A | federated-auth,hardware_transcoding,home,hwtranscode,item_clusters,kevin-bacon,livetv,loudness,lyrics,music-analysis,music_videos,pass,photo_autotags,photos-v5,photosV6-edit,photosV6-tv-albums,premium_music_metadata,radio,server-manager,session_bandwidth_restrictions,session_kick,shared-radio,sync,trailers,tuner-sharing,type-first,unsupportedtuners,webhooks | -| `subscription_active` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `subscription_state` | *Optional[str]* | :heavy_minus_sign: | N/A | Active | \ No newline at end of file diff --git a/docs/models/operations/one.md b/docs/models/operations/one.md deleted file mode 100644 index bfb3ca2..0000000 --- a/docs/models/operations/one.md +++ /dev/null @@ -1,9 +0,0 @@ -# One - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/onlytransient.md b/docs/models/operations/onlytransient.md deleted file mode 100644 index c91d3d7..0000000 --- a/docs/models/operations/onlytransient.md +++ /dev/null @@ -1,11 +0,0 @@ -# OnlyTransient - -Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/operator.md b/docs/models/operations/operator.md deleted file mode 100644 index 3255dfe..0000000 --- a/docs/models/operations/operator.md +++ /dev/null @@ -1,9 +0,0 @@ -# Operator - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `key` | *str* | :heavy_check_mark: | N/A | = | -| `title` | *str* | :heavy_check_mark: | N/A | is | \ No newline at end of file diff --git a/docs/models/operations/optimizedatabaseglobals.md b/docs/models/operations/optimizedatabaseglobals.md new file mode 100644 index 0000000..cc85cf6 --- /dev/null +++ b/docs/models/operations/optimizedatabaseglobals.md @@ -0,0 +1,18 @@ +# OptimizeDatabaseGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/optimizedatabaserequest.md b/docs/models/operations/optimizedatabaserequest.md new file mode 100644 index 0000000..5a6e601 --- /dev/null +++ b/docs/models/operations/optimizedatabaserequest.md @@ -0,0 +1,19 @@ +# OptimizeDatabaseRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `async_` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | If set, don't wait for completion but return an activity | 1 | \ No newline at end of file diff --git a/docs/models/operations/optimizedatabaseresponse.md b/docs/models/operations/optimizedatabaseresponse.md new file mode 100644 index 0000000..bd02706 --- /dev/null +++ b/docs/models/operations/optimizedatabaseresponse.md @@ -0,0 +1,10 @@ +# OptimizeDatabaseResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/optimizedforstreaming.md b/docs/models/operations/optimizedforstreaming.md deleted file mode 100644 index 47e8ce5..0000000 --- a/docs/models/operations/optimizedforstreaming.md +++ /dev/null @@ -1,19 +0,0 @@ -# OptimizedForStreaming - -Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - -## Supported Types - -### `operations.One` - -```python -value: operations.One = /* values here */ -``` - -### `bool` - -```python -value: bool = /* values here */ -``` - diff --git a/docs/models/operations/optimizedforstreaming1.md b/docs/models/operations/optimizedforstreaming1.md deleted file mode 100644 index 7cb5085..0000000 --- a/docs/models/operations/optimizedforstreaming1.md +++ /dev/null @@ -1,9 +0,0 @@ -# OptimizedForStreaming1 - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/owned.md b/docs/models/operations/owned.md deleted file mode 100644 index c1d272a..0000000 --- a/docs/models/operations/owned.md +++ /dev/null @@ -1,11 +0,0 @@ -# Owned - -Indicates if the user owns the server. - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/params.md b/docs/models/operations/params.md new file mode 100644 index 0000000..b26379e --- /dev/null +++ b/docs/models/operations/params.md @@ -0,0 +1,12 @@ +# Params + +Subscription parameters. + - `mediaProviderID`: Required for downloads to indicate which MP the subscription will download into + - `source`: Required for downloads to indicate the source of the downloaded content. + + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/part.md b/docs/models/operations/part.md deleted file mode 100644 index 0a2a3ce..0000000 --- a/docs/models/operations/part.md +++ /dev/null @@ -1,23 +0,0 @@ -# Part - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | -| `accessible` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the part is accessible. | true | -| `exists` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the part exists. | true | -| `id` | *int* | :heavy_check_mark: | Unique part identifier. | 418385 | -| `key` | *str* | :heavy_check_mark: | Key to access this part. | /library/parts/418385/1735864239/file.mkv | -| `indexes` | *Optional[str]* | :heavy_minus_sign: | N/A | sd | -| `duration` | *Optional[int]* | :heavy_minus_sign: | Duration of the part in milliseconds. | 9610350 | -| `file` | *str* | :heavy_check_mark: | File path for the part. | /mnt/Movies_1/W/Wicked (2024).mkv | -| `size` | *int* | :heavy_check_mark: | File size in bytes. | 30649952104 | -| `packet_length` | *Optional[int]* | :heavy_minus_sign: | N/A | 188 | -| `container` | *Optional[str]* | :heavy_minus_sign: | Container format of the part. | mkv | -| `video_profile` | *Optional[str]* | :heavy_minus_sign: | Video profile for the part. | main 10 | -| `audio_profile` | *Optional[str]* | :heavy_minus_sign: | The audio profile used for the media (e.g., DTS, Dolby Digital, etc.). | dts | -| `has64bit_offsets` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `optimized_for_streaming` | [Optional[operations.GetRecentlyAddedOptimizedForStreaming]](../../models/operations/getrecentlyaddedoptimizedforstreaming.md) | :heavy_minus_sign: | Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true | | -| `has_thumbnail` | [Optional[operations.HasThumbnail]](../../models/operations/hasthumbnail.md) | :heavy_minus_sign: | N/A | 1 | -| `stream` | List[[operations.Stream](../../models/operations/stream.md)] | :heavy_minus_sign: | An array of streams for this part. | | \ No newline at end of file diff --git a/docs/models/operations/pastsubscription.md b/docs/models/operations/pastsubscription.md deleted file mode 100644 index b6c71fa..0000000 --- a/docs/models/operations/pastsubscription.md +++ /dev/null @@ -1,22 +0,0 @@ -# PastSubscription - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | -| `id` | *Nullable[str]* | :heavy_check_mark: | N/A | | -| `mode` | *Nullable[str]* | :heavy_check_mark: | N/A | | -| `renews_at` | *Nullable[int]* | :heavy_check_mark: | N/A | 1556281940 | -| `ends_at` | *Nullable[int]* | :heavy_check_mark: | N/A | 1556281940 | -| `canceled` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `grace_period` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `on_hold` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `can_reactivate` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `can_upgrade` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `can_downgrade` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `can_convert` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `type` | *str* | :heavy_check_mark: | N/A | plexpass | -| `transfer` | *Nullable[str]* | :heavy_check_mark: | N/A | | -| `state` | [operations.PostUsersSignInDataState](../../models/operations/postuserssignindatastate.md) | :heavy_check_mark: | N/A | ended | -| `billing` | [operations.Billing](../../models/operations/billing.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/pathparamelement.md b/docs/models/operations/pathparamelement.md new file mode 100644 index 0000000..e7598b2 --- /dev/null +++ b/docs/models/operations/pathparamelement.md @@ -0,0 +1,13 @@ +# PathParamElement + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `THUMB` | thumb | +| `ART` | art | +| `CLEAR_LOGO` | clearLogo | +| `BANNER` | banner | +| `POSTER` | poster | +| `THEME` | theme | \ No newline at end of file diff --git a/docs/models/operations/pathparamindex.md b/docs/models/operations/pathparamindex.md new file mode 100644 index 0000000..4b53611 --- /dev/null +++ b/docs/models/operations/pathparamindex.md @@ -0,0 +1,10 @@ +# PathParamIndex + +The type of index to grab. + + +## Values + +| Name | Value | +| ----- | ----- | +| `SD` | sd | \ No newline at end of file diff --git a/docs/models/operations/pathparamtask.md b/docs/models/operations/pathparamtask.md new file mode 100644 index 0000000..6d8e80d --- /dev/null +++ b/docs/models/operations/pathparamtask.md @@ -0,0 +1,31 @@ +# PathParamTask + +The task name + + +## Values + +| Name | Value | +| -------------------------------------- | -------------------------------------- | +| `AUTOMATIC_UPDATES` | AutomaticUpdates | +| `BACKUP_DATABASE` | BackupDatabase | +| `BUTLER_TASK_GENERATE_AD_MARKERS` | ButlerTaskGenerateAdMarkers | +| `BUTLER_TASK_GENERATE_CREDITS_MARKERS` | ButlerTaskGenerateCreditsMarkers | +| `BUTLER_TASK_GENERATE_INTRO_MARKERS` | ButlerTaskGenerateIntroMarkers | +| `BUTLER_TASK_GENERATE_VOICE_ACTIVITY` | ButlerTaskGenerateVoiceActivity | +| `CLEAN_OLD_BUNDLES` | CleanOldBundles | +| `CLEAN_OLD_CACHE_FILES` | CleanOldCacheFiles | +| `DEEP_MEDIA_ANALYSIS` | DeepMediaAnalysis | +| `GARBAGE_COLLECT_BLOBS` | GarbageCollectBlobs | +| `GARBAGE_COLLECT_LIBRARY_MEDIA` | GarbageCollectLibraryMedia | +| `GENERATE_BLUR_HASHES` | GenerateBlurHashes | +| `GENERATE_CHAPTER_THUMBS` | GenerateChapterThumbs | +| `GENERATE_MEDIA_INDEX_FILES` | GenerateMediaIndexFiles | +| `LOUDNESS_ANALYSIS` | LoudnessAnalysis | +| `MUSIC_ANALYSIS` | MusicAnalysis | +| `OPTIMIZE_DATABASE` | OptimizeDatabase | +| `REFRESH_EPG_GUIDES` | RefreshEpgGuides | +| `REFRESH_LIBRARIES` | RefreshLibraries | +| `REFRESH_LOCAL_MEDIA` | RefreshLocalMedia | +| `REFRESH_PERIODIC_METADATA` | RefreshPeriodicMetadata | +| `UPGRADE_MEDIA_ANALYSIS` | UpgradeMediaAnalysis | \ No newline at end of file diff --git a/docs/models/operations/pathparamtaskname.md b/docs/models/operations/pathparamtaskname.md deleted file mode 100644 index 87cffd1..0000000 --- a/docs/models/operations/pathparamtaskname.md +++ /dev/null @@ -1,23 +0,0 @@ -# PathParamTaskName - -The name of the task to be started. - - -## Values - -| Name | Value | -| ----------------------------- | ----------------------------- | -| `BACKUP_DATABASE` | BackupDatabase | -| `BUILD_GRACENOTE_COLLECTIONS` | BuildGracenoteCollections | -| `CHECK_FOR_UPDATES` | CheckForUpdates | -| `CLEAN_OLD_BUNDLES` | CleanOldBundles | -| `CLEAN_OLD_CACHE_FILES` | CleanOldCacheFiles | -| `DEEP_MEDIA_ANALYSIS` | DeepMediaAnalysis | -| `GENERATE_AUTO_TAGS` | GenerateAutoTags | -| `GENERATE_CHAPTER_THUMBS` | GenerateChapterThumbs | -| `GENERATE_MEDIA_INDEX_FILES` | GenerateMediaIndexFiles | -| `OPTIMIZE_DATABASE` | OptimizeDatabase | -| `REFRESH_LIBRARIES` | RefreshLibraries | -| `REFRESH_LOCAL_MEDIA` | RefreshLocalMedia | -| `REFRESH_PERIODIC_METADATA` | RefreshPeriodicMetadata | -| `UPGRADE_MEDIA_ANALYSIS` | UpgradeMediaAnalysis | \ No newline at end of file diff --git a/docs/models/operations/pending.md b/docs/models/operations/pending.md deleted file mode 100644 index 9596ebe..0000000 --- a/docs/models/operations/pending.md +++ /dev/null @@ -1,11 +0,0 @@ -# Pending - -Indicates if the server is pending approval. - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/performsearchrequest.md b/docs/models/operations/performsearchrequest.md deleted file mode 100644 index 07e5f4a..0000000 --- a/docs/models/operations/performsearchrequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# PerformSearchRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `query` | *str* | :heavy_check_mark: | The query term | arnold | -| `section_id` | *Optional[float]* | :heavy_minus_sign: | This gives context to the search, and can result in re-ordering of search result hubs | | -| `limit` | *Optional[float]* | :heavy_minus_sign: | The number of items to return per hub | 5 | \ No newline at end of file diff --git a/docs/models/operations/performsearchresponse.md b/docs/models/operations/performsearchresponse.md deleted file mode 100644 index 99638be..0000000 --- a/docs/models/operations/performsearchresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# PerformSearchResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/performvoicesearchrequest.md b/docs/models/operations/performvoicesearchrequest.md deleted file mode 100644 index dd3e597..0000000 --- a/docs/models/operations/performvoicesearchrequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# PerformVoiceSearchRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `query` | *str* | :heavy_check_mark: | The query term | dead+poop | -| `section_id` | *Optional[float]* | :heavy_minus_sign: | This gives context to the search, and can result in re-ordering of search result hubs | | -| `limit` | *Optional[float]* | :heavy_minus_sign: | The number of items to return per hub | 5 | \ No newline at end of file diff --git a/docs/models/operations/performvoicesearchresponse.md b/docs/models/operations/performvoicesearchresponse.md deleted file mode 100644 index eae4055..0000000 --- a/docs/models/operations/performvoicesearchresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# PerformVoiceSearchResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/player.md b/docs/models/operations/player.md deleted file mode 100644 index 2e6b692..0000000 --- a/docs/models/operations/player.md +++ /dev/null @@ -1,22 +0,0 @@ -# Player - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `address` | *Optional[str]* | :heavy_minus_sign: | N/A | 10.10.10.171 | -| `machine_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | 3tsdzir85m2onc3qyr255aq1 | -| `model` | *Optional[str]* | :heavy_minus_sign: | N/A | standalone | -| `platform` | *Optional[str]* | :heavy_minus_sign: | N/A | windows | -| `platform_version` | *Optional[str]* | :heavy_minus_sign: | N/A | 10.0.22621 | -| `product` | *Optional[str]* | :heavy_minus_sign: | N/A | Plex for Windows | -| `profile` | *Optional[str]* | :heavy_minus_sign: | N/A | Plex Desktop | -| `remote_public_address` | *Optional[str]* | :heavy_minus_sign: | N/A | 68.248.140.20 | -| `state` | *Optional[str]* | :heavy_minus_sign: | N/A | playing | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | DESKTOP-BL80MTD | -| `version` | *Optional[str]* | :heavy_minus_sign: | N/A | 1.85.0.4071-21128b56 | -| `local` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `relayed` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `secure` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `user_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/models/operations/playlisttype.md b/docs/models/operations/playlisttype.md index 276ac5f..9b20f1f 100644 --- a/docs/models/operations/playlisttype.md +++ b/docs/models/operations/playlisttype.md @@ -1,6 +1,6 @@ # PlaylistType -limit to a type of playlist. +Limit to a type of playlist ## Values diff --git a/docs/models/operations/playqueuegenerator.md b/docs/models/operations/playqueuegenerator.md new file mode 100644 index 0000000..2b20f35 --- /dev/null +++ b/docs/models/operations/playqueuegenerator.md @@ -0,0 +1,14 @@ +# PlayQueueGenerator + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `changed_at` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `created_at` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `playlist_id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `type` | [Optional[operations.GetPlaylistGeneratorsType]](../../models/operations/getplaylistgeneratorstype.md) | :heavy_minus_sign: | The type of playlist generator.

- -1: A smart playlist generator
- 42: A optimized version generator
| +| `updated_at` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `uri` | *Optional[str]* | :heavy_minus_sign: | The URI indicating the search for this generator | \ No newline at end of file diff --git a/docs/models/operations/plexdevice.md b/docs/models/operations/plexdevice.md deleted file mode 100644 index b89399e..0000000 --- a/docs/models/operations/plexdevice.md +++ /dev/null @@ -1,31 +0,0 @@ -# PlexDevice - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `name` | *str* | :heavy_check_mark: | N/A | | -| `product` | *str* | :heavy_check_mark: | N/A | | -| `product_version` | *str* | :heavy_check_mark: | N/A | | -| `platform` | *Nullable[str]* | :heavy_check_mark: | N/A | | -| `platform_version` | *Nullable[str]* | :heavy_check_mark: | N/A | | -| `device` | *Nullable[str]* | :heavy_check_mark: | N/A | | -| `client_identifier` | *str* | :heavy_check_mark: | N/A | | -| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | N/A | 2019-06-24T11:38:02Z | -| `last_seen_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_check_mark: | N/A | 2019-06-24T11:38:02Z | -| `provides` | *str* | :heavy_check_mark: | N/A | | -| `owner_id` | *Nullable[int]* | :heavy_check_mark: | ownerId is null when the device is owned by the token used to send the request | | -| `source_title` | *Nullable[str]* | :heavy_check_mark: | N/A | | -| `public_address` | *str* | :heavy_check_mark: | N/A | | -| `access_token` | *str* | :heavy_check_mark: | N/A | | -| `owned` | *bool* | :heavy_check_mark: | N/A | | -| `home` | *bool* | :heavy_check_mark: | N/A | | -| `synced` | *bool* | :heavy_check_mark: | N/A | | -| `relay` | *bool* | :heavy_check_mark: | N/A | | -| `presence` | *bool* | :heavy_check_mark: | N/A | | -| `https_required` | *bool* | :heavy_check_mark: | N/A | | -| `public_address_matches` | *bool* | :heavy_check_mark: | N/A | | -| `dns_rebinding_protection` | *bool* | :heavy_check_mark: | N/A | | -| `nat_loopback_supported` | *bool* | :heavy_check_mark: | N/A | | -| `connections` | List[[operations.Connections](../../models/operations/connections.md)] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/policy.md b/docs/models/operations/policy.md new file mode 100644 index 0000000..71d4eae --- /dev/null +++ b/docs/models/operations/policy.md @@ -0,0 +1,10 @@ +# Policy + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `value` | *Optional[int]* | :heavy_minus_sign: | N/A | | +| `scope` | [Optional[operations.QueryParamScope]](../../models/operations/queryparamscope.md) | :heavy_minus_sign: | N/A | | +| `unwatched` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/models/operations/postmediaartsrequest.md b/docs/models/operations/postmediaartsrequest.md deleted file mode 100644 index e0c4e42..0000000 --- a/docs/models/operations/postmediaartsrequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# PostMediaArtsRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `rating_key` | *int* | :heavy_check_mark: | the id of the library item to return the posters of. | 2268 | -| `url` | *Optional[str]* | :heavy_minus_sign: | The URL of the image, if uploading a remote image | https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b | -| `request_body` | *Optional[Union[bytes, IO[bytes], io.BufferedReader]]* | :heavy_minus_sign: | The contents of the image, if uploading a local file | | \ No newline at end of file diff --git a/docs/models/operations/postmediaartsresponse.md b/docs/models/operations/postmediaartsresponse.md deleted file mode 100644 index 09b7cd1..0000000 --- a/docs/models/operations/postmediaartsresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# PostMediaArtsResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/postmediaposterrequest.md b/docs/models/operations/postmediaposterrequest.md deleted file mode 100644 index bc255bd..0000000 --- a/docs/models/operations/postmediaposterrequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# PostMediaPosterRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | -| `rating_key` | *int* | :heavy_check_mark: | the id of the library item to return the posters of. | 2268 | -| `url` | *Optional[str]* | :heavy_minus_sign: | The URL of the image, if uploading a remote image | https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b | -| `request_body` | *Optional[Union[bytes, IO[bytes], io.BufferedReader]]* | :heavy_minus_sign: | The contents of the image, if uploading a local file | | \ No newline at end of file diff --git a/docs/models/operations/postmediaposterresponse.md b/docs/models/operations/postmediaposterresponse.md deleted file mode 100644 index 577b9f0..0000000 --- a/docs/models/operations/postmediaposterresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# PostMediaPosterResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindataauthenticationresponsestatus.md b/docs/models/operations/postuserssignindataauthenticationresponsestatus.md deleted file mode 100644 index cbf43fc..0000000 --- a/docs/models/operations/postuserssignindataauthenticationresponsestatus.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataAuthenticationResponseStatus - -String representation of subscriptionActive - - -## Values - -| Name | Value | -| ---------- | ---------- | -| `INACTIVE` | Inactive | -| `ACTIVE` | Active | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindataauthenticationstatus.md b/docs/models/operations/postuserssignindataauthenticationstatus.md deleted file mode 100644 index b0c9a81..0000000 --- a/docs/models/operations/postuserssignindataauthenticationstatus.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataAuthenticationStatus - -String representation of subscriptionActive - - -## Values - -| Name | Value | -| ---------- | ---------- | -| `INACTIVE` | Inactive | -| `ACTIVE` | Active | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindataauthenticationsubscription.md b/docs/models/operations/postuserssignindataauthenticationsubscription.md deleted file mode 100644 index 17e2b2c..0000000 --- a/docs/models/operations/postuserssignindataauthenticationsubscription.md +++ /dev/null @@ -1,13 +0,0 @@ -# PostUsersSignInDataAuthenticationSubscription - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -| `features` | List[*str*] | :heavy_minus_sign: | List of features allowed on your Plex Pass subscription | | -| `active` | *Optional[bool]* | :heavy_minus_sign: | If the account's Plex Pass subscription is active | true | -| `subscribed_at` | *OptionalNullable[str]* | :heavy_minus_sign: | Date the account subscribed to Plex Pass | 2021-04-12T18:21:12Z | -| `status` | [Optional[operations.PostUsersSignInDataAuthenticationResponseStatus]](../../models/operations/postuserssignindataauthenticationresponsestatus.md) | :heavy_minus_sign: | String representation of subscriptionActive | Inactive | -| `payment_service` | *OptionalNullable[str]* | :heavy_minus_sign: | Payment service used for your Plex Pass subscription | | -| `plan` | *OptionalNullable[str]* | :heavy_minus_sign: | Name of Plex Pass subscription plan | | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindataautoselectsubtitle.md b/docs/models/operations/postuserssignindataautoselectsubtitle.md deleted file mode 100644 index f1e1685..0000000 --- a/docs/models/operations/postuserssignindataautoselectsubtitle.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataAutoSelectSubtitle - -The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled) - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindatadefaultsubtitleaccessibility.md b/docs/models/operations/postuserssignindatadefaultsubtitleaccessibility.md deleted file mode 100644 index 495e195..0000000 --- a/docs/models/operations/postuserssignindatadefaultsubtitleaccessibility.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataDefaultSubtitleAccessibility - -The subtitles for the deaf or hard-of-hearing (SDH) searches mode (0 = Prefer non-SDH subtitles, 1 = Prefer SDH subtitles, 2 = Only show SDH subtitles, 3 = Only show non-SDH subtitles) - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindatadefaultsubtitleforced.md b/docs/models/operations/postuserssignindatadefaultsubtitleforced.md deleted file mode 100644 index 5f6ec80..0000000 --- a/docs/models/operations/postuserssignindatadefaultsubtitleforced.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataDefaultSubtitleForced - -The forced subtitles searches mode (0 = Prefer non-forced subtitles, 1 = Prefer forced subtitles, 2 = Only show forced subtitles, 3 = Only show non-forced subtitles) - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindatamailingliststatus.md b/docs/models/operations/postuserssignindatamailingliststatus.md deleted file mode 100644 index 04b21d0..0000000 --- a/docs/models/operations/postuserssignindatamailingliststatus.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataMailingListStatus - -Your current mailing list status (active or unsubscribed) - - -## Values - -| Name | Value | -| -------------- | -------------- | -| `ACTIVE` | active | -| `UNSUBSCRIBED` | unsubscribed | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindatamediareviewsvisibility.md b/docs/models/operations/postuserssignindatamediareviewsvisibility.md deleted file mode 100644 index 2a139ad..0000000 --- a/docs/models/operations/postuserssignindatamediareviewsvisibility.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataMediaReviewsVisibility - -Whether or not the account has media reviews visibility enabled - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindatarequest.md b/docs/models/operations/postuserssignindatarequest.md deleted file mode 100644 index 03360d9..0000000 --- a/docs/models/operations/postuserssignindatarequest.md +++ /dev/null @@ -1,13 +0,0 @@ -# PostUsersSignInDataRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `client_id` | *str* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | -| `client_name` | *Optional[str]* | :heavy_minus_sign: | The name of the client application. (Plex Web, Plex Media Server, etc.) | Plex for Roku | -| `device_nickname` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | -| `client_version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application. | 2.4.1 | -| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client application. | Roku | -| `request_body` | [Optional[operations.PostUsersSignInDataRequestBody]](../../models/operations/postuserssignindatarequestbody.md) | :heavy_minus_sign: | Login credentials | | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindatarequestbody.md b/docs/models/operations/postuserssignindatarequestbody.md deleted file mode 100644 index f5fde8b..0000000 --- a/docs/models/operations/postuserssignindatarequestbody.md +++ /dev/null @@ -1,13 +0,0 @@ -# PostUsersSignInDataRequestBody - -Login credentials - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------- | ------------------- | ------------------- | ------------------- | ------------------- | -| `login` | *str* | :heavy_check_mark: | N/A | username@email.com | -| `password` | *str* | :heavy_check_mark: | N/A | password123 | -| `remember_me` | *Optional[bool]* | :heavy_minus_sign: | N/A | | -| `verification_code` | *Optional[str]* | :heavy_minus_sign: | N/A | 123456 | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindataresponse.md b/docs/models/operations/postuserssignindataresponse.md deleted file mode 100644 index 950ac16..0000000 --- a/docs/models/operations/postuserssignindataresponse.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | -| `user_plex_account` | [Optional[operations.PostUsersSignInDataUserPlexAccount]](../../models/operations/postuserssignindatauserplexaccount.md) | :heavy_minus_sign: | Returns the user account data with a valid auth token | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindataservices.md b/docs/models/operations/postuserssignindataservices.md deleted file mode 100644 index 9c8405f..0000000 --- a/docs/models/operations/postuserssignindataservices.md +++ /dev/null @@ -1,12 +0,0 @@ -# PostUsersSignInDataServices - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| `identifier` | *str* | :heavy_check_mark: | N/A | metadata-dev | -| `endpoint` | *str* | :heavy_check_mark: | N/A | https://epg.provider.plex.tv | -| `token` | *Nullable[str]* | :heavy_check_mark: | N/A | DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv | -| `secret` | *Nullable[str]* | :heavy_check_mark: | N/A | | -| `status` | [operations.PostUsersSignInDataStatus](../../models/operations/postuserssignindatastatus.md) | :heavy_check_mark: | N/A | online | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindatastate.md b/docs/models/operations/postuserssignindatastate.md deleted file mode 100644 index d31f6b6..0000000 --- a/docs/models/operations/postuserssignindatastate.md +++ /dev/null @@ -1,8 +0,0 @@ -# PostUsersSignInDataState - - -## Values - -| Name | Value | -| ------- | ------- | -| `ENDED` | ended | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindatastatus.md b/docs/models/operations/postuserssignindatastatus.md deleted file mode 100644 index faa7686..0000000 --- a/docs/models/operations/postuserssignindatastatus.md +++ /dev/null @@ -1,9 +0,0 @@ -# PostUsersSignInDataStatus - - -## Values - -| Name | Value | -| --------- | --------- | -| `ONLINE` | online | -| `OFFLINE` | offline | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindatasubscription.md b/docs/models/operations/postuserssignindatasubscription.md deleted file mode 100644 index 7960403..0000000 --- a/docs/models/operations/postuserssignindatasubscription.md +++ /dev/null @@ -1,15 +0,0 @@ -# PostUsersSignInDataSubscription - -If the account’s Plex Pass subscription is active - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| `features` | List[*str*] | :heavy_minus_sign: | List of features allowed on your Plex Pass subscription | | -| `active` | *Optional[bool]* | :heavy_minus_sign: | If the account's Plex Pass subscription is active | true | -| `subscribed_at` | *OptionalNullable[str]* | :heavy_minus_sign: | Date the account subscribed to Plex Pass | 2021-04-12T18:21:12Z | -| `status` | [Optional[operations.PostUsersSignInDataAuthenticationStatus]](../../models/operations/postuserssignindataauthenticationstatus.md) | :heavy_minus_sign: | String representation of subscriptionActive | Inactive | -| `payment_service` | *OptionalNullable[str]* | :heavy_minus_sign: | Payment service used for your Plex Pass subscription | | -| `plan` | *OptionalNullable[str]* | :heavy_minus_sign: | Name of Plex Pass subscription plan | | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindatauserplexaccount.md b/docs/models/operations/postuserssignindatauserplexaccount.md deleted file mode 100644 index 1afdc49..0000000 --- a/docs/models/operations/postuserssignindatauserplexaccount.md +++ /dev/null @@ -1,52 +0,0 @@ -# PostUsersSignInDataUserPlexAccount - -Returns the user account data with a valid auth token - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `ads_consent` | *Nullable[bool]* | :heavy_check_mark: | Unknown | | -| `ads_consent_reminder_at` | *Nullable[int]* | :heavy_check_mark: | N/A | 1556281940 | -| `ads_consent_set_at` | *Nullable[int]* | :heavy_check_mark: | N/A | 1556281940 | -| `anonymous` | *OptionalNullable[bool]* | :heavy_minus_sign: | Unknown | | -| `auth_token` | *str* | :heavy_check_mark: | The account token | CxoUzBTSV5hsxjTpFKaf | -| `backup_codes_created` | *Optional[bool]* | :heavy_minus_sign: | If the two-factor authentication backup codes have been created | | -| `confirmed` | *Optional[bool]* | :heavy_minus_sign: | If the account has been confirmed | | -| `country` | *str* | :heavy_check_mark: | The account country | US | -| `email` | *str* | :heavy_check_mark: | The account email address | username@email.com | -| `email_only_auth` | *Optional[bool]* | :heavy_minus_sign: | If login with email only is enabled | | -| `experimental_features` | *Optional[bool]* | :heavy_minus_sign: | If experimental features are enabled | | -| `friendly_name` | *str* | :heavy_check_mark: | Your account full name | friendlyUsername | -| `entitlements` | List[*str*] | :heavy_check_mark: | List of devices your allowed to use with this account | | -| `guest` | *Optional[bool]* | :heavy_minus_sign: | If the account is a Plex Home guest user | | -| `has_password` | *Optional[bool]* | :heavy_minus_sign: | If the account has a password | | -| `home` | *Optional[bool]* | :heavy_minus_sign: | If the account is a Plex Home user | | -| `home_admin` | *Optional[bool]* | :heavy_minus_sign: | If the account is the Plex Home admin | | -| `home_size` | *int* | :heavy_check_mark: | The number of accounts in the Plex Home | 1 | -| `id` | *int* | :heavy_check_mark: | The Plex account ID | 13692262 | -| `joined_at` | *int* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | -| `locale` | *Nullable[str]* | :heavy_check_mark: | The account locale | | -| `mailing_list_active` | *Optional[bool]* | :heavy_minus_sign: | If you are subscribed to the Plex newsletter | | -| `mailing_list_status` | [operations.PostUsersSignInDataMailingListStatus](../../models/operations/postuserssignindatamailingliststatus.md) | :heavy_check_mark: | Your current mailing list status (active or unsubscribed) | active | -| `max_home_size` | *int* | :heavy_check_mark: | The maximum number of accounts allowed in the Plex Home | 15 | -| ~~`pin`~~ | *Optional[str]* | :heavy_minus_sign: | : warning: ** DEPRECATED **: This will be removed in a future release, please migrate away from it as soon as possible.

[Might be removed] The hashed Plex Home PIN | | -| `profile` | [operations.PostUsersSignInDataUserProfile](../../models/operations/postuserssignindatauserprofile.md) | :heavy_check_mark: | N/A | | -| `protected` | *Optional[bool]* | :heavy_minus_sign: | If the account has a Plex Home PIN enabled | | -| `remember_expires_at` | *int* | :heavy_check_mark: | Unix epoch datetime in seconds | 1556281940 | -| `restricted` | *Optional[bool]* | :heavy_minus_sign: | If the account is a Plex Home managed user | | -| `roles` | List[*str*] | :heavy_minus_sign: | [Might be removed] List of account roles. Plexpass membership listed here | | -| `scrobble_types` | *str* | :heavy_check_mark: | Unknown | | -| `services` | List[[operations.PostUsersSignInDataServices](../../models/operations/postuserssignindataservices.md)] | :heavy_check_mark: | N/A | | -| `subscription` | [operations.PostUsersSignInDataSubscription](../../models/operations/postuserssignindatasubscription.md) | :heavy_check_mark: | If the account’s Plex Pass subscription is active | | -| `subscription_description` | *Nullable[str]* | :heavy_check_mark: | Description of the Plex Pass subscription | | -| `subscriptions` | List[[operations.PostUsersSignInDataAuthenticationSubscription](../../models/operations/postuserssignindataauthenticationsubscription.md)] | :heavy_minus_sign: | N/A | | -| `thumb` | *str* | :heavy_check_mark: | URL of the account thumbnail | https://plex.tv/users/a4f43c1ebfde43a5/avatar?c=8372075101 | -| `title` | *str* | :heavy_check_mark: | The title of the account (username or friendly name) | UsernameTitle | -| `two_factor_enabled` | *Optional[bool]* | :heavy_minus_sign: | If two-factor authentication is enabled | | -| `username` | *str* | :heavy_check_mark: | The account username | Username | -| `uuid` | *str* | :heavy_check_mark: | The account UUID | dae343c1f45beb4f | -| `attribution_partner` | *Nullable[str]* | :heavy_check_mark: | N/A | | -| `past_subscriptions` | List[[operations.PastSubscription](../../models/operations/pastsubscription.md)] | :heavy_check_mark: | N/A | | -| `trials` | List[[operations.Trials](../../models/operations/trials.md)] | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindatauserprofile.md b/docs/models/operations/postuserssignindatauserprofile.md deleted file mode 100644 index d9067db..0000000 --- a/docs/models/operations/postuserssignindatauserprofile.md +++ /dev/null @@ -1,15 +0,0 @@ -# PostUsersSignInDataUserProfile - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -| `auto_select_audio` | *Optional[bool]* | :heavy_minus_sign: | If the account has automatically select audio and subtitle tracks enabled | true | -| `default_audio_language` | *Nullable[str]* | :heavy_check_mark: | The preferred audio language for the account | ja | -| `default_subtitle_language` | *Nullable[str]* | :heavy_check_mark: | The preferred subtitle language for the account | en | -| `auto_select_subtitle` | [Optional[operations.PostUsersSignInDataAutoSelectSubtitle]](../../models/operations/postuserssignindataautoselectsubtitle.md) | :heavy_minus_sign: | N/A | 1 | -| `default_subtitle_accessibility` | [Optional[operations.PostUsersSignInDataDefaultSubtitleAccessibility]](../../models/operations/postuserssignindatadefaultsubtitleaccessibility.md) | :heavy_minus_sign: | N/A | 1 | -| `default_subtitle_forced` | [Optional[operations.PostUsersSignInDataDefaultSubtitleForced]](../../models/operations/postuserssignindatadefaultsubtitleforced.md) | :heavy_minus_sign: | N/A | 1 | -| `watched_indicator` | [Optional[operations.PostUsersSignInDataWatchedIndicator]](../../models/operations/postuserssignindatawatchedindicator.md) | :heavy_minus_sign: | N/A | 1 | -| `media_reviews_visibility` | [Optional[operations.PostUsersSignInDataMediaReviewsVisibility]](../../models/operations/postuserssignindatamediareviewsvisibility.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/models/operations/postuserssignindatawatchedindicator.md b/docs/models/operations/postuserssignindatawatchedindicator.md deleted file mode 100644 index 1dda53e..0000000 --- a/docs/models/operations/postuserssignindatawatchedindicator.md +++ /dev/null @@ -1,11 +0,0 @@ -# PostUsersSignInDataWatchedIndicator - -Whether or not media watched indicators are enabled (little orange dot on media) - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/prefs.md b/docs/models/operations/prefs.md new file mode 100644 index 0000000..0da5d3f --- /dev/null +++ b/docs/models/operations/prefs.md @@ -0,0 +1,7 @@ +# Prefs + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/processingstate.md b/docs/models/operations/processingstate.md new file mode 100644 index 0000000..09474fb --- /dev/null +++ b/docs/models/operations/processingstate.md @@ -0,0 +1,15 @@ +# ProcessingState + +The state of processing if this generator is part of an optimizer playlist + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `PROCESSED` | processed | +| `COMPLETED` | completed | +| `TOMBSTONED` | tombstoned | +| `DISABLED` | disabled | +| `ERROR` | error | +| `PENDING` | pending | \ No newline at end of file diff --git a/docs/models/operations/processingstatecontext.md b/docs/models/operations/processingstatecontext.md new file mode 100644 index 0000000..eac504f --- /dev/null +++ b/docs/models/operations/processingstatecontext.md @@ -0,0 +1,21 @@ +# ProcessingStateContext + +The error which could have occurred (or `good`) + + +## Values + +| Name | Value | +| ---------------------------- | ---------------------------- | +| `GOOD` | good | +| `SOURCE_FILE_UNAVAILABLE` | sourceFileUnavailable | +| `SOURCE_FILE_METADATA_ERROR` | sourceFileMetadataError | +| `CLIENT_PROFILE_ERROR` | clientProfileError | +| `IO_ERROR` | ioError | +| `TRANSCODER_ERROR` | transcoderError | +| `UNKNOWN_ERROR` | unknownError | +| `MEDIA_ANALYSIS_ERROR` | mediaAnalysisError | +| `DOWNLOAD_FAILED` | downloadFailed | +| `ACCESS_DENIED` | accessDenied | +| `CANNOT_TRANSCODE` | cannotTranscode | +| `CODEC_INSTALL_ERROR` | codecInstallError | \ No newline at end of file diff --git a/docs/models/operations/processsubscriptionsresponse.md b/docs/models/operations/processsubscriptionsresponse.md new file mode 100644 index 0000000..7682e0b --- /dev/null +++ b/docs/models/operations/processsubscriptionsresponse.md @@ -0,0 +1,11 @@ +# ProcessSubscriptionsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/producer.md b/docs/models/operations/producer.md deleted file mode 100644 index 23bbd90..0000000 --- a/docs/models/operations/producer.md +++ /dev/null @@ -1,12 +0,0 @@ -# Producer - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `id` | *int* | :heavy_check_mark: | Unique identifier for the producer. | 126522 | -| `filter_` | *str* | :heavy_check_mark: | The filter string used to query this producer. | producer=126522 | -| `tag` | *str* | :heavy_check_mark: | The name of the producer | Amelia Knapp | -| `tag_key` | *str* | :heavy_check_mark: | A 24-character hexadecimal unique key associated with the producer's tag, used for internal identification.
| 5d77683d85719b001f3a535e | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the producer. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/models/operations/protected.md b/docs/models/operations/protected.md deleted file mode 100644 index b7f1a5f..0000000 --- a/docs/models/operations/protected.md +++ /dev/null @@ -1,11 +0,0 @@ -# Protected - -Indicates whether the account is protected. - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/protocol.md b/docs/models/operations/protocol.md index fef75fb..4b85c8b 100644 --- a/docs/models/operations/protocol.md +++ b/docs/models/operations/protocol.md @@ -1,11 +1,13 @@ # Protocol -The protocol used for the connection (http, https, etc) +Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022) + ## Values -| Name | Value | -| ------- | ------- | -| `HTTP` | http | -| `HTTPS` | https | \ No newline at end of file +| Name | Value | +| ------ | ------ | +| `HTTP` | http | +| `HLS` | hls | +| `DASH` | dash | \ No newline at end of file diff --git a/docs/models/operations/provider.md b/docs/models/operations/provider.md deleted file mode 100644 index f65dd4a..0000000 --- a/docs/models/operations/provider.md +++ /dev/null @@ -1,10 +0,0 @@ -# Provider - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | /system/search | -| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | Local Network | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | mixed | \ No newline at end of file diff --git a/docs/models/operations/queryparamargs.md b/docs/models/operations/queryparamargs.md new file mode 100644 index 0000000..65f0d63 --- /dev/null +++ b/docs/models/operations/queryparamargs.md @@ -0,0 +1,7 @@ +# QueryParamArgs + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/queryparamattributes.md b/docs/models/operations/queryparamattributes.md new file mode 100644 index 0000000..a41b227 --- /dev/null +++ b/docs/models/operations/queryparamattributes.md @@ -0,0 +1,9 @@ +# QueryParamAttributes + +The attributes to assign to this marker + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/queryparamfilter.md b/docs/models/operations/queryparamfilter.md deleted file mode 100644 index 7167549..0000000 --- a/docs/models/operations/queryparamfilter.md +++ /dev/null @@ -1,11 +0,0 @@ -# QueryParamFilter - -Filters content by field and direction/equality -(Unknown if viewedAt is the only supported column) - - - -## Fields - -| Field | Type | Required | Description | -| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/queryparamforce.md b/docs/models/operations/queryparamforce.md deleted file mode 100644 index 7b25729..0000000 --- a/docs/models/operations/queryparamforce.md +++ /dev/null @@ -1,15 +0,0 @@ -# QueryParamForce - -Force overwriting of duplicate playlists. -By default, a playlist file uploaded with the same path will overwrite the existing playlist. -The `force` argument is used to disable overwriting. -If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded. - - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/queryparamincludecollections.md b/docs/models/operations/queryparamincludecollections.md deleted file mode 100644 index 7eccbdf..0000000 --- a/docs/models/operations/queryparamincludecollections.md +++ /dev/null @@ -1,9 +0,0 @@ -# QueryParamIncludeCollections - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/queryparamincludeexternalmedia.md b/docs/models/operations/queryparamincludeexternalmedia.md deleted file mode 100644 index 27aa7f1..0000000 --- a/docs/models/operations/queryparamincludeexternalmedia.md +++ /dev/null @@ -1,9 +0,0 @@ -# QueryParamIncludeExternalMedia - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/queryparamincludeguids.md b/docs/models/operations/queryparamincludeguids.md deleted file mode 100644 index 8af8dd1..0000000 --- a/docs/models/operations/queryparamincludeguids.md +++ /dev/null @@ -1,12 +0,0 @@ -# QueryParamIncludeGuids - -Adds the Guid object to the response - - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/queryparamincludemeta.md b/docs/models/operations/queryparamincludemeta.md deleted file mode 100644 index b1a6e31..0000000 --- a/docs/models/operations/queryparamincludemeta.md +++ /dev/null @@ -1,12 +0,0 @@ -# QueryParamIncludeMeta - -Adds the Meta object to the response - - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/queryparamlocation.md b/docs/models/operations/queryparamlocation.md new file mode 100644 index 0000000..eb93575 --- /dev/null +++ b/docs/models/operations/queryparamlocation.md @@ -0,0 +1,12 @@ +# QueryParamLocation + +Network type of the client, can be used to help determine target bitrate. + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `LAN` | lan | +| `WAN` | wan | +| `CELLULAR` | cellular | \ No newline at end of file diff --git a/docs/models/operations/queryparamonlytransient.md b/docs/models/operations/queryparamonlytransient.md deleted file mode 100644 index 6c2e140..0000000 --- a/docs/models/operations/queryparamonlytransient.md +++ /dev/null @@ -1,11 +0,0 @@ -# QueryParamOnlyTransient - -Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/queryparamprefs.md b/docs/models/operations/queryparamprefs.md new file mode 100644 index 0000000..cbf9b54 --- /dev/null +++ b/docs/models/operations/queryparamprefs.md @@ -0,0 +1,9 @@ +# QueryParamPrefs + +The preferences for this section + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/queryparamprotocol.md b/docs/models/operations/queryparamprotocol.md new file mode 100644 index 0000000..2920615 --- /dev/null +++ b/docs/models/operations/queryparamprotocol.md @@ -0,0 +1,13 @@ +# QueryParamProtocol + +Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022) + + + +## Values + +| Name | Value | +| ------ | ------ | +| `HTTP` | http | +| `HLS` | hls | +| `DASH` | dash | \ No newline at end of file diff --git a/docs/models/operations/queryparamscope.md b/docs/models/operations/queryparamscope.md new file mode 100644 index 0000000..10b809b --- /dev/null +++ b/docs/models/operations/queryparamscope.md @@ -0,0 +1,9 @@ +# QueryParamScope + + +## Values + +| Name | Value | +| ------- | ------- | +| `ALL` | all | +| `COUNT` | count | \ No newline at end of file diff --git a/docs/models/operations/queryparamsmart.md b/docs/models/operations/queryparamsmart.md deleted file mode 100644 index bb53a11..0000000 --- a/docs/models/operations/queryparamsmart.md +++ /dev/null @@ -1,11 +0,0 @@ -# QueryParamSmart - -type of playlists to return (default is all). - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/queryparamsubtitles.md b/docs/models/operations/queryparamsubtitles.md new file mode 100644 index 0000000..452575d --- /dev/null +++ b/docs/models/operations/queryparamsubtitles.md @@ -0,0 +1,17 @@ +# QueryParamSubtitles + +Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream + + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `AUTO` | auto | +| `BURN` | burn | +| `NONE` | none | +| `SIDECAR` | sidecar | +| `EMBEDDED` | embedded | +| `SEGMENTED` | segmented | +| `UNKNOWN` | unknown | \ No newline at end of file diff --git a/docs/models/operations/queryparamtype.md b/docs/models/operations/queryparamtype.md index 1e56b85..004deeb 100644 --- a/docs/models/operations/queryparamtype.md +++ b/docs/models/operations/queryparamtype.md @@ -1,24 +1,10 @@ # QueryParamType -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - +The value `delegation` is the only supported `type` parameter. ## Values -| Name | Value | -| ------------- | ------------- | -| `MOVIE` | 1 | -| `TV_SHOW` | 2 | -| `SEASON` | 3 | -| `EPISODE` | 4 | -| `ARTIST` | 5 | -| `ALBUM` | 6 | -| `TRACK` | 7 | -| `PHOTO_ALBUM` | 8 | -| `PHOTO` | 9 | \ No newline at end of file +| Name | Value | +| ------------ | ------------ | +| `DELEGATION` | delegation | \ No newline at end of file diff --git a/docs/models/operations/rating.md b/docs/models/operations/rating.md deleted file mode 100644 index b809cf1..0000000 --- a/docs/models/operations/rating.md +++ /dev/null @@ -1,12 +0,0 @@ -# Rating - -The type of rating, for example 'audience' or 'critic'. - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------------------- | -| `image` | *str* | :heavy_check_mark: | The URL for the rating image, for example from IMDb. | imdb://image.rating | -| `value` | *float* | :heavy_check_mark: | N/A | 5.1 | -| `type` | *str* | :heavy_check_mark: | N/A | audience | \ No newline at end of file diff --git a/docs/models/operations/ratings.md b/docs/models/operations/ratings.md deleted file mode 100644 index 459f2a9..0000000 --- a/docs/models/operations/ratings.md +++ /dev/null @@ -1,10 +0,0 @@ -# Ratings - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| `image` | *str* | :heavy_check_mark: | The image or reference for the rating. | imdb://image.rating | -| `value` | *float* | :heavy_check_mark: | The rating value. | 9 | -| `type` | *str* | :heavy_check_mark: | The type of rating (e.g., audience, critic). | audience | \ No newline at end of file diff --git a/docs/models/operations/recommendationsvisibility.md b/docs/models/operations/recommendationsvisibility.md new file mode 100644 index 0000000..ce76f3b --- /dev/null +++ b/docs/models/operations/recommendationsvisibility.md @@ -0,0 +1,18 @@ +# RecommendationsVisibility + +The visibility of this hub in recommendations: + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + + +## Values + +| Name | Value | +| -------- | -------- | +| `ALL` | all | +| `NONE` | none | +| `ADMIN` | admin | +| `SHARED` | shared | \ No newline at end of file diff --git a/docs/models/operations/refreshitemsmetadataglobals.md b/docs/models/operations/refreshitemsmetadataglobals.md new file mode 100644 index 0000000..5c961e4 --- /dev/null +++ b/docs/models/operations/refreshitemsmetadataglobals.md @@ -0,0 +1,18 @@ +# RefreshItemsMetadataGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/refreshitemsmetadatarequest.md b/docs/models/operations/refreshitemsmetadatarequest.md new file mode 100644 index 0000000..78f22b6 --- /dev/null +++ b/docs/models/operations/refreshitemsmetadatarequest.md @@ -0,0 +1,21 @@ +# RefreshItemsMetadataRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `agent` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `mark_updated` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/models/operations/refreshitemsmetadataresponse.md b/docs/models/operations/refreshitemsmetadataresponse.md new file mode 100644 index 0000000..ebb34fa --- /dev/null +++ b/docs/models/operations/refreshitemsmetadataresponse.md @@ -0,0 +1,10 @@ +# RefreshItemsMetadataResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/refreshplaylistglobals.md b/docs/models/operations/refreshplaylistglobals.md new file mode 100644 index 0000000..6790271 --- /dev/null +++ b/docs/models/operations/refreshplaylistglobals.md @@ -0,0 +1,18 @@ +# RefreshPlaylistGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/refreshplaylistrequest.md b/docs/models/operations/refreshplaylistrequest.md new file mode 100644 index 0000000..0de97dc --- /dev/null +++ b/docs/models/operations/refreshplaylistrequest.md @@ -0,0 +1,22 @@ +# RefreshPlaylistRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `playlist_id` | *int* | :heavy_check_mark: | The ID of the playlist | | +| `generator_id` | *int* | :heavy_check_mark: | The generator item ID to act on | | +| `metadata_id` | *int* | :heavy_check_mark: | The metadata item ID to act on | | +| `action` | [operations.Action](../../models/operations/action.md) | :heavy_check_mark: | The action to perform for this item on this optimizer queue | | \ No newline at end of file diff --git a/docs/models/operations/refreshplaylistresponse.md b/docs/models/operations/refreshplaylistresponse.md new file mode 100644 index 0000000..c347ba4 --- /dev/null +++ b/docs/models/operations/refreshplaylistresponse.md @@ -0,0 +1,10 @@ +# RefreshPlaylistResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/refreshprovidersresponse.md b/docs/models/operations/refreshprovidersresponse.md new file mode 100644 index 0000000..fc6d378 --- /dev/null +++ b/docs/models/operations/refreshprovidersresponse.md @@ -0,0 +1,10 @@ +# RefreshProvidersResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/refreshsectionglobals.md b/docs/models/operations/refreshsectionglobals.md new file mode 100644 index 0000000..bbded65 --- /dev/null +++ b/docs/models/operations/refreshsectionglobals.md @@ -0,0 +1,18 @@ +# RefreshSectionGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/refreshsectionrequest.md b/docs/models/operations/refreshsectionrequest.md new file mode 100644 index 0000000..feccf78 --- /dev/null +++ b/docs/models/operations/refreshsectionrequest.md @@ -0,0 +1,21 @@ +# RefreshSectionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | +| `force` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether the update of metadata and items should be performed even if modification dates indicate the items have not change | 1 | +| `path` | *Optional[str]* | :heavy_minus_sign: | Restrict refresh to the specified path | | \ No newline at end of file diff --git a/docs/models/operations/refreshsectionresponse.md b/docs/models/operations/refreshsectionresponse.md new file mode 100644 index 0000000..061dae8 --- /dev/null +++ b/docs/models/operations/refreshsectionresponse.md @@ -0,0 +1,10 @@ +# RefreshSectionResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/refreshsectionsmetadataglobals.md b/docs/models/operations/refreshsectionsmetadataglobals.md new file mode 100644 index 0000000..2d2f4d0 --- /dev/null +++ b/docs/models/operations/refreshsectionsmetadataglobals.md @@ -0,0 +1,18 @@ +# RefreshSectionsMetadataGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/refreshsectionsmetadatarequest.md b/docs/models/operations/refreshsectionsmetadatarequest.md new file mode 100644 index 0000000..bfaa781 --- /dev/null +++ b/docs/models/operations/refreshsectionsmetadatarequest.md @@ -0,0 +1,19 @@ +# RefreshSectionsMetadataRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `force` | *Optional[bool]* | :heavy_minus_sign: | Force refresh of metadata | | \ No newline at end of file diff --git a/docs/models/operations/refreshsectionsmetadataresponse.md b/docs/models/operations/refreshsectionsmetadataresponse.md new file mode 100644 index 0000000..e6c57da --- /dev/null +++ b/docs/models/operations/refreshsectionsmetadataresponse.md @@ -0,0 +1,10 @@ +# RefreshSectionsMetadataResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/release.md b/docs/models/operations/release.md index 892c81c..ea568da 100644 --- a/docs/models/operations/release.md +++ b/docs/models/operations/release.md @@ -3,11 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | https://plex.tv/updater/releases/5136 | -| `version` | *Optional[str]* | :heavy_minus_sign: | N/A | 1.40.0.7775-456fbaf97 | -| `added` | *Optional[str]* | :heavy_minus_sign: | N/A | (PLEASE NOTE) This version makes changes to the database which will make it compatible only with server versions 1.31.2 or higher (released March 14). You will not be able to use your database on Plex Media Server versions lower than this after this update. Please also be patient when updating to this version if you have a very large database and allow the upgrade process to finish.
(Collections) Items added to a collection from the item context menu will now lock the collection field on the items (#12793)
(Music) Store track genres and add filtering options (#14653)
(Music) Support ID3v2.4 null-separated tags for genres and release type (#14653)
(View History) No longer create a view history entry for items marked as played (#10888)
(Web) Updated to 4.118.0 | -| `fixed` | *Optional[str]* | :heavy_minus_sign: | N/A | (Agents) Changing a 'Other Videos' type library to the modern movie agent would fail (#14483)
(Agents) It is possible that agents are not initialised during startup on rare occasions (#14654)
(Agents) Remove the legacy OpenSubtitles agent which is no longer supported upstream (#14667)
(Collection) Server could become unresponsive when collection membership changes (#14612)
(DVR) Previously watched recordings could be deleted without being watched again (#13779)
(Libraries) When performing fix match on items from certain music libraries the language would default to Arabic (#14501)
(Library) The Content Rating not equal to None filter does not work (#14620)
(Search) Album search results could contain all the album's tracks too (#14486)
(Subtitles) In some circumstances, sidecar subtitles can show up for media when they're no longer available (#14674)
(Transcoder) HW encoding would fail on devices with no rate control (#14222)
(Transcoder) Software transcoding on Ubuntu could cause unexpected behavior (#14605) | -| `download_url` | *Optional[str]* | :heavy_minus_sign: | N/A | https://plex.tv/downloads/latest/5?channel=8&build=linux-x86_64&distro=redhat&X-Plex-Token=xxxxxxxxxxxxxxxxxxxx | -| `state` | *Optional[str]* | :heavy_minus_sign: | N/A | notify | \ No newline at end of file +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `added` | *Optional[str]* | :heavy_minus_sign: | A list of what has been added in this version | +| `download_url` | *Optional[str]* | :heavy_minus_sign: | The URL of where this update is available | +| `fixed` | *Optional[str]* | :heavy_minus_sign: | A list of what has been fixed in this version | +| `key` | *Optional[str]* | :heavy_minus_sign: | The URL key of the update | +| `state` | [Optional[operations.GetUpdatesStatusState]](../../models/operations/getupdatesstatusstate.md) | :heavy_minus_sign: | The status of this update.

- available - This release is available
- downloading - This release is downloading
- downloaded - This release has been downloaded
- installing - This release is installing
- tonight - This release will be installed tonight
- skipped - This release has been skipped
- error - This release has an error
- notify - This release is only notifying it is available (typically because it cannot be installed on this setup)
- done - This release is complete
| +| `version` | *Optional[str]* | :heavy_minus_sign: | The version available | \ No newline at end of file diff --git a/docs/models/operations/reloadguideglobals.md b/docs/models/operations/reloadguideglobals.md new file mode 100644 index 0000000..98e7f56 --- /dev/null +++ b/docs/models/operations/reloadguideglobals.md @@ -0,0 +1,18 @@ +# ReloadGuideGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/reloadguiderequest.md b/docs/models/operations/reloadguiderequest.md new file mode 100644 index 0000000..94e1570 --- /dev/null +++ b/docs/models/operations/reloadguiderequest.md @@ -0,0 +1,19 @@ +# ReloadGuideRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `dvr_id` | *int* | :heavy_check_mark: | The ID of the DVR. | | \ No newline at end of file diff --git a/docs/models/operations/reloadguideresponse.md b/docs/models/operations/reloadguideresponse.md new file mode 100644 index 0000000..4aa51aa --- /dev/null +++ b/docs/models/operations/reloadguideresponse.md @@ -0,0 +1,11 @@ +# ReloadGuideResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/removedevicefromdvrdvr.md b/docs/models/operations/removedevicefromdvrdvr.md new file mode 100644 index 0000000..118dc66 --- /dev/null +++ b/docs/models/operations/removedevicefromdvrdvr.md @@ -0,0 +1,12 @@ +# RemoveDeviceFromDVRDVR + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `device` | List[[components.Device](../../models/components/device.md)] | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `lineup` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/removedevicefromdvrdvrsmediacontainer.md b/docs/models/operations/removedevicefromdvrdvrsmediacontainer.md new file mode 100644 index 0000000..cb88dae --- /dev/null +++ b/docs/models/operations/removedevicefromdvrdvrsmediacontainer.md @@ -0,0 +1,17 @@ +# RemoveDeviceFromDVRDVRsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `status` | *Optional[int]* | :heavy_minus_sign: | A status indicator. If present and non-zero, indicates an error | \ No newline at end of file diff --git a/docs/models/operations/removedevicefromdvrglobals.md b/docs/models/operations/removedevicefromdvrglobals.md new file mode 100644 index 0000000..7426672 --- /dev/null +++ b/docs/models/operations/removedevicefromdvrglobals.md @@ -0,0 +1,18 @@ +# RemoveDeviceFromDVRGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/removedevicefromdvrmediacontainer.md b/docs/models/operations/removedevicefromdvrmediacontainer.md new file mode 100644 index 0000000..50a9fd1 --- /dev/null +++ b/docs/models/operations/removedevicefromdvrmediacontainer.md @@ -0,0 +1,9 @@ +# RemoveDeviceFromDVRMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.RemoveDeviceFromDVRDVRsMediaContainer]](../../models/operations/removedevicefromdvrdvrsmediacontainer.md) | :heavy_minus_sign: | N/A | +| `dvr` | List[[operations.RemoveDeviceFromDVRDVR](../../models/operations/removedevicefromdvrdvr.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/removedevicefromdvrrequest.md b/docs/models/operations/removedevicefromdvrrequest.md new file mode 100644 index 0000000..4818d1a --- /dev/null +++ b/docs/models/operations/removedevicefromdvrrequest.md @@ -0,0 +1,20 @@ +# RemoveDeviceFromDVRRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `dvr_id` | *int* | :heavy_check_mark: | The ID of the DVR. | | +| `device_id` | *int* | :heavy_check_mark: | The ID of the device to add. | | \ No newline at end of file diff --git a/docs/models/operations/removedevicefromdvrresponse.md b/docs/models/operations/removedevicefromdvrresponse.md new file mode 100644 index 0000000..ebddbf5 --- /dev/null +++ b/docs/models/operations/removedevicefromdvrresponse.md @@ -0,0 +1,12 @@ +# RemoveDeviceFromDVRResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.RemoveDeviceFromDVRResponseBody]](../../models/operations/removedevicefromdvrresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/removedevicefromdvrresponsebody.md b/docs/models/operations/removedevicefromdvrresponsebody.md new file mode 100644 index 0000000..be154e3 --- /dev/null +++ b/docs/models/operations/removedevicefromdvrresponsebody.md @@ -0,0 +1,10 @@ +# RemoveDeviceFromDVRResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.RemoveDeviceFromDVRMediaContainer]](../../models/operations/removedevicefromdvrmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/removedeviceglobals.md b/docs/models/operations/removedeviceglobals.md new file mode 100644 index 0000000..ace24a7 --- /dev/null +++ b/docs/models/operations/removedeviceglobals.md @@ -0,0 +1,18 @@ +# RemoveDeviceGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/removedevicemediacontainer.md b/docs/models/operations/removedevicemediacontainer.md new file mode 100644 index 0000000..65ac44c --- /dev/null +++ b/docs/models/operations/removedevicemediacontainer.md @@ -0,0 +1,18 @@ +# RemoveDeviceMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `message` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `status` | *Optional[int]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/removedevicerequest.md b/docs/models/operations/removedevicerequest.md new file mode 100644 index 0000000..e46fc23 --- /dev/null +++ b/docs/models/operations/removedevicerequest.md @@ -0,0 +1,19 @@ +# RemoveDeviceRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `device_id` | *int* | :heavy_check_mark: | The ID of the device. | | \ No newline at end of file diff --git a/docs/models/operations/removedeviceresponse.md b/docs/models/operations/removedeviceresponse.md new file mode 100644 index 0000000..baa0dc0 --- /dev/null +++ b/docs/models/operations/removedeviceresponse.md @@ -0,0 +1,12 @@ +# RemoveDeviceResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.RemoveDeviceResponseBody]](../../models/operations/removedeviceresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/removedeviceresponsebody.md b/docs/models/operations/removedeviceresponsebody.md new file mode 100644 index 0000000..1b5212b --- /dev/null +++ b/docs/models/operations/removedeviceresponsebody.md @@ -0,0 +1,10 @@ +# RemoveDeviceResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.RemoveDeviceMediaContainer]](../../models/operations/removedevicemediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/removedownloadqueueitemsglobals.md b/docs/models/operations/removedownloadqueueitemsglobals.md new file mode 100644 index 0000000..5a63398 --- /dev/null +++ b/docs/models/operations/removedownloadqueueitemsglobals.md @@ -0,0 +1,18 @@ +# RemoveDownloadQueueItemsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/removedownloadqueueitemsrequest.md b/docs/models/operations/removedownloadqueueitemsrequest.md new file mode 100644 index 0000000..140713d --- /dev/null +++ b/docs/models/operations/removedownloadqueueitemsrequest.md @@ -0,0 +1,20 @@ +# RemoveDownloadQueueItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `queue_id` | *int* | :heavy_check_mark: | The queue id | | +| `item_id` | List[*int*] | :heavy_check_mark: | The item id | [
32,
345,
23
] | \ No newline at end of file diff --git a/docs/models/operations/removedownloadqueueitemsresponse.md b/docs/models/operations/removedownloadqueueitemsresponse.md new file mode 100644 index 0000000..e44c156 --- /dev/null +++ b/docs/models/operations/removedownloadqueueitemsresponse.md @@ -0,0 +1,10 @@ +# RemoveDownloadQueueItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/reordersubscriptionglobals.md b/docs/models/operations/reordersubscriptionglobals.md new file mode 100644 index 0000000..2413a20 --- /dev/null +++ b/docs/models/operations/reordersubscriptionglobals.md @@ -0,0 +1,18 @@ +# ReorderSubscriptionGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/reordersubscriptionrequest.md b/docs/models/operations/reordersubscriptionrequest.md new file mode 100644 index 0000000..6d58ab7 --- /dev/null +++ b/docs/models/operations/reordersubscriptionrequest.md @@ -0,0 +1,20 @@ +# ReorderSubscriptionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `subscription_id` | *int* | :heavy_check_mark: | N/A | | +| `after` | *Optional[int]* | :heavy_minus_sign: | The subscription to move this sub after. If missing will insert at the beginning of the list | | \ No newline at end of file diff --git a/docs/models/operations/reordersubscriptionresponse.md b/docs/models/operations/reordersubscriptionresponse.md new file mode 100644 index 0000000..251c451 --- /dev/null +++ b/docs/models/operations/reordersubscriptionresponse.md @@ -0,0 +1,11 @@ +# ReorderSubscriptionResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_subscription` | [Optional[components.MediaContainerWithSubscription]](../../models/components/mediacontainerwithsubscription.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/reportglobals.md b/docs/models/operations/reportglobals.md new file mode 100644 index 0000000..41d621d --- /dev/null +++ b/docs/models/operations/reportglobals.md @@ -0,0 +1,18 @@ +# ReportGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/reportrequest.md b/docs/models/operations/reportrequest.md new file mode 100644 index 0000000..c208a29 --- /dev/null +++ b/docs/models/operations/reportrequest.md @@ -0,0 +1,33 @@ +# ReportRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `key` | *Optional[str]* | :heavy_minus_sign: | The details key for the item. | /foo | +| `rating_key` | *Optional[str]* | :heavy_minus_sign: | The rating key attribute for the item. | xyz | +| `state` | [Optional[operations.State]](../../models/operations/state.md) | :heavy_minus_sign: | The current state of the media. | playing | +| `play_queue_item_id` | *Optional[str]* | :heavy_minus_sign: | If playing media from a play queue, the play queue's ID. | 123 | +| `time` | *Optional[int]* | :heavy_minus_sign: | The current time offset of playback in ms. | 0 | +| `duration` | *Optional[int]* | :heavy_minus_sign: | The total duration of the item in ms. | 10000 | +| `continuing` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | When state is `stopped`, a flag indicating whether or not the client is going to continue playing anothe item. | 1 | +| `updated` | *Optional[int]* | :heavy_minus_sign: | Used when a sync client comes online and is syncing media timelines, holds the time at which the playback state was last updated. | 14200000 | +| `offline` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Also used by sync clients, used to indicate that a timeline is being synced from being offline, as opposed to being "live". | 1 | +| `time_to_first_frame` | *Optional[int]* | :heavy_minus_sign: | Time in seconds till first frame is displayed. Sent only on the first playing timeline request. | 1000 | +| `time_stalled` | *Optional[int]* | :heavy_minus_sign: | Time in seconds spent buffering since last request. | 1000 | +| `bandwidth` | *Optional[int]* | :heavy_minus_sign: | Bandwidth in kbps as estimated by the client. | 100 | +| `buffered_time` | *Optional[int]* | :heavy_minus_sign: | Amount of time in seconds buffered by client. Omit if computed by `bufferedSize` below. | 100 | +| `buffered_size` | *Optional[int]* | :heavy_minus_sign: | Size in kilobytes of data buffered by client. Omit if computed by `bufferedTime` above | 1024 | +| `x_plex_session_identifier` | *Optional[str]* | :heavy_minus_sign: | Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) | | \ No newline at end of file diff --git a/docs/models/operations/reportresponse.md b/docs/models/operations/reportresponse.md new file mode 100644 index 0000000..6d97dce --- /dev/null +++ b/docs/models/operations/reportresponse.md @@ -0,0 +1,11 @@ +# ReportResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.ReportResponseBody]](../../models/operations/reportresponsebody.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/reportresponsebody.md b/docs/models/operations/reportresponsebody.md new file mode 100644 index 0000000..2e77ff5 --- /dev/null +++ b/docs/models/operations/reportresponsebody.md @@ -0,0 +1,10 @@ +# ReportResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.MediaContainer]](../../models/operations/mediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/resetplayqueueglobals.md b/docs/models/operations/resetplayqueueglobals.md new file mode 100644 index 0000000..4c90b22 --- /dev/null +++ b/docs/models/operations/resetplayqueueglobals.md @@ -0,0 +1,18 @@ +# ResetPlayQueueGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/resetplayqueuerequest.md b/docs/models/operations/resetplayqueuerequest.md new file mode 100644 index 0000000..0929b85 --- /dev/null +++ b/docs/models/operations/resetplayqueuerequest.md @@ -0,0 +1,19 @@ +# ResetPlayQueueRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `play_queue_id` | *int* | :heavy_check_mark: | The ID of the play queue. | | \ No newline at end of file diff --git a/docs/models/operations/resetplayqueueresponse.md b/docs/models/operations/resetplayqueueresponse.md new file mode 100644 index 0000000..a86687b --- /dev/null +++ b/docs/models/operations/resetplayqueueresponse.md @@ -0,0 +1,11 @@ +# ResetPlayQueueResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_playlist_metadata` | [Optional[components.MediaContainerWithPlaylistMetadata]](../../models/components/mediacontainerwithplaylistmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/resetsectiondefaultsglobals.md b/docs/models/operations/resetsectiondefaultsglobals.md new file mode 100644 index 0000000..7a8025d --- /dev/null +++ b/docs/models/operations/resetsectiondefaultsglobals.md @@ -0,0 +1,18 @@ +# ResetSectionDefaultsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/resetsectiondefaultsrequest.md b/docs/models/operations/resetsectiondefaultsrequest.md new file mode 100644 index 0000000..68476e6 --- /dev/null +++ b/docs/models/operations/resetsectiondefaultsrequest.md @@ -0,0 +1,19 @@ +# ResetSectionDefaultsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | The section ID for the hubs to reorder | | \ No newline at end of file diff --git a/docs/models/operations/resetsectiondefaultsresponse.md b/docs/models/operations/resetsectiondefaultsresponse.md new file mode 100644 index 0000000..3952838 --- /dev/null +++ b/docs/models/operations/resetsectiondefaultsresponse.md @@ -0,0 +1,10 @@ +# ResetSectionDefaultsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/responsebody.md b/docs/models/operations/responsebody.md deleted file mode 100644 index 304f907..0000000 --- a/docs/models/operations/responsebody.md +++ /dev/null @@ -1,13 +0,0 @@ -# ResponseBody - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `identifier` | *str* | :heavy_check_mark: | N/A | tv.plex.sonos | -| `base_url` | *str* | :heavy_check_mark: | N/A | https://sonos.plex.tv | -| `title` | *str* | :heavy_check_mark: | N/A | Sonos | -| `link_url` | *str* | :heavy_check_mark: | N/A | https://sonos.plex.tv/link | -| `provides` | *str* | :heavy_check_mark: | N/A | client,player | -| `token` | *str* | :heavy_check_mark: | The plex authtoken used to identify with | | \ No newline at end of file diff --git a/docs/models/operations/restartprocessingdownloadqueueitemsglobals.md b/docs/models/operations/restartprocessingdownloadqueueitemsglobals.md new file mode 100644 index 0000000..99e9bbe --- /dev/null +++ b/docs/models/operations/restartprocessingdownloadqueueitemsglobals.md @@ -0,0 +1,18 @@ +# RestartProcessingDownloadQueueItemsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/restartprocessingdownloadqueueitemsrequest.md b/docs/models/operations/restartprocessingdownloadqueueitemsrequest.md new file mode 100644 index 0000000..86cd2d5 --- /dev/null +++ b/docs/models/operations/restartprocessingdownloadqueueitemsrequest.md @@ -0,0 +1,20 @@ +# RestartProcessingDownloadQueueItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `queue_id` | *int* | :heavy_check_mark: | The queue id | | +| `item_id` | List[*int*] | :heavy_check_mark: | The item ids | [
32,
345,
23
] | \ No newline at end of file diff --git a/docs/models/operations/restartprocessingdownloadqueueitemsresponse.md b/docs/models/operations/restartprocessingdownloadqueueitemsresponse.md new file mode 100644 index 0000000..238b7f7 --- /dev/null +++ b/docs/models/operations/restartprocessingdownloadqueueitemsresponse.md @@ -0,0 +1,10 @@ +# RestartProcessingDownloadQueueItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/restricted.md b/docs/models/operations/restricted.md deleted file mode 100644 index 983ac01..0000000 --- a/docs/models/operations/restricted.md +++ /dev/null @@ -1,11 +0,0 @@ -# Restricted - -Indicates if the user has restricted access. - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/role.md b/docs/models/operations/role.md deleted file mode 100644 index 232ba2d..0000000 --- a/docs/models/operations/role.md +++ /dev/null @@ -1,13 +0,0 @@ -# Role - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | The unique identifier for the role.
NOTE: This is different for each Plex server and is not globally unique.
| 126522 | -| `filter_` | *str* | :heavy_check_mark: | The filter string used to query this actor. For example, it may indicate that this is an actor with a given key. | actor=126522 | -| `tag` | *str* | :heavy_check_mark: | The display tag for the actor (typically the actor's name). | Teller | -| `tag_key` | *str* | :heavy_check_mark: | A 24-character hexadecimal unique key associated with the actor's tag, used for internal identification.
NOTE: This is globally unique across all Plex Servers.
| 5d77683d85719b001f3a535e | -| `role` | *Optional[str]* | :heavy_minus_sign: | The role played by the actor in the media item. | Self - Judge | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the actor. | https://metadata-static.plex.tv/7/people/708568fd018d7aa8b1032dcf867747e8.jpg | \ No newline at end of file diff --git a/docs/models/operations/scanglobals.md b/docs/models/operations/scanglobals.md new file mode 100644 index 0000000..e06bd92 --- /dev/null +++ b/docs/models/operations/scanglobals.md @@ -0,0 +1,18 @@ +# ScanGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/scanrequest.md b/docs/models/operations/scanrequest.md new file mode 100644 index 0000000..e2454cb --- /dev/null +++ b/docs/models/operations/scanrequest.md @@ -0,0 +1,20 @@ +# ScanRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `device_id` | *int* | :heavy_check_mark: | The ID of the device. | | +| `source` | *Optional[str]* | :heavy_minus_sign: | A valid source for the scan | Cable | \ No newline at end of file diff --git a/docs/models/operations/scanresponse.md b/docs/models/operations/scanresponse.md new file mode 100644 index 0000000..7178b1c --- /dev/null +++ b/docs/models/operations/scanresponse.md @@ -0,0 +1,12 @@ +# ScanResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_device` | [Optional[components.MediaContainerWithDevice]](../../models/components/mediacontainerwithdevice.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/scope.md b/docs/models/operations/scope.md index dfa1680..417782e 100644 --- a/docs/models/operations/scope.md +++ b/docs/models/operations/scope.md @@ -1,6 +1,6 @@ # Scope -`all` - This is the only supported `scope` parameter. +The value `all` is the only supported `scope` parameter. ## Values diff --git a/docs/models/operations/searchhubsglobals.md b/docs/models/operations/searchhubsglobals.md new file mode 100644 index 0000000..fe8662c --- /dev/null +++ b/docs/models/operations/searchhubsglobals.md @@ -0,0 +1,18 @@ +# SearchHubsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/searchhubsmediacontainer.md b/docs/models/operations/searchhubsmediacontainer.md new file mode 100644 index 0000000..22e65cd --- /dev/null +++ b/docs/models/operations/searchhubsmediacontainer.md @@ -0,0 +1,17 @@ +# SearchHubsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `hub` | List[[components.Hub](../../models/components/hub.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/searchhubsrequest.md b/docs/models/operations/searchhubsrequest.md new file mode 100644 index 0000000..203f1f7 --- /dev/null +++ b/docs/models/operations/searchhubsrequest.md @@ -0,0 +1,21 @@ +# SearchHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `query` | *str* | :heavy_check_mark: | The query term | | +| `section_id` | *Optional[int]* | :heavy_minus_sign: | This gives context to the search, and can result in re-ordering of search result hubs. | 1 | +| `limit` | *Optional[int]* | :heavy_minus_sign: | The number of items to return per hub. 3 if not specified | | \ No newline at end of file diff --git a/docs/models/operations/searchhubsresponse.md b/docs/models/operations/searchhubsresponse.md new file mode 100644 index 0000000..4911800 --- /dev/null +++ b/docs/models/operations/searchhubsresponse.md @@ -0,0 +1,12 @@ +# SearchHubsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.SearchHubsResponseBody]](../../models/operations/searchhubsresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/searchhubsresponsebody.md b/docs/models/operations/searchhubsresponsebody.md new file mode 100644 index 0000000..3204de1 --- /dev/null +++ b/docs/models/operations/searchhubsresponsebody.md @@ -0,0 +1,10 @@ +# SearchHubsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.SearchHubsMediaContainer]](../../models/operations/searchhubsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/searchresult.md b/docs/models/operations/searchresult.md deleted file mode 100644 index 2113c08..0000000 --- a/docs/models/operations/searchresult.md +++ /dev/null @@ -1,10 +0,0 @@ -# SearchResult - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -| `score` | *float* | :heavy_check_mark: | The score of the search result, typically a float value between 0 and 1. | 0.92 | -| `directory` | [Optional[operations.GetSearchAllLibrariesDirectory]](../../models/operations/getsearchalllibrariesdirectory.md) | :heavy_minus_sign: | N/A | | -| `metadata` | [Optional[operations.GetSearchAllLibrariesMetadata]](../../models/operations/getsearchalllibrariesmetadata.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/searchtypes.md b/docs/models/operations/searchtypes.md deleted file mode 100644 index 32b99a0..0000000 --- a/docs/models/operations/searchtypes.md +++ /dev/null @@ -1,12 +0,0 @@ -# SearchTypes - - -## Values - -| Name | Value | -| -------------- | -------------- | -| `MOVIES` | movies | -| `MUSIC` | music | -| `OTHER_VIDEOS` | otherVideos | -| `PEOPLE` | people | -| `TV` | tv | \ No newline at end of file diff --git a/docs/models/operations/server.md b/docs/models/operations/server.md deleted file mode 100644 index cace365..0000000 --- a/docs/models/operations/server.md +++ /dev/null @@ -1,18 +0,0 @@ -# Server - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | -| `name` | *Optional[str]* | :heavy_minus_sign: | N/A | iPad | -| `host` | *Optional[str]* | :heavy_minus_sign: | N/A | 10.10.10.102 | -| `address` | *Optional[str]* | :heavy_minus_sign: | N/A | 10.10.10.102 | -| `port` | *Optional[float]* | :heavy_minus_sign: | N/A | 32500 | -| `machine_identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | A2E901F8-E016-43A7-ADFB-EF8CA8A4AC05 | -| `version` | *Optional[str]* | :heavy_minus_sign: | N/A | 8.17 | -| `protocol` | *Optional[str]* | :heavy_minus_sign: | N/A | plex | -| `product` | *Optional[str]* | :heavy_minus_sign: | N/A | Plex for iOS | -| `device_class` | *Optional[str]* | :heavy_minus_sign: | N/A | tablet | -| `protocol_version` | *Optional[float]* | :heavy_minus_sign: | N/A | 2 | -| `protocol_capabilities` | *Optional[str]* | :heavy_minus_sign: | N/A | playback,playqueues,timeline,provider-playback | \ No newline at end of file diff --git a/docs/models/operations/services.md b/docs/models/operations/services.md deleted file mode 100644 index 5e44ae1..0000000 --- a/docs/models/operations/services.md +++ /dev/null @@ -1,12 +0,0 @@ -# Services - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `identifier` | *str* | :heavy_check_mark: | N/A | metadata-dev | -| `endpoint` | *str* | :heavy_check_mark: | N/A | https://epg.provider.plex.tv | -| `token` | *Nullable[str]* | :heavy_check_mark: | N/A | DjoMtqFAGRL1uVtCyF1dKIorTbShJeqv | -| `secret` | *Nullable[str]* | :heavy_check_mark: | N/A | | -| `status` | [operations.GetTokenDetailsStatus](../../models/operations/gettokendetailsstatus.md) | :heavy_check_mark: | N/A | online | \ No newline at end of file diff --git a/docs/models/operations/session.md b/docs/models/operations/session.md deleted file mode 100644 index e93edec..0000000 --- a/docs/models/operations/session.md +++ /dev/null @@ -1,10 +0,0 @@ -# Session - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | 93h7e00ncblxncqw9lkfaoxi | -| `bandwidth` | *Optional[int]* | :heavy_minus_sign: | N/A | 1050 | -| `location` | *Optional[str]* | :heavy_minus_sign: | N/A | lan | \ No newline at end of file diff --git a/docs/models/operations/setchannelmapglobals.md b/docs/models/operations/setchannelmapglobals.md new file mode 100644 index 0000000..2a31836 --- /dev/null +++ b/docs/models/operations/setchannelmapglobals.md @@ -0,0 +1,18 @@ +# SetChannelmapGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/setchannelmaprequest.md b/docs/models/operations/setchannelmaprequest.md new file mode 100644 index 0000000..c640655 --- /dev/null +++ b/docs/models/operations/setchannelmaprequest.md @@ -0,0 +1,22 @@ +# SetChannelmapRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `device_id` | *int* | :heavy_check_mark: | The ID of the device. | | +| `channel_mapping` | [Optional[operations.ChannelMapping]](../../models/operations/channelmapping.md) | :heavy_minus_sign: | The mapping of changes, passed as a map of device channel to lineup VCN. | {
"46.3": 2,
"48.9": 4
} | +| `channel_mapping_by_key` | [Optional[operations.ChannelMappingByKey]](../../models/operations/channelmappingbykey.md) | :heavy_minus_sign: | The mapping of changes, passed as a map of device channel to lineup key. | {
"46.3": "5cc83d73af4a72001e9b16d7-5cab3c634df507001fefcad0",
"48.9": "5cc83d73af4a72001e9b16d7-5cab3c63ec158a001d32db8d"
} | +| `channels_enabled` | List[*str*] | :heavy_minus_sign: | The channels which are enabled. | 46.1,44.1,45.1 | \ No newline at end of file diff --git a/docs/models/operations/setchannelmapresponse.md b/docs/models/operations/setchannelmapresponse.md new file mode 100644 index 0000000..57f96b9 --- /dev/null +++ b/docs/models/operations/setchannelmapresponse.md @@ -0,0 +1,11 @@ +# SetChannelmapResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_device` | [Optional[components.MediaContainerWithDevice]](../../models/components/mediacontainerwithdevice.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/setdevicepreferencesglobals.md b/docs/models/operations/setdevicepreferencesglobals.md new file mode 100644 index 0000000..d1e4b48 --- /dev/null +++ b/docs/models/operations/setdevicepreferencesglobals.md @@ -0,0 +1,18 @@ +# SetDevicePreferencesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/setdevicepreferencesrequest.md b/docs/models/operations/setdevicepreferencesrequest.md new file mode 100644 index 0000000..fe87e77 --- /dev/null +++ b/docs/models/operations/setdevicepreferencesrequest.md @@ -0,0 +1,20 @@ +# SetDevicePreferencesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `device_id` | *int* | :heavy_check_mark: | The ID of the device. | | +| `name` | *Optional[str]* | :heavy_minus_sign: | The preference names and values. | | \ No newline at end of file diff --git a/docs/models/operations/setdevicepreferencesresponse.md b/docs/models/operations/setdevicepreferencesresponse.md new file mode 100644 index 0000000..b782b12 --- /dev/null +++ b/docs/models/operations/setdevicepreferencesresponse.md @@ -0,0 +1,10 @@ +# SetDevicePreferencesResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/setdvrpreferencesdvr.md b/docs/models/operations/setdvrpreferencesdvr.md new file mode 100644 index 0000000..51661e6 --- /dev/null +++ b/docs/models/operations/setdvrpreferencesdvr.md @@ -0,0 +1,12 @@ +# SetDVRPreferencesDVR + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `device` | List[[components.Device](../../models/components/device.md)] | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `language` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `lineup` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `uuid` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/setdvrpreferencesdvrsmediacontainer.md b/docs/models/operations/setdvrpreferencesdvrsmediacontainer.md new file mode 100644 index 0000000..1fa49b9 --- /dev/null +++ b/docs/models/operations/setdvrpreferencesdvrsmediacontainer.md @@ -0,0 +1,17 @@ +# SetDVRPreferencesDVRsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `status` | *Optional[int]* | :heavy_minus_sign: | A status indicator. If present and non-zero, indicates an error | \ No newline at end of file diff --git a/docs/models/operations/setdvrpreferencesglobals.md b/docs/models/operations/setdvrpreferencesglobals.md new file mode 100644 index 0000000..8511473 --- /dev/null +++ b/docs/models/operations/setdvrpreferencesglobals.md @@ -0,0 +1,18 @@ +# SetDVRPreferencesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/setdvrpreferencesmediacontainer.md b/docs/models/operations/setdvrpreferencesmediacontainer.md new file mode 100644 index 0000000..b44f3bf --- /dev/null +++ b/docs/models/operations/setdvrpreferencesmediacontainer.md @@ -0,0 +1,9 @@ +# SetDVRPreferencesMediaContainer + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.SetDVRPreferencesDVRsMediaContainer]](../../models/operations/setdvrpreferencesdvrsmediacontainer.md) | :heavy_minus_sign: | N/A | +| `dvr` | List[[operations.SetDVRPreferencesDVR](../../models/operations/setdvrpreferencesdvr.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/setdvrpreferencesrequest.md b/docs/models/operations/setdvrpreferencesrequest.md new file mode 100644 index 0000000..bbe2926 --- /dev/null +++ b/docs/models/operations/setdvrpreferencesrequest.md @@ -0,0 +1,20 @@ +# SetDVRPreferencesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `dvr_id` | *int* | :heavy_check_mark: | The ID of the DVR. | | +| `name` | *Optional[str]* | :heavy_minus_sign: | Set the `name` preference to the provided value | | \ No newline at end of file diff --git a/docs/models/operations/setdvrpreferencesresponse.md b/docs/models/operations/setdvrpreferencesresponse.md new file mode 100644 index 0000000..0763755 --- /dev/null +++ b/docs/models/operations/setdvrpreferencesresponse.md @@ -0,0 +1,12 @@ +# SetDVRPreferencesResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.SetDVRPreferencesResponseBody]](../../models/operations/setdvrpreferencesresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/setdvrpreferencesresponsebody.md b/docs/models/operations/setdvrpreferencesresponsebody.md new file mode 100644 index 0000000..9f4acdb --- /dev/null +++ b/docs/models/operations/setdvrpreferencesresponsebody.md @@ -0,0 +1,10 @@ +# SetDVRPreferencesResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `media_container` | [Optional[operations.SetDVRPreferencesMediaContainer]](../../models/operations/setdvrpreferencesmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/setitemartworkglobals.md b/docs/models/operations/setitemartworkglobals.md new file mode 100644 index 0000000..9f696c8 --- /dev/null +++ b/docs/models/operations/setitemartworkglobals.md @@ -0,0 +1,18 @@ +# SetItemArtworkGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/setitemartworkrequest.md b/docs/models/operations/setitemartworkrequest.md new file mode 100644 index 0000000..70fb71b --- /dev/null +++ b/docs/models/operations/setitemartworkrequest.md @@ -0,0 +1,21 @@ +# SetItemArtworkRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `element` | [operations.Element](../../models/operations/element.md) | :heavy_check_mark: | N/A | | +| `url` | *Optional[str]* | :heavy_minus_sign: | The url of the new asset. If not provided, the binary of the asset must be provided in the post body. | | \ No newline at end of file diff --git a/docs/models/operations/setitemartworkresponse.md b/docs/models/operations/setitemartworkresponse.md new file mode 100644 index 0000000..9420e2b --- /dev/null +++ b/docs/models/operations/setitemartworkresponse.md @@ -0,0 +1,10 @@ +# SetItemArtworkResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/setitempreferencesglobals.md b/docs/models/operations/setitempreferencesglobals.md new file mode 100644 index 0000000..3cbae2d --- /dev/null +++ b/docs/models/operations/setitempreferencesglobals.md @@ -0,0 +1,18 @@ +# SetItemPreferencesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/setitempreferencesrequest.md b/docs/models/operations/setitempreferencesrequest.md new file mode 100644 index 0000000..23c926a --- /dev/null +++ b/docs/models/operations/setitempreferencesrequest.md @@ -0,0 +1,20 @@ +# SetItemPreferencesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `args` | [Optional[operations.QueryParamArgs]](../../models/operations/queryparamargs.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/setitempreferencesresponse.md b/docs/models/operations/setitempreferencesresponse.md new file mode 100644 index 0000000..f73ca61 --- /dev/null +++ b/docs/models/operations/setitempreferencesresponse.md @@ -0,0 +1,10 @@ +# SetItemPreferencesResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/setpreferencesglobals.md b/docs/models/operations/setpreferencesglobals.md new file mode 100644 index 0000000..2846992 --- /dev/null +++ b/docs/models/operations/setpreferencesglobals.md @@ -0,0 +1,18 @@ +# SetPreferencesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/setpreferencesrequest.md b/docs/models/operations/setpreferencesrequest.md new file mode 100644 index 0000000..8f96a13 --- /dev/null +++ b/docs/models/operations/setpreferencesrequest.md @@ -0,0 +1,19 @@ +# SetPreferencesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `prefs` | [operations.Prefs](../../models/operations/prefs.md) | :heavy_check_mark: | N/A | {
"FriendlyName": "My Server",
"ScheduledLibraryUpdateInterval": 3600,
"sendCrashReports": 1
} | \ No newline at end of file diff --git a/docs/models/operations/setpreferencesresponse.md b/docs/models/operations/setpreferencesresponse.md new file mode 100644 index 0000000..c5eee95 --- /dev/null +++ b/docs/models/operations/setpreferencesresponse.md @@ -0,0 +1,10 @@ +# SetPreferencesResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/setratingglobals.md b/docs/models/operations/setratingglobals.md new file mode 100644 index 0000000..ba56629 --- /dev/null +++ b/docs/models/operations/setratingglobals.md @@ -0,0 +1,18 @@ +# SetRatingGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/setratingrequest.md b/docs/models/operations/setratingrequest.md new file mode 100644 index 0000000..f509736 --- /dev/null +++ b/docs/models/operations/setratingrequest.md @@ -0,0 +1,22 @@ +# SetRatingRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `identifier` | *str* | :heavy_check_mark: | The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library` | | +| `key` | *str* | :heavy_check_mark: | The key of the item to rate. This is the `ratingKey` found in metadata items | | +| `rating` | *float* | :heavy_check_mark: | The rating to give the item. | | +| `rated_at` | *Optional[int]* | :heavy_minus_sign: | The time when the rating occurred. If not present, interpreted as now. | | \ No newline at end of file diff --git a/docs/models/operations/setratingresponse.md b/docs/models/operations/setratingresponse.md new file mode 100644 index 0000000..aa8076f --- /dev/null +++ b/docs/models/operations/setratingresponse.md @@ -0,0 +1,10 @@ +# SetRatingResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/setsectionpreferencesglobals.md b/docs/models/operations/setsectionpreferencesglobals.md new file mode 100644 index 0000000..d23f1ae --- /dev/null +++ b/docs/models/operations/setsectionpreferencesglobals.md @@ -0,0 +1,18 @@ +# SetSectionPreferencesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/setsectionpreferencesqueryparamprefs.md b/docs/models/operations/setsectionpreferencesqueryparamprefs.md new file mode 100644 index 0000000..e70d4d6 --- /dev/null +++ b/docs/models/operations/setsectionpreferencesqueryparamprefs.md @@ -0,0 +1,7 @@ +# SetSectionPreferencesQueryParamPrefs + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/setsectionpreferencesrequest.md b/docs/models/operations/setsectionpreferencesrequest.md new file mode 100644 index 0000000..2ac9770 --- /dev/null +++ b/docs/models/operations/setsectionpreferencesrequest.md @@ -0,0 +1,20 @@ +# SetSectionPreferencesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | +| `prefs` | [operations.SetSectionPreferencesQueryParamPrefs](../../models/operations/setsectionpreferencesqueryparamprefs.md) | :heavy_check_mark: | N/A | {
"enableCinemaTrailers": 1,
"hidden": 0
} | \ No newline at end of file diff --git a/docs/models/operations/setsectionpreferencesresponse.md b/docs/models/operations/setsectionpreferencesresponse.md new file mode 100644 index 0000000..0854a2a --- /dev/null +++ b/docs/models/operations/setsectionpreferencesresponse.md @@ -0,0 +1,10 @@ +# SetSectionPreferencesResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/setstreamoffsetglobals.md b/docs/models/operations/setstreamoffsetglobals.md new file mode 100644 index 0000000..9338b01 --- /dev/null +++ b/docs/models/operations/setstreamoffsetglobals.md @@ -0,0 +1,18 @@ +# SetStreamOffsetGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/setstreamoffsetrequest.md b/docs/models/operations/setstreamoffsetrequest.md new file mode 100644 index 0000000..6c099aa --- /dev/null +++ b/docs/models/operations/setstreamoffsetrequest.md @@ -0,0 +1,21 @@ +# SetStreamOffsetRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `stream_id` | *int* | :heavy_check_mark: | The id of the stream | | +| `ext` | *str* | :heavy_check_mark: | This is not a part of this endpoint but documented here to satisfy OpenAPI | | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offest in ms | | \ No newline at end of file diff --git a/docs/models/operations/setstreamoffsetresponse.md b/docs/models/operations/setstreamoffsetresponse.md new file mode 100644 index 0000000..34775cd --- /dev/null +++ b/docs/models/operations/setstreamoffsetresponse.md @@ -0,0 +1,10 @@ +# SetStreamOffsetResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/setstreamselectionglobals.md b/docs/models/operations/setstreamselectionglobals.md new file mode 100644 index 0000000..0b29fe7 --- /dev/null +++ b/docs/models/operations/setstreamselectionglobals.md @@ -0,0 +1,18 @@ +# SetStreamSelectionGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/setstreamselectionrequest.md b/docs/models/operations/setstreamselectionrequest.md new file mode 100644 index 0000000..cc717fa --- /dev/null +++ b/docs/models/operations/setstreamselectionrequest.md @@ -0,0 +1,22 @@ +# SetStreamSelectionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `part_id` | *int* | :heavy_check_mark: | The id of the part to select streams on | | +| `audio_stream_id` | *Optional[int]* | :heavy_minus_sign: | The id of the audio stream to select in this part | | +| `subtitle_stream_id` | *Optional[int]* | :heavy_minus_sign: | The id of the subtitle stream to select in this part. Specify 0 to select no subtitle | | +| `all_parts` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Perform the same for all parts of this media selecting similar streams in each | 1 | \ No newline at end of file diff --git a/docs/models/operations/setstreamselectionresponse.md b/docs/models/operations/setstreamselectionresponse.md new file mode 100644 index 0000000..974d2c1 --- /dev/null +++ b/docs/models/operations/setstreamselectionresponse.md @@ -0,0 +1,10 @@ +# SetStreamSelectionResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/setting.md b/docs/models/operations/setting.md deleted file mode 100644 index 685edb7..0000000 --- a/docs/models/operations/setting.md +++ /dev/null @@ -1,17 +0,0 @@ -# Setting - - -## Fields - -| Field | Type | Required | Description | Example | -| ----------------------- | ----------------------- | ----------------------- | ----------------------- | ----------------------- | -| `id` | *Optional[str]* | :heavy_minus_sign: | N/A | EnableDatabaseTrace | -| `label` | *Optional[str]* | :heavy_minus_sign: | N/A | | -| `summary` | *Optional[str]* | :heavy_minus_sign: | N/A | | -| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | bool | -| `default` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `value` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `hidden` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `advanced` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `group` | *Optional[str]* | :heavy_minus_sign: | N/A | | -| `enum_values` | *Optional[str]* | :heavy_minus_sign: | N/A | 1:admin only\|2:everyone | \ No newline at end of file diff --git a/docs/models/operations/sharedservers.md b/docs/models/operations/sharedservers.md deleted file mode 100644 index d787f3b..0000000 --- a/docs/models/operations/sharedservers.md +++ /dev/null @@ -1,7 +0,0 @@ -# SharedServers - - -## Fields - -| Field | Type | Required | Description | -| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/sharedsources.md b/docs/models/operations/sharedsources.md deleted file mode 100644 index ca74299..0000000 --- a/docs/models/operations/sharedsources.md +++ /dev/null @@ -1,7 +0,0 @@ -# SharedSources - - -## Fields - -| Field | Type | Required | Description | -| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/showordering.md b/docs/models/operations/showordering.md deleted file mode 100644 index 978acf2..0000000 --- a/docs/models/operations/showordering.md +++ /dev/null @@ -1,21 +0,0 @@ -# ShowOrdering - -Setting that indicates the episode ordering for the show. -Options: - - None = Library default - - tmdbAiring = The Movie Database (Aired) - - aired = TheTVDB (Aired) - - dvd = TheTVDB (DVD) - - absolute = TheTVDB (Absolute) - - - -## Values - -| Name | Value | -| --------------- | --------------- | -| `NONE` | None | -| `TMDB_AIRING` | tmdbAiring | -| `TVDB_AIRED` | aired | -| `TVDB_DVD` | dvd | -| `TVDB_ABSOLUTE` | absolute | \ No newline at end of file diff --git a/docs/models/operations/shuffleglobals.md b/docs/models/operations/shuffleglobals.md new file mode 100644 index 0000000..664f3b7 --- /dev/null +++ b/docs/models/operations/shuffleglobals.md @@ -0,0 +1,18 @@ +# ShuffleGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/shufflerequest.md b/docs/models/operations/shufflerequest.md new file mode 100644 index 0000000..7249911 --- /dev/null +++ b/docs/models/operations/shufflerequest.md @@ -0,0 +1,19 @@ +# ShuffleRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `play_queue_id` | *int* | :heavy_check_mark: | The ID of the play queue. | | \ No newline at end of file diff --git a/docs/models/operations/shuffleresponse.md b/docs/models/operations/shuffleresponse.md new file mode 100644 index 0000000..c9de37b --- /dev/null +++ b/docs/models/operations/shuffleresponse.md @@ -0,0 +1,11 @@ +# ShuffleResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_playlist_metadata` | [Optional[components.MediaContainerWithPlaylistMetadata]](../../models/components/mediacontainerwithplaylistmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/similar.md b/docs/models/operations/similar.md deleted file mode 100644 index 55aa3bd..0000000 --- a/docs/models/operations/similar.md +++ /dev/null @@ -1,12 +0,0 @@ -# Similar - -The display tag for the similar item, typically the title. - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------- | --------------------- | --------------------- | --------------------- | --------------------- | -| `id` | *int* | :heavy_check_mark: | N/A | 259 | -| `filter_` | *str* | :heavy_check_mark: | N/A | similar=259 | -| `tag` | *str* | :heavy_check_mark: | N/A | Criss Angel Mindfreak | \ No newline at end of file diff --git a/docs/models/operations/skip.md b/docs/models/operations/skip.md deleted file mode 100644 index 8487d67..0000000 --- a/docs/models/operations/skip.md +++ /dev/null @@ -1,11 +0,0 @@ -# Skip - -Indicate that the latest version should be marked as skipped. The [Release] entry for this version will have the `state` set to `skipped`. - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/smart.md b/docs/models/operations/smart.md deleted file mode 100644 index a4d5e78..0000000 --- a/docs/models/operations/smart.md +++ /dev/null @@ -1,11 +0,0 @@ -# Smart - -whether the playlist is smart or not - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/sort.md b/docs/models/operations/sort.md deleted file mode 100644 index 1043024..0000000 --- a/docs/models/operations/sort.md +++ /dev/null @@ -1,15 +0,0 @@ -# Sort - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `default` | *Optional[str]* | :heavy_minus_sign: | N/A | asc | -| `active` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `active_direction` | [Optional[operations.ActiveDirection]](../../models/operations/activedirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `default_direction` | [Optional[operations.DefaultDirection]](../../models/operations/defaultdirection.md) | :heavy_minus_sign: | The direction of the sort. Can be either `asc` or `desc`.
| asc | -| `desc_key` | *Optional[str]* | :heavy_minus_sign: | N/A | titleSort:desc | -| `first_character_key` | *Optional[str]* | :heavy_minus_sign: | N/A | /library/sections/2/firstCharacter | -| `key` | *str* | :heavy_check_mark: | N/A | titleSort | -| `title` | *str* | :heavy_check_mark: | N/A | Title | \ No newline at end of file diff --git a/docs/models/operations/splititemglobals.md b/docs/models/operations/splititemglobals.md new file mode 100644 index 0000000..628d0b1 --- /dev/null +++ b/docs/models/operations/splititemglobals.md @@ -0,0 +1,18 @@ +# SplitItemGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/splititemrequest.md b/docs/models/operations/splititemrequest.md new file mode 100644 index 0000000..1a55331 --- /dev/null +++ b/docs/models/operations/splititemrequest.md @@ -0,0 +1,19 @@ +# SplitItemRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/splititemresponse.md b/docs/models/operations/splititemresponse.md new file mode 100644 index 0000000..02156a7 --- /dev/null +++ b/docs/models/operations/splititemresponse.md @@ -0,0 +1,10 @@ +# SplitItemResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/startalltasksresponse.md b/docs/models/operations/startalltasksresponse.md deleted file mode 100644 index d67bba0..0000000 --- a/docs/models/operations/startalltasksresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# StartAllTasksResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/startanalysisglobals.md b/docs/models/operations/startanalysisglobals.md new file mode 100644 index 0000000..81be01e --- /dev/null +++ b/docs/models/operations/startanalysisglobals.md @@ -0,0 +1,18 @@ +# StartAnalysisGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/startanalysisrequest.md b/docs/models/operations/startanalysisrequest.md new file mode 100644 index 0000000..45c6dff --- /dev/null +++ b/docs/models/operations/startanalysisrequest.md @@ -0,0 +1,19 @@ +# StartAnalysisRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | Section identifier | | \ No newline at end of file diff --git a/docs/models/operations/startanalysisresponse.md b/docs/models/operations/startanalysisresponse.md new file mode 100644 index 0000000..a953447 --- /dev/null +++ b/docs/models/operations/startanalysisresponse.md @@ -0,0 +1,10 @@ +# StartAnalysisResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/startbifgenerationglobals.md b/docs/models/operations/startbifgenerationglobals.md new file mode 100644 index 0000000..ab41399 --- /dev/null +++ b/docs/models/operations/startbifgenerationglobals.md @@ -0,0 +1,18 @@ +# StartBifGenerationGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/startbifgenerationrequest.md b/docs/models/operations/startbifgenerationrequest.md new file mode 100644 index 0000000..5971331 --- /dev/null +++ b/docs/models/operations/startbifgenerationrequest.md @@ -0,0 +1,20 @@ +# StartBifGenerationRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `force` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/models/operations/startbifgenerationresponse.md b/docs/models/operations/startbifgenerationresponse.md new file mode 100644 index 0000000..caf2f41 --- /dev/null +++ b/docs/models/operations/startbifgenerationresponse.md @@ -0,0 +1,10 @@ +# StartBifGenerationResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/starttaskglobals.md b/docs/models/operations/starttaskglobals.md new file mode 100644 index 0000000..47d41df --- /dev/null +++ b/docs/models/operations/starttaskglobals.md @@ -0,0 +1,18 @@ +# StartTaskGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/starttaskrequest.md b/docs/models/operations/starttaskrequest.md index 69dfaf8..9f61453 100644 --- a/docs/models/operations/starttaskrequest.md +++ b/docs/models/operations/starttaskrequest.md @@ -3,6 +3,17 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| `task_name` | [operations.TaskName](../../models/operations/taskname.md) | :heavy_check_mark: | the name of the task to be started. | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `task` | [operations.PathParamTask](../../models/operations/pathparamtask.md) | :heavy_check_mark: | The task name | | \ No newline at end of file diff --git a/docs/models/operations/starttasksresponse.md b/docs/models/operations/starttasksresponse.md new file mode 100644 index 0000000..8d43932 --- /dev/null +++ b/docs/models/operations/starttasksresponse.md @@ -0,0 +1,10 @@ +# StartTasksResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/starttranscodesessionglobals.md b/docs/models/operations/starttranscodesessionglobals.md new file mode 100644 index 0000000..aed11aa --- /dev/null +++ b/docs/models/operations/starttranscodesessionglobals.md @@ -0,0 +1,18 @@ +# StartTranscodeSessionGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/starttranscodesessionqueryparamlocation.md b/docs/models/operations/starttranscodesessionqueryparamlocation.md new file mode 100644 index 0000000..d738869 --- /dev/null +++ b/docs/models/operations/starttranscodesessionqueryparamlocation.md @@ -0,0 +1,12 @@ +# StartTranscodeSessionQueryParamLocation + +Network type of the client, can be used to help determine target bitrate. + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `LAN` | lan | +| `WAN` | wan | +| `CELLULAR` | cellular | \ No newline at end of file diff --git a/docs/models/operations/starttranscodesessionqueryparamprotocol.md b/docs/models/operations/starttranscodesessionqueryparamprotocol.md new file mode 100644 index 0000000..5c5dbce --- /dev/null +++ b/docs/models/operations/starttranscodesessionqueryparamprotocol.md @@ -0,0 +1,13 @@ +# StartTranscodeSessionQueryParamProtocol + +Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022) + + + +## Values + +| Name | Value | +| ------ | ------ | +| `HTTP` | http | +| `HLS` | hls | +| `DASH` | dash | \ No newline at end of file diff --git a/docs/models/operations/starttranscodesessionqueryparamsubtitles.md b/docs/models/operations/starttranscodesessionqueryparamsubtitles.md new file mode 100644 index 0000000..80d3e2c --- /dev/null +++ b/docs/models/operations/starttranscodesessionqueryparamsubtitles.md @@ -0,0 +1,17 @@ +# StartTranscodeSessionQueryParamSubtitles + +Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream + + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `AUTO` | auto | +| `BURN` | burn | +| `NONE` | none | +| `SIDECAR` | sidecar | +| `EMBEDDED` | embedded | +| `SEGMENTED` | segmented | +| `UNKNOWN` | unknown | \ No newline at end of file diff --git a/docs/models/operations/starttranscodesessionrequest.md b/docs/models/operations/starttranscodesessionrequest.md new file mode 100644 index 0000000..bf01b02 --- /dev/null +++ b/docs/models/operations/starttranscodesessionrequest.md @@ -0,0 +1,50 @@ +# StartTranscodeSessionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `transcode_type` | [components.TranscodeType](../../models/components/transcodetype.md) | :heavy_check_mark: | Type of transcode media | | +| `transcode_session_id` | *Optional[str]* | :heavy_minus_sign: | Transcode session UUID | | +| `extension` | [operations.Extension](../../models/operations/extension.md) | :heavy_check_mark: | Extension
| | +| `advanced_subtitles` | [Optional[components.AdvancedSubtitles]](../../models/components/advancedsubtitles.md) | :heavy_minus_sign: | Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost
| burn | +| `audio_boost` | *Optional[int]* | :heavy_minus_sign: | Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) | 50 | +| `audio_channel_count` | *Optional[int]* | :heavy_minus_sign: | Target video number of audio channels. | 5 | +| `auto_adjust_quality` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates the client supports ABR. | 1 | +| `auto_adjust_subtitle` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates if the server should adjust subtitles based on Voice Activity Data. | 1 | +| `direct_play` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates the client supports direct playing the indicated content. | 1 | +| `direct_stream` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the video of the indicated content. | 1 | +| `direct_stream_audio` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the audio of the indicated content. | 1 | +| `disable_resolution_rotation` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates if resolution should be adjusted for orientation. | 1 | +| `has_mde` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 | 1 | +| `location` | [Optional[operations.StartTranscodeSessionQueryParamLocation]](../../models/operations/starttranscodesessionqueryparamlocation.md) | :heavy_minus_sign: | Network type of the client, can be used to help determine target bitrate. | wan | +| `media_buffer_size` | *Optional[int]* | :heavy_minus_sign: | Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. | 102400 | +| `media_index` | *Optional[int]* | :heavy_minus_sign: | Index of the media to transcode. -1 or not specified indicates let the server choose. | 0 | +| `music_bitrate` | *Optional[int]* | :heavy_minus_sign: | Target bitrate for audio only files (in kbps, used to transcode). | 5000 | +| `offset` | *Optional[float]* | :heavy_minus_sign: | Offset from the start of the media (in seconds). | 90.5 | +| `part_index` | *Optional[int]* | :heavy_minus_sign: | Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode | 0 | +| `path` | *Optional[str]* | :heavy_minus_sign: | Internal PMS path of the media to transcode. | /library/metadata/151671 | +| `peak_bitrate` | *Optional[int]* | :heavy_minus_sign: | Maximum bitrate (in kbps) to use in ABR. | 12000 | +| `photo_resolution` | *Optional[str]* | :heavy_minus_sign: | Target photo resolution. | 1080x1080 | +| `protocol` | [Optional[operations.StartTranscodeSessionQueryParamProtocol]](../../models/operations/starttranscodesessionqueryparamprotocol.md) | :heavy_minus_sign: | Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
| dash | +| `seconds_per_segment` | *Optional[int]* | :heavy_minus_sign: | Number of seconds to include in each transcoded segment | 5 | +| `subtitle_size` | *Optional[int]* | :heavy_minus_sign: | Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) | 50 | +| `subtitles` | [Optional[operations.StartTranscodeSessionQueryParamSubtitles]](../../models/operations/starttranscodesessionqueryparamsubtitles.md) | :heavy_minus_sign: | Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
| Burn | +| `video_bitrate` | *Optional[int]* | :heavy_minus_sign: | Target video bitrate (in kbps). | 12000 | +| `video_quality` | *Optional[int]* | :heavy_minus_sign: | Target photo quality. | 50 | +| `video_resolution` | *Optional[str]* | :heavy_minus_sign: | Target maximum video resolution. | 1080x1080 | +| `x_plex_client_profile_extra` | *Optional[str]* | :heavy_minus_sign: | See [Profile Augmentations](#section/API-Info/Profile-Augmentations) . | add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash) | +| `x_plex_client_profile_name` | *Optional[str]* | :heavy_minus_sign: | Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile. | generic | +| `x_plex_session_identifier` | *Optional[str]* | :heavy_minus_sign: | Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) | | \ No newline at end of file diff --git a/docs/models/operations/starttranscodesessionresponse.md b/docs/models/operations/starttranscodesessionresponse.md new file mode 100644 index 0000000..8627a63 --- /dev/null +++ b/docs/models/operations/starttranscodesessionresponse.md @@ -0,0 +1,11 @@ +# StartTranscodeSessionResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | MPD file (see ISO/IEC 23009-1:2022), m3u8 file (see RFC 8216), or binary http stream | \ No newline at end of file diff --git a/docs/models/operations/startuniversaltranscoderequest.md b/docs/models/operations/startuniversaltranscoderequest.md deleted file mode 100644 index f4d3c71..0000000 --- a/docs/models/operations/startuniversaltranscoderequest.md +++ /dev/null @@ -1,23 +0,0 @@ -# StartUniversalTranscodeRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | --------------------------------------------- | -| `has_mde` | *float* | :heavy_check_mark: | Whether the media item has MDE | 1 | -| `path` | *str* | :heavy_check_mark: | The path to the media item to transcode | /library/metadata/23409 | -| `media_index` | *float* | :heavy_check_mark: | The index of the media item to transcode | 0 | -| `part_index` | *float* | :heavy_check_mark: | The index of the part to transcode | 0 | -| `protocol` | *str* | :heavy_check_mark: | The protocol to use for the transcode session | hls | -| `fast_seek` | *Optional[float]* | :heavy_minus_sign: | Whether to use fast seek or not | 0 | -| `direct_play` | *Optional[float]* | :heavy_minus_sign: | Whether to use direct play or not | 0 | -| `direct_stream` | *Optional[float]* | :heavy_minus_sign: | Whether to use direct stream or not | 0 | -| `subtitle_size` | *Optional[float]* | :heavy_minus_sign: | The size of the subtitles | 100 | -| `subtites` | *Optional[str]* | :heavy_minus_sign: | The subtitles | burn | -| `audio_boost` | *Optional[float]* | :heavy_minus_sign: | The audio boost | 100 | -| `location` | *Optional[str]* | :heavy_minus_sign: | The location of the transcode session | lan | -| `media_buffer_size` | *Optional[float]* | :heavy_minus_sign: | The size of the media buffer | 102400 | -| `session` | *Optional[str]* | :heavy_minus_sign: | The session ID | zvcage8b7rkioqcm8f4uns4c | -| `add_debug_overlay` | *Optional[float]* | :heavy_minus_sign: | Whether to add a debug overlay or not | 0 | -| `auto_adjust_quality` | *Optional[float]* | :heavy_minus_sign: | Whether to auto adjust quality or not | 0 | \ No newline at end of file diff --git a/docs/models/operations/startuniversaltranscoderesponse.md b/docs/models/operations/startuniversaltranscoderesponse.md deleted file mode 100644 index 9d18870..0000000 --- a/docs/models/operations/startuniversaltranscoderesponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# StartUniversalTranscodeResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/state.md b/docs/models/operations/state.md index f4f712a..a59897c 100644 --- a/docs/models/operations/state.md +++ b/docs/models/operations/state.md @@ -1,12 +1,13 @@ # State -The state of the media item +The current state of the media. ## Values -| Name | Value | -| --------- | --------- | -| `PLAYING` | playing | -| `PAUSED` | paused | -| `STOPPED` | stopped | \ No newline at end of file +| Name | Value | +| ----------- | ----------- | +| `STOPPED` | stopped | +| `BUFFERING` | buffering | +| `PLAYING` | playing | +| `PAUSED` | paused | \ No newline at end of file diff --git a/docs/models/operations/statisticsbandwidth.md b/docs/models/operations/statisticsbandwidth.md deleted file mode 100644 index ca695f6..0000000 --- a/docs/models/operations/statisticsbandwidth.md +++ /dev/null @@ -1,13 +0,0 @@ -# StatisticsBandwidth - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `account_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 238960586 | -| `device_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 208 | -| `timespan` | *Optional[int]* | :heavy_minus_sign: | N/A | 6 | -| `at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1718387650 | -| `lan` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `bytes_` | *Optional[int]* | :heavy_minus_sign: | N/A | 22 | \ No newline at end of file diff --git a/docs/models/operations/statisticsmedia.md b/docs/models/operations/statisticsmedia.md deleted file mode 100644 index daa5396..0000000 --- a/docs/models/operations/statisticsmedia.md +++ /dev/null @@ -1,14 +0,0 @@ -# StatisticsMedia - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `account_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `device_id` | *Optional[int]* | :heavy_minus_sign: | N/A | 13 | -| `timespan` | *Optional[int]* | :heavy_minus_sign: | N/A | 4 | -| `at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1707141600 | -| `metadata_type` | *Optional[int]* | :heavy_minus_sign: | N/A | 4 | -| `count` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 1555 | \ No newline at end of file diff --git a/docs/models/operations/statisticsresources.md b/docs/models/operations/statisticsresources.md deleted file mode 100644 index f059a31..0000000 --- a/docs/models/operations/statisticsresources.md +++ /dev/null @@ -1,13 +0,0 @@ -# StatisticsResources - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------- | ---------------------------- | ---------------------------- | ---------------------------- | ---------------------------- | -| `timespan` | *Optional[int]* | :heavy_minus_sign: | N/A | 6 | -| `at` | *Optional[int]* | :heavy_minus_sign: | N/A | 1718384427 | -| `host_cpu_utilization` | *Optional[float]* | :heavy_minus_sign: | N/A | 1.276 | -| `process_cpu_utilization` | *Optional[float]* | :heavy_minus_sign: | N/A | 0.025 | -| `host_memory_utilization` | *Optional[float]* | :heavy_minus_sign: | N/A | 17.026 | -| `process_memory_utilization` | *Optional[float]* | :heavy_minus_sign: | N/A | 0.493 | \ No newline at end of file diff --git a/docs/models/operations/status.md b/docs/models/operations/status.md index 01a1539..821f270 100644 --- a/docs/models/operations/status.md +++ b/docs/models/operations/status.md @@ -1,10 +1,20 @@ # Status -Current friend request status +The state of this queue + - deciding: At least one item is still being decided + - waiting: At least one item is waiting for transcode and none are currently transcoding + - processing: At least one item is being transcoded + - done: All items are available (or potentially expired) + - error: At least one item has encountered an error + ## Values -| Name | Value | -| ---------- | ---------- | -| `ACCEPTED` | accepted | \ No newline at end of file +| Name | Value | +| ------------ | ------------ | +| `DECIDING` | deciding | +| `WAITING` | waiting | +| `PROCESSING` | processing | +| `DONE` | done | +| `ERROR` | error | \ No newline at end of file diff --git a/docs/models/operations/stopallrefreshesresponse.md b/docs/models/operations/stopallrefreshesresponse.md new file mode 100644 index 0000000..bfe2a59 --- /dev/null +++ b/docs/models/operations/stopallrefreshesresponse.md @@ -0,0 +1,11 @@ +# StopAllRefreshesResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `request_handler_slash_get_responses_200` | [Optional[components.RequestHandlerSlashGetResponses200]](../../models/components/requesthandlerslashgetresponses200.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/stopalltasksresponse.md b/docs/models/operations/stopalltasksresponse.md deleted file mode 100644 index 647ee54..0000000 --- a/docs/models/operations/stopalltasksresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# StopAllTasksResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/stopdvrreloadglobals.md b/docs/models/operations/stopdvrreloadglobals.md new file mode 100644 index 0000000..3895a50 --- /dev/null +++ b/docs/models/operations/stopdvrreloadglobals.md @@ -0,0 +1,18 @@ +# StopDVRReloadGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/stopdvrreloadrequest.md b/docs/models/operations/stopdvrreloadrequest.md new file mode 100644 index 0000000..e1db11f --- /dev/null +++ b/docs/models/operations/stopdvrreloadrequest.md @@ -0,0 +1,19 @@ +# StopDVRReloadRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `dvr_id` | *int* | :heavy_check_mark: | The ID of the DVR. | | \ No newline at end of file diff --git a/docs/models/operations/stopdvrreloadresponse.md b/docs/models/operations/stopdvrreloadresponse.md new file mode 100644 index 0000000..e5aac30 --- /dev/null +++ b/docs/models/operations/stopdvrreloadresponse.md @@ -0,0 +1,10 @@ +# StopDVRReloadResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/stopscanglobals.md b/docs/models/operations/stopscanglobals.md new file mode 100644 index 0000000..ee6abc0 --- /dev/null +++ b/docs/models/operations/stopscanglobals.md @@ -0,0 +1,18 @@ +# StopScanGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/stopscanrequest.md b/docs/models/operations/stopscanrequest.md new file mode 100644 index 0000000..b754d62 --- /dev/null +++ b/docs/models/operations/stopscanrequest.md @@ -0,0 +1,19 @@ +# StopScanRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `device_id` | *int* | :heavy_check_mark: | The ID of the device. | | \ No newline at end of file diff --git a/docs/models/operations/stopscanresponse.md b/docs/models/operations/stopscanresponse.md new file mode 100644 index 0000000..be75a7d --- /dev/null +++ b/docs/models/operations/stopscanresponse.md @@ -0,0 +1,11 @@ +# StopScanResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_device` | [Optional[components.MediaContainerWithDevice]](../../models/components/mediacontainerwithdevice.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/stoptaskglobals.md b/docs/models/operations/stoptaskglobals.md new file mode 100644 index 0000000..83d8bdf --- /dev/null +++ b/docs/models/operations/stoptaskglobals.md @@ -0,0 +1,18 @@ +# StopTaskGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/stoptaskrequest.md b/docs/models/operations/stoptaskrequest.md index e629222..6d4461a 100644 --- a/docs/models/operations/stoptaskrequest.md +++ b/docs/models/operations/stoptaskrequest.md @@ -3,6 +3,17 @@ ## Fields -| Field | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `task_name` | [operations.PathParamTaskName](../../models/operations/pathparamtaskname.md) | :heavy_check_mark: | The name of the task to be started. | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `task` | [operations.Task](../../models/operations/task.md) | :heavy_check_mark: | The task name | | \ No newline at end of file diff --git a/docs/models/operations/stoptasksresponse.md b/docs/models/operations/stoptasksresponse.md new file mode 100644 index 0000000..228404f --- /dev/null +++ b/docs/models/operations/stoptasksresponse.md @@ -0,0 +1,10 @@ +# StopTasksResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/stoptranscodesessionrequest.md b/docs/models/operations/stoptranscodesessionrequest.md deleted file mode 100644 index bce70bd..0000000 --- a/docs/models/operations/stoptranscodesessionrequest.md +++ /dev/null @@ -1,8 +0,0 @@ -# StopTranscodeSessionRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| `session_key` | *str* | :heavy_check_mark: | the Key of the transcode session to stop | zz7llzqlx8w9vnrsbnwhbmep | \ No newline at end of file diff --git a/docs/models/operations/stoptranscodesessionresponse.md b/docs/models/operations/stoptranscodesessionresponse.md deleted file mode 100644 index d8c8c35..0000000 --- a/docs/models/operations/stoptranscodesessionresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# StopTranscodeSessionResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/stream.md b/docs/models/operations/stream.md deleted file mode 100644 index 5fb4cf8..0000000 --- a/docs/models/operations/stream.md +++ /dev/null @@ -1,58 +0,0 @@ -# Stream - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique stream identifier. | 1002625 | -| `stream_type` | *Literal[1]* | :heavy_check_mark: | Stream type:
- VIDEO = 1
- AUDIO = 2
- SUBTITLE = 3
| | -| `format_` | *Optional[str]* | :heavy_minus_sign: | Format of the stream (e.g., srt). | srt | -| `default` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this stream is default. | true | -| `codec` | *str* | :heavy_check_mark: | Codec used by the stream. | hevc | -| `index` | *Optional[int]* | :heavy_minus_sign: | Index of the stream. | 0 | -| `bitrate` | *Optional[int]* | :heavy_minus_sign: | Bitrate of the stream. | 24743 | -| `language` | *Optional[str]* | :heavy_minus_sign: | Language of the stream. | English | -| `language_tag` | *Optional[str]* | :heavy_minus_sign: | Language tag (e.g., en). | en | -| `language_code` | *Optional[str]* | :heavy_minus_sign: | ISO language code. | eng | -| `header_compression` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether header compression is enabled. | true | -| `dovibl_compat_id` | *Optional[int]* | :heavy_minus_sign: | Dolby Vision BL compatibility ID. | 1 | -| `dovibl_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision BL is present. | true | -| `doviel_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision EL is present. | false | -| `dovi_level` | *Optional[int]* | :heavy_minus_sign: | Dolby Vision level. | 6 | -| `dovi_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision is present. | true | -| `dovi_profile` | *Optional[int]* | :heavy_minus_sign: | Dolby Vision profile. | 8 | -| `dovirpu_present` | *Optional[bool]* | :heavy_minus_sign: | Indicates if Dolby Vision RPU is present. | true | -| `dovi_version` | *Optional[str]* | :heavy_minus_sign: | Dolby Vision version. | 1.0 | -| `bit_depth` | *Optional[int]* | :heavy_minus_sign: | Bit depth of the video stream. | 10 | -| `chroma_location` | *Optional[str]* | :heavy_minus_sign: | Chroma sample location. | topleft | -| `chroma_subsampling` | *Optional[str]* | :heavy_minus_sign: | Chroma subsampling format. | 4:2:0 | -| `coded_height` | *Optional[int]* | :heavy_minus_sign: | Coded video height. | 1608 | -| `coded_width` | *Optional[int]* | :heavy_minus_sign: | Coded video width. | 3840 | -| `closed_captions` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `color_primaries` | *Optional[str]* | :heavy_minus_sign: | Color primaries used. | bt2020 | -| `color_range` | *Optional[str]* | :heavy_minus_sign: | Color range (e.g., tv). | tv | -| `color_space` | *Optional[str]* | :heavy_minus_sign: | Color space. | bt2020nc | -| `color_trc` | *Optional[str]* | :heavy_minus_sign: | Color transfer characteristics. | smpte2084 | -| `frame_rate` | *Optional[float]* | :heavy_minus_sign: | Frame rate of the stream. | 23.976 | -| `key` | *Optional[str]* | :heavy_minus_sign: | Key to access this stream part. | /library/streams/216389 | -| `height` | *Optional[int]* | :heavy_minus_sign: | Height of the video stream. | 1602 | -| `level` | *Optional[int]* | :heavy_minus_sign: | Video level. | 150 | -| `original` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this is the original stream. | true | -| `has_scaling_matrix` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `profile` | *Optional[str]* | :heavy_minus_sign: | Video profile. | main 10 | -| `scan_type` | *Optional[str]* | :heavy_minus_sign: | N/A | progressive | -| `embedded_in_video` | *Optional[str]* | :heavy_minus_sign: | N/A | progressive | -| `ref_frames` | *Optional[int]* | :heavy_minus_sign: | Number of reference frames. | 1 | -| `width` | *Optional[int]* | :heavy_minus_sign: | Width of the video stream. | 3840 | -| `display_title` | *str* | :heavy_check_mark: | Display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `extended_display_title` | *str* | :heavy_check_mark: | Extended display title for the stream. | 4K DoVi/HDR10 (HEVC Main 10) | -| `selected` | *Optional[bool]* | :heavy_minus_sign: | Indicates if this stream is selected (applicable for audio streams). | true | -| `forced` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `channels` | *Optional[int]* | :heavy_minus_sign: | Number of audio channels (for audio streams). | 6 | -| `audio_channel_layout` | *Optional[str]* | :heavy_minus_sign: | Audio channel layout. | 5.1(side) | -| `sampling_rate` | *Optional[int]* | :heavy_minus_sign: | Sampling rate for the audio stream. | 48000 | -| `can_auto_sync` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream can auto-sync. | false | -| `hearing_impaired` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream is for the hearing impaired. | true | -| `dub` | *Optional[bool]* | :heavy_minus_sign: | Indicates if the stream is a dub. | true | -| `title` | *Optional[str]* | :heavy_minus_sign: | Optional title for the stream (e.g., language variant). | SDH | \ No newline at end of file diff --git a/docs/models/operations/subscription.md b/docs/models/operations/subscription.md deleted file mode 100644 index 09e9ad0..0000000 --- a/docs/models/operations/subscription.md +++ /dev/null @@ -1,15 +0,0 @@ -# Subscription - -If the account’s Plex Pass subscription is active - - -## Fields - -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -| `features` | List[*str*] | :heavy_minus_sign: | List of features allowed on your Plex Pass subscription | | -| `active` | *Optional[bool]* | :heavy_minus_sign: | If the account's Plex Pass subscription is active | true | -| `subscribed_at` | *OptionalNullable[str]* | :heavy_minus_sign: | Date the account subscribed to Plex Pass | 2021-04-12T18:21:12Z | -| `status` | [Optional[operations.GetTokenDetailsAuthenticationStatus]](../../models/operations/gettokendetailsauthenticationstatus.md) | :heavy_minus_sign: | String representation of subscriptionActive | Inactive | -| `payment_service` | *OptionalNullable[str]* | :heavy_minus_sign: | Payment service used for your Plex Pass subscription | | -| `plan` | *OptionalNullable[str]* | :heavy_minus_sign: | Name of Plex Pass subscription plan | | \ No newline at end of file diff --git a/docs/models/operations/subscriptiontemplate.md b/docs/models/operations/subscriptiontemplate.md new file mode 100644 index 0000000..d803a99 --- /dev/null +++ b/docs/models/operations/subscriptiontemplate.md @@ -0,0 +1,8 @@ +# SubscriptionTemplate + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `media_subscription` | List[[operations.MediaSubscription](../../models/operations/mediasubscription.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/subtitles.md b/docs/models/operations/subtitles.md new file mode 100644 index 0000000..625af38 --- /dev/null +++ b/docs/models/operations/subtitles.md @@ -0,0 +1,17 @@ +# Subtitles + +Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream + + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `AUTO` | auto | +| `BURN` | burn | +| `NONE` | none | +| `SIDECAR` | sidecar | +| `EMBEDDED` | embedded | +| `SEGMENTED` | segmented | +| `UNKNOWN` | unknown | \ No newline at end of file diff --git a/docs/models/operations/tag.md b/docs/models/operations/tag.md deleted file mode 100644 index b736af3..0000000 --- a/docs/models/operations/tag.md +++ /dev/null @@ -1,25 +0,0 @@ -# Tag - -A key representing a specific tag within the section. - - -## Values - -| Name | Value | -| ----------------- | ----------------- | -| `UNWATCHED` | unwatched | -| `NEWEST` | newest | -| `RECENTLY_ADDED` | recentlyAdded | -| `RECENTLY_VIEWED` | recentlyViewed | -| `ON_DECK` | onDeck | -| `COLLECTION` | collection | -| `EDITION` | edition | -| `YEAR` | year | -| `DECADE` | decade | -| `DIRECTOR` | director | -| `CONTENT_RATING` | contentRating | -| `RATING` | rating | -| `RESOLUTION` | resolution | -| `FIRST_CHARACTER` | firstCharacter | -| `FOLDER` | folder | -| `ALBUMS` | albums | \ No newline at end of file diff --git a/docs/models/operations/task.md b/docs/models/operations/task.md new file mode 100644 index 0000000..e9d63f2 --- /dev/null +++ b/docs/models/operations/task.md @@ -0,0 +1,31 @@ +# Task + +The task name + + +## Values + +| Name | Value | +| -------------------------------------- | -------------------------------------- | +| `AUTOMATIC_UPDATES` | AutomaticUpdates | +| `BACKUP_DATABASE` | BackupDatabase | +| `BUTLER_TASK_GENERATE_AD_MARKERS` | ButlerTaskGenerateAdMarkers | +| `BUTLER_TASK_GENERATE_CREDITS_MARKERS` | ButlerTaskGenerateCreditsMarkers | +| `BUTLER_TASK_GENERATE_INTRO_MARKERS` | ButlerTaskGenerateIntroMarkers | +| `BUTLER_TASK_GENERATE_VOICE_ACTIVITY` | ButlerTaskGenerateVoiceActivity | +| `CLEAN_OLD_BUNDLES` | CleanOldBundles | +| `CLEAN_OLD_CACHE_FILES` | CleanOldCacheFiles | +| `DEEP_MEDIA_ANALYSIS` | DeepMediaAnalysis | +| `GARBAGE_COLLECT_BLOBS` | GarbageCollectBlobs | +| `GARBAGE_COLLECT_LIBRARY_MEDIA` | GarbageCollectLibraryMedia | +| `GENERATE_BLUR_HASHES` | GenerateBlurHashes | +| `GENERATE_CHAPTER_THUMBS` | GenerateChapterThumbs | +| `GENERATE_MEDIA_INDEX_FILES` | GenerateMediaIndexFiles | +| `LOUDNESS_ANALYSIS` | LoudnessAnalysis | +| `MUSIC_ANALYSIS` | MusicAnalysis | +| `OPTIMIZE_DATABASE` | OptimizeDatabase | +| `REFRESH_EPG_GUIDES` | RefreshEpgGuides | +| `REFRESH_LIBRARIES` | RefreshLibraries | +| `REFRESH_LOCAL_MEDIA` | RefreshLocalMedia | +| `REFRESH_PERIODIC_METADATA` | RefreshPeriodicMetadata | +| `UPGRADE_MEDIA_ANALYSIS` | UpgradeMediaAnalysis | \ No newline at end of file diff --git a/docs/models/operations/taskname.md b/docs/models/operations/taskname.md deleted file mode 100644 index 44383b3..0000000 --- a/docs/models/operations/taskname.md +++ /dev/null @@ -1,23 +0,0 @@ -# TaskName - -the name of the task to be started. - - -## Values - -| Name | Value | -| ----------------------------- | ----------------------------- | -| `BACKUP_DATABASE` | BackupDatabase | -| `BUILD_GRACENOTE_COLLECTIONS` | BuildGracenoteCollections | -| `CHECK_FOR_UPDATES` | CheckForUpdates | -| `CLEAN_OLD_BUNDLES` | CleanOldBundles | -| `CLEAN_OLD_CACHE_FILES` | CleanOldCacheFiles | -| `DEEP_MEDIA_ANALYSIS` | DeepMediaAnalysis | -| `GENERATE_AUTO_TAGS` | GenerateAutoTags | -| `GENERATE_CHAPTER_THUMBS` | GenerateChapterThumbs | -| `GENERATE_MEDIA_INDEX_FILES` | GenerateMediaIndexFiles | -| `OPTIMIZE_DATABASE` | OptimizeDatabase | -| `REFRESH_LIBRARIES` | RefreshLibraries | -| `REFRESH_LOCAL_MEDIA` | RefreshLocalMedia | -| `REFRESH_PERIODIC_METADATA` | RefreshPeriodicMetadata | -| `UPGRADE_MEDIA_ANALYSIS` | UpgradeMediaAnalysis | \ No newline at end of file diff --git a/docs/models/operations/terminatesessionglobals.md b/docs/models/operations/terminatesessionglobals.md new file mode 100644 index 0000000..1995a17 --- /dev/null +++ b/docs/models/operations/terminatesessionglobals.md @@ -0,0 +1,18 @@ +# TerminateSessionGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/terminatesessionrequest.md b/docs/models/operations/terminatesessionrequest.md new file mode 100644 index 0000000..3fb170c --- /dev/null +++ b/docs/models/operations/terminatesessionrequest.md @@ -0,0 +1,20 @@ +# TerminateSessionRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `session_id` | *str* | :heavy_check_mark: | The session id (found in the `Session` element in [/status/sessions](#tag/Status/operation/statusGetSlash)) | cdefghijklmnopqrstuvwxyz | +| `reason` | *Optional[str]* | :heavy_minus_sign: | The reason to give to the user (typically displayed in the client) | Stop Playing | \ No newline at end of file diff --git a/docs/models/operations/terminatesessionresponse.md b/docs/models/operations/terminatesessionresponse.md new file mode 100644 index 0000000..b901c62 --- /dev/null +++ b/docs/models/operations/terminatesessionresponse.md @@ -0,0 +1,10 @@ +# TerminateSessionResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/tonight.md b/docs/models/operations/tonight.md deleted file mode 100644 index 7bf98ba..0000000 --- a/docs/models/operations/tonight.md +++ /dev/null @@ -1,11 +0,0 @@ -# Tonight - -Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/transcode.md b/docs/models/operations/transcode.md new file mode 100644 index 0000000..94ea9d9 --- /dev/null +++ b/docs/models/operations/transcode.md @@ -0,0 +1,9 @@ +# Transcode + +The transcode session object which is not yet documented otherwise it'd be a $ref here. + + +## Fields + +| Field | Type | Required | Description | +| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/transcodeimageglobals.md b/docs/models/operations/transcodeimageglobals.md new file mode 100644 index 0000000..6c896f9 --- /dev/null +++ b/docs/models/operations/transcodeimageglobals.md @@ -0,0 +1,18 @@ +# TranscodeImageGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/transcodeimagerequest.md b/docs/models/operations/transcodeimagerequest.md new file mode 100644 index 0000000..624b235 --- /dev/null +++ b/docs/models/operations/transcodeimagerequest.md @@ -0,0 +1,32 @@ +# TranscodeImageRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `url` | *Optional[str]* | :heavy_minus_sign: | The source URL for the image to transcode. Note, if this URL requires a token such as `X-Plex-Token`, it should be given as a query parameter to this url. | /library/metadata/265/thumb/1715112705 | +| `format_` | [Optional[operations.Format]](../../models/operations/format_.md) | :heavy_minus_sign: | The output format for the image; defaults to jpg | | +| `width` | *Optional[int]* | :heavy_minus_sign: | The desired width of the output image | | +| `height` | *Optional[int]* | :heavy_minus_sign: | The desired height of the output image | | +| `quality` | *Optional[int]* | :heavy_minus_sign: | The desired quality of the output. -1 means the highest quality. Defaults to -1 | | +| `background` | *Optional[str]* | :heavy_minus_sign: | The background color to apply before painting the image. Only really applicable if image has transparency. Defaults to none | #ff5522 | +| `upscale` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates if image should be upscaled to the desired width/height. Defaults to false | 1 | +| `min_size` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates if image should be scaled to fit the smaller dimension. By default (false) the image is scaled to fit within the width/height specified but if this parameter is true, it will allow overflowing one dimension to fit the other. Essentially it is making the width/height minimum sizes of the image or sizing the image to fill the entire width/height even if it overflows one dimension. | 1 | +| `rotate` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Obey the rotation values specified in EXIF data. Defaults to true. | 1 | +| `blur` | *Optional[int]* | :heavy_minus_sign: | Apply a blur to the image, Defaults to 0 (none) | | +| `saturation` | *Optional[int]* | :heavy_minus_sign: | Scale the image saturation by the specified percentage. Defaults to 100 | | +| `opacity` | *Optional[int]* | :heavy_minus_sign: | Render the image at the specified opacity percentage. Defaults to 100 | | +| `chroma_subsampling` | [Optional[operations.ChromaSubsampling]](../../models/operations/chromasubsampling.md) | :heavy_minus_sign: | Use the specified chroma subsambling.
- 0: 411
- 1: 420
- 2: 422
- 3: 444
Defaults to 3 (444) | | +| `blend_color` | *Optional[str]* | :heavy_minus_sign: | The color to blend with the image. Defaults to none | #ff5522 | \ No newline at end of file diff --git a/docs/models/operations/transcodeimageresponse.md b/docs/models/operations/transcodeimageresponse.md new file mode 100644 index 0000000..d3453ba --- /dev/null +++ b/docs/models/operations/transcodeimageresponse.md @@ -0,0 +1,13 @@ +# TranscodeImageResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `two_hundred_image_jpeg_response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | The resulting image | +| `two_hundred_image_png_response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | The resulting image | +| `two_hundred_image_x_portable_pixmap_response_stream` | *Optional[httpx.Response]* | :heavy_minus_sign: | The resulting image | \ No newline at end of file diff --git a/docs/models/operations/transcodejob.md b/docs/models/operations/transcodejob.md new file mode 100644 index 0000000..d2ea01c --- /dev/null +++ b/docs/models/operations/transcodejob.md @@ -0,0 +1,18 @@ +# TranscodeJob + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `generator_id` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `progress` | *Optional[float]* | :heavy_minus_sign: | N/A | +| `rating_key` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `remaining` | *Optional[int]* | :heavy_minus_sign: | The number of seconds remaining in this job | +| `size` | *Optional[int]* | :heavy_minus_sign: | The size of the result so far | +| `speed` | *Optional[float]* | :heavy_minus_sign: | The speed of the transcode; 1.0 means real-time | +| `target_tag_id` | *Optional[int]* | :heavy_minus_sign: | The tag associated with the job. This could be the tag containing the optimizer settings. | +| `thumb` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `title` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `type` | [Optional[operations.GetBackgroundTasksType]](../../models/operations/getbackgroundtaskstype.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/transcodesession.md b/docs/models/operations/transcodesession.md deleted file mode 100644 index 1d244f2..0000000 --- a/docs/models/operations/transcodesession.md +++ /dev/null @@ -1,31 +0,0 @@ -# TranscodeSession - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------ | ------------------------ | ------------------------ | ------------------------ | ------------------------ | -| `key` | *Optional[str]* | :heavy_minus_sign: | N/A | vv3i2q2lax92qlzul1hbd4bx | -| `throttled` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `complete` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `progress` | *Optional[float]* | :heavy_minus_sign: | N/A | 1.7999999523162842 | -| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | -22 | -| `speed` | *Optional[float]* | :heavy_minus_sign: | N/A | 25.100000381469727 | -| `error` | *Optional[bool]* | :heavy_minus_sign: | N/A | false | -| `duration` | *Optional[int]* | :heavy_minus_sign: | N/A | 1445695 | -| `remaining` | *Optional[int]* | :heavy_minus_sign: | N/A | 53 | -| `context` | *Optional[str]* | :heavy_minus_sign: | N/A | streaming | -| `source_video_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | h264 | -| `source_audio_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | aac | -| `video_decision` | *Optional[str]* | :heavy_minus_sign: | N/A | transcode | -| `audio_decision` | *Optional[str]* | :heavy_minus_sign: | N/A | transcode | -| `subtitle_decision` | *Optional[str]* | :heavy_minus_sign: | N/A | burn | -| `protocol` | *Optional[str]* | :heavy_minus_sign: | N/A | http | -| `container` | *Optional[str]* | :heavy_minus_sign: | N/A | mkv | -| `video_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | h264 | -| `audio_codec` | *Optional[str]* | :heavy_minus_sign: | N/A | opus | -| `audio_channels` | *Optional[int]* | :heavy_minus_sign: | N/A | 1 | -| `transcode_hw_requested` | *Optional[bool]* | :heavy_minus_sign: | N/A | true | -| `time_stamp` | *Optional[float]* | :heavy_minus_sign: | N/A | 1.7058958054919229e+09 | -| `max_offset_available` | *Optional[float]* | :heavy_minus_sign: | N/A | 29.53 | -| `min_offset_available` | *Optional[float]* | :heavy_minus_sign: | N/A | 3.003000020980835 | \ No newline at end of file diff --git a/docs/models/operations/transcodesubtitlesglobals.md b/docs/models/operations/transcodesubtitlesglobals.md new file mode 100644 index 0000000..b21b7e9 --- /dev/null +++ b/docs/models/operations/transcodesubtitlesglobals.md @@ -0,0 +1,18 @@ +# TranscodeSubtitlesGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/transcodesubtitlesrequest.md b/docs/models/operations/transcodesubtitlesrequest.md new file mode 100644 index 0000000..adecaa9 --- /dev/null +++ b/docs/models/operations/transcodesubtitlesrequest.md @@ -0,0 +1,49 @@ +# TranscodeSubtitlesRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `transcode_type` | [components.TranscodeType](../../models/components/transcodetype.md) | :heavy_check_mark: | Type of transcode media | | +| `transcode_session_id` | *Optional[str]* | :heavy_minus_sign: | Transcode session UUID | | +| `advanced_subtitles` | [Optional[components.AdvancedSubtitles]](../../models/components/advancedsubtitles.md) | :heavy_minus_sign: | Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost
| burn | +| `audio_boost` | *Optional[int]* | :heavy_minus_sign: | Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc) | 50 | +| `audio_channel_count` | *Optional[int]* | :heavy_minus_sign: | Target video number of audio channels. | 5 | +| `auto_adjust_quality` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates the client supports ABR. | 1 | +| `auto_adjust_subtitle` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates if the server should adjust subtitles based on Voice Activity Data. | 1 | +| `direct_play` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates the client supports direct playing the indicated content. | 1 | +| `direct_stream` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the video of the indicated content. | 1 | +| `direct_stream_audio` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates the client supports direct streaming the audio of the indicated content. | 1 | +| `disable_resolution_rotation` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Indicates if resolution should be adjusted for orientation. | 1 | +| `has_mde` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1 | 1 | +| `location` | [Optional[operations.QueryParamLocation]](../../models/operations/queryparamlocation.md) | :heavy_minus_sign: | Network type of the client, can be used to help determine target bitrate. | wan | +| `media_buffer_size` | *Optional[int]* | :heavy_minus_sign: | Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks. | 102400 | +| `media_index` | *Optional[int]* | :heavy_minus_sign: | Index of the media to transcode. -1 or not specified indicates let the server choose. | 0 | +| `music_bitrate` | *Optional[int]* | :heavy_minus_sign: | Target bitrate for audio only files (in kbps, used to transcode). | 5000 | +| `offset` | *Optional[float]* | :heavy_minus_sign: | Offset from the start of the media (in seconds). | 90.5 | +| `part_index` | *Optional[int]* | :heavy_minus_sign: | Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode | 0 | +| `path` | *Optional[str]* | :heavy_minus_sign: | Internal PMS path of the media to transcode. | /library/metadata/151671 | +| `peak_bitrate` | *Optional[int]* | :heavy_minus_sign: | Maximum bitrate (in kbps) to use in ABR. | 12000 | +| `photo_resolution` | *Optional[str]* | :heavy_minus_sign: | Target photo resolution. | 1080x1080 | +| `protocol` | [Optional[operations.QueryParamProtocol]](../../models/operations/queryparamprotocol.md) | :heavy_minus_sign: | Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)
| dash | +| `seconds_per_segment` | *Optional[int]* | :heavy_minus_sign: | Number of seconds to include in each transcoded segment | 5 | +| `subtitle_size` | *Optional[int]* | :heavy_minus_sign: | Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect) | 50 | +| `subtitles` | [Optional[operations.QueryParamSubtitles]](../../models/operations/queryparamsubtitles.md) | :heavy_minus_sign: | Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream
| Burn | +| `video_bitrate` | *Optional[int]* | :heavy_minus_sign: | Target video bitrate (in kbps). | 12000 | +| `video_quality` | *Optional[int]* | :heavy_minus_sign: | Target photo quality. | 50 | +| `video_resolution` | *Optional[str]* | :heavy_minus_sign: | Target maximum video resolution. | 1080x1080 | +| `x_plex_client_profile_extra` | *Optional[str]* | :heavy_minus_sign: | See [Profile Augmentations](#section/API-Info/Profile-Augmentations) . | add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash) | +| `x_plex_client_profile_name` | *Optional[str]* | :heavy_minus_sign: | Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile. | generic | +| `x_plex_session_identifier` | *Optional[str]* | :heavy_minus_sign: | Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs) | | \ No newline at end of file diff --git a/docs/models/operations/transcodesubtitlesresponse.md b/docs/models/operations/transcodesubtitlesresponse.md new file mode 100644 index 0000000..4bc838e --- /dev/null +++ b/docs/models/operations/transcodesubtitlesresponse.md @@ -0,0 +1,10 @@ +# TranscodeSubtitlesResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/trials.md b/docs/models/operations/trials.md deleted file mode 100644 index 1b9b77d..0000000 --- a/docs/models/operations/trials.md +++ /dev/null @@ -1,7 +0,0 @@ -# Trials - - -## Fields - -| Field | Type | Required | Description | -| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/docs/models/operations/triggerfallbackglobals.md b/docs/models/operations/triggerfallbackglobals.md new file mode 100644 index 0000000..d3fbab7 --- /dev/null +++ b/docs/models/operations/triggerfallbackglobals.md @@ -0,0 +1,18 @@ +# TriggerFallbackGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/triggerfallbackrequest.md b/docs/models/operations/triggerfallbackrequest.md new file mode 100644 index 0000000..d69e49c --- /dev/null +++ b/docs/models/operations/triggerfallbackrequest.md @@ -0,0 +1,20 @@ +# TriggerFallbackRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `transcode_type` | [components.TranscodeType](../../models/components/transcodetype.md) | :heavy_check_mark: | Type of transcode media | | +| `transcode_session_id` | *Optional[str]* | :heavy_minus_sign: | Transcode session UUID | | \ No newline at end of file diff --git a/docs/models/operations/triggerfallbackresponse.md b/docs/models/operations/triggerfallbackresponse.md new file mode 100644 index 0000000..a20746f --- /dev/null +++ b/docs/models/operations/triggerfallbackresponse.md @@ -0,0 +1,10 @@ +# TriggerFallbackResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/tunechannelglobals.md b/docs/models/operations/tunechannelglobals.md new file mode 100644 index 0000000..632ee5d --- /dev/null +++ b/docs/models/operations/tunechannelglobals.md @@ -0,0 +1,18 @@ +# TuneChannelGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/tunechannelrequest.md b/docs/models/operations/tunechannelrequest.md new file mode 100644 index 0000000..8c0b804 --- /dev/null +++ b/docs/models/operations/tunechannelrequest.md @@ -0,0 +1,20 @@ +# TuneChannelRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `dvr_id` | *int* | :heavy_check_mark: | The ID of the DVR. | | +| `channel` | *str* | :heavy_check_mark: | The channel ID to tune | 2.1 | \ No newline at end of file diff --git a/docs/models/operations/tunechannelresponse.md b/docs/models/operations/tunechannelresponse.md new file mode 100644 index 0000000..596d01f --- /dev/null +++ b/docs/models/operations/tunechannelresponse.md @@ -0,0 +1,12 @@ +# TuneChannelResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_metadata` | [Optional[components.MediaContainerWithMetadata]](../../models/components/mediacontainerwithmetadata.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/type.md b/docs/models/operations/type.md index 8a7168d..36728af 100644 --- a/docs/models/operations/type.md +++ b/docs/models/operations/type.md @@ -1,24 +1,12 @@ # Type -The type of media to retrieve or filter by. -1 = movie -2 = show -3 = season -4 = episode -E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - +The type of play queue to create ## Values -| Name | Value | -| ------------- | ------------- | -| `MOVIE` | 1 | -| `TV_SHOW` | 2 | -| `SEASON` | 3 | -| `EPISODE` | 4 | -| `ARTIST` | 5 | -| `ALBUM` | 6 | -| `TRACK` | 7 | -| `PHOTO_ALBUM` | 8 | -| `PHOTO` | 9 | \ No newline at end of file +| Name | Value | +| ------- | ------- | +| `AUDIO` | audio | +| `VIDEO` | video | +| `PHOTO` | photo | \ No newline at end of file diff --git a/docs/models/operations/ultrablurcolors.md b/docs/models/operations/ultrablurcolors.md index cf87461..4f2e9d8 100644 --- a/docs/models/operations/ultrablurcolors.md +++ b/docs/models/operations/ultrablurcolors.md @@ -3,9 +3,9 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | -| `top_left` | *str* | :heavy_check_mark: | N/A | 11333b | -| `top_right` | *str* | :heavy_check_mark: | N/A | 0a232d | -| `bottom_right` | *str* | :heavy_check_mark: | N/A | 73958 | -| `bottom_left` | *str* | :heavy_check_mark: | N/A | 1f5066 | \ No newline at end of file +| Field | Type | Required | Description | +| ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | ---------------------------------------------- | +| `bottom_left` | *Optional[str]* | :heavy_minus_sign: | The color (hex) for the bottom left quadrant. | +| `bottom_right` | *Optional[str]* | :heavy_minus_sign: | The color (hex) for the bottom right quadrant. | +| `top_left` | *Optional[str]* | :heavy_minus_sign: | The color (hex) for the top left quadrant. | +| `top_right` | *Optional[str]* | :heavy_minus_sign: | The color (hex) for the top right quadrant. | \ No newline at end of file diff --git a/docs/models/operations/unmatchglobals.md b/docs/models/operations/unmatchglobals.md new file mode 100644 index 0000000..526d1b2 --- /dev/null +++ b/docs/models/operations/unmatchglobals.md @@ -0,0 +1,18 @@ +# UnmatchGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/unmatchrequest.md b/docs/models/operations/unmatchrequest.md new file mode 100644 index 0000000..cc2eb66 --- /dev/null +++ b/docs/models/operations/unmatchrequest.md @@ -0,0 +1,19 @@ +# UnmatchRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/operations/unmatchresponse.md b/docs/models/operations/unmatchresponse.md new file mode 100644 index 0000000..a0f17b5 --- /dev/null +++ b/docs/models/operations/unmatchresponse.md @@ -0,0 +1,10 @@ +# UnmatchResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/unscrobbleglobals.md b/docs/models/operations/unscrobbleglobals.md new file mode 100644 index 0000000..1d6f06d --- /dev/null +++ b/docs/models/operations/unscrobbleglobals.md @@ -0,0 +1,18 @@ +# UnscrobbleGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/unscrobblerequest.md b/docs/models/operations/unscrobblerequest.md new file mode 100644 index 0000000..6aba842 --- /dev/null +++ b/docs/models/operations/unscrobblerequest.md @@ -0,0 +1,21 @@ +# UnscrobbleRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `identifier` | *str* | :heavy_check_mark: | The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library` | | +| `key` | *Optional[str]* | :heavy_minus_sign: | The key of the item to rate. This is the `ratingKey` found in metadata items | | +| `uri` | *Optional[str]* | :heavy_minus_sign: | The URI of the item to mark as played. See intro for description of the URIs | | \ No newline at end of file diff --git a/docs/models/operations/unscrobbleresponse.md b/docs/models/operations/unscrobbleresponse.md new file mode 100644 index 0000000..9276cb5 --- /dev/null +++ b/docs/models/operations/unscrobbleresponse.md @@ -0,0 +1,10 @@ +# UnscrobbleResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/unshuffleglobals.md b/docs/models/operations/unshuffleglobals.md new file mode 100644 index 0000000..cb3ea27 --- /dev/null +++ b/docs/models/operations/unshuffleglobals.md @@ -0,0 +1,18 @@ +# UnshuffleGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/unshufflerequest.md b/docs/models/operations/unshufflerequest.md new file mode 100644 index 0000000..bda96fd --- /dev/null +++ b/docs/models/operations/unshufflerequest.md @@ -0,0 +1,19 @@ +# UnshuffleRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `play_queue_id` | *int* | :heavy_check_mark: | The ID of the play queue. | | \ No newline at end of file diff --git a/docs/models/operations/unshuffleresponse.md b/docs/models/operations/unshuffleresponse.md new file mode 100644 index 0000000..55495ff --- /dev/null +++ b/docs/models/operations/unshuffleresponse.md @@ -0,0 +1,11 @@ +# UnshuffleResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `media_container_with_playlist_metadata` | [Optional[components.MediaContainerWithPlaylistMetadata]](../../models/components/mediacontainerwithplaylistmetadata.md) | :heavy_minus_sign: | OK | \ No newline at end of file diff --git a/docs/models/operations/updatehubvisibilityglobals.md b/docs/models/operations/updatehubvisibilityglobals.md new file mode 100644 index 0000000..44ad522 --- /dev/null +++ b/docs/models/operations/updatehubvisibilityglobals.md @@ -0,0 +1,18 @@ +# UpdateHubVisibilityGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/updatehubvisibilityrequest.md b/docs/models/operations/updatehubvisibilityrequest.md new file mode 100644 index 0000000..6d60ef9 --- /dev/null +++ b/docs/models/operations/updatehubvisibilityrequest.md @@ -0,0 +1,23 @@ +# UpdateHubVisibilityRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *int* | :heavy_check_mark: | The section ID for the hubs to change | | +| `identifier` | *str* | :heavy_check_mark: | The identifier of the hub to change | | +| `promoted_to_recommended` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether this hub should be displayed in recommended | 1 | +| `promoted_to_own_home` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether this hub should be displayed in admin's home | 1 | +| `promoted_to_shared_home` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Whether this hub should be displayed in shared user's home | 1 | \ No newline at end of file diff --git a/docs/models/operations/updatehubvisibilityresponse.md b/docs/models/operations/updatehubvisibilityresponse.md new file mode 100644 index 0000000..83e3a67 --- /dev/null +++ b/docs/models/operations/updatehubvisibilityresponse.md @@ -0,0 +1,10 @@ +# UpdateHubVisibilityResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/updateitemartworkglobals.md b/docs/models/operations/updateitemartworkglobals.md new file mode 100644 index 0000000..6fe3a6f --- /dev/null +++ b/docs/models/operations/updateitemartworkglobals.md @@ -0,0 +1,18 @@ +# UpdateItemArtworkGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/updateitemartworkrequest.md b/docs/models/operations/updateitemartworkrequest.md new file mode 100644 index 0000000..5563d39 --- /dev/null +++ b/docs/models/operations/updateitemartworkrequest.md @@ -0,0 +1,21 @@ +# UpdateItemArtworkRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `ids` | *str* | :heavy_check_mark: | N/A | | +| `element` | [operations.PathParamElement](../../models/operations/pathparamelement.md) | :heavy_check_mark: | N/A | | +| `url` | *Optional[str]* | :heavy_minus_sign: | The url of the new asset. | | \ No newline at end of file diff --git a/docs/models/operations/updateitemartworkresponse.md b/docs/models/operations/updateitemartworkresponse.md new file mode 100644 index 0000000..d865ef7 --- /dev/null +++ b/docs/models/operations/updateitemartworkresponse.md @@ -0,0 +1,10 @@ +# UpdateItemArtworkResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/updateitemsglobals.md b/docs/models/operations/updateitemsglobals.md new file mode 100644 index 0000000..5b624f8 --- /dev/null +++ b/docs/models/operations/updateitemsglobals.md @@ -0,0 +1,18 @@ +# UpdateItemsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/updateitemsrequest.md b/docs/models/operations/updateitemsrequest.md new file mode 100644 index 0000000..c1738e5 --- /dev/null +++ b/docs/models/operations/updateitemsrequest.md @@ -0,0 +1,32 @@ +# UpdateItemsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `section_id` | *str* | :heavy_check_mark: | The id of the section | | +| `type` | *Optional[str]* | :heavy_minus_sign: | N/A | | +| `filters` | *Optional[str]* | :heavy_minus_sign: | The filters to apply to determine which items should be modified | | +| `field_value` | *Optional[str]* | :heavy_minus_sign: | Set the specified field to a new value | | +| `field_locked` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Set the specified field to locked (or unlocked if set to 0) | 1 | +| `title_value` | *Optional[str]* | :heavy_minus_sign: | This field is treated specially by albums or artists and may be used for implicit reparenting. | | +| `artist_title_value` | *Optional[str]* | :heavy_minus_sign: | Reparents set of Tracks or Albums - used with album.title.* in the case of tracks | | +| `artist_title_id` | *Optional[str]* | :heavy_minus_sign: | Reparents set of Tracks or Albums - used with album.title.* in the case of tracks | | +| `album_title_value` | *Optional[str]* | :heavy_minus_sign: | Reparents set of Tracks - Must be used in conjunction with artist.title.value or id | | +| `album_title_id` | *Optional[str]* | :heavy_minus_sign: | Reparents set of Tracks - Must be used in conjunction with artist.title.value or id | | +| `tagtype_idx_tag_tag` | *Optional[str]* | :heavy_minus_sign: | Creates tag and associates it with each item in the set. - [idx] links this and the next parameters together | | +| `tagtype_idx_tagging_object` | *Optional[str]* | :heavy_minus_sign: | Here `object` may be text/thumb/art/theme - Optionally used in conjunction with tag.tag, to update association info across the set. | | +| `tagtype_tag_tag` | *Optional[str]* | :heavy_minus_sign: | Remove comma separated tags from the set of items | | +| `tagtype_tag` | *Optional[str]* | :heavy_minus_sign: | Remove associations of this type (e.g. genre) from the set of items | | \ No newline at end of file diff --git a/docs/models/operations/updateitemsresponse.md b/docs/models/operations/updateitemsresponse.md new file mode 100644 index 0000000..8b8a68f --- /dev/null +++ b/docs/models/operations/updateitemsresponse.md @@ -0,0 +1,10 @@ +# UpdateItemsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/updateplaylistglobals.md b/docs/models/operations/updateplaylistglobals.md new file mode 100644 index 0000000..634f9fb --- /dev/null +++ b/docs/models/operations/updateplaylistglobals.md @@ -0,0 +1,18 @@ +# UpdatePlaylistGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/updateplaylistrequest.md b/docs/models/operations/updateplaylistrequest.md index d4e75c3..1576eff 100644 --- a/docs/models/operations/updateplaylistrequest.md +++ b/docs/models/operations/updateplaylistrequest.md @@ -3,8 +3,17 @@ ## Fields -| Field | Type | Required | Description | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | ----------------------------------- | -| `playlist_id` | *float* | :heavy_check_mark: | the ID of the playlist | -| `title` | *Optional[str]* | :heavy_minus_sign: | name of the playlist | -| `summary` | *Optional[str]* | :heavy_minus_sign: | summary description of the playlist | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `playlist_id` | *int* | :heavy_check_mark: | The ID of the playlist | | \ No newline at end of file diff --git a/docs/models/operations/updateplayprogressrequest.md b/docs/models/operations/updateplayprogressrequest.md deleted file mode 100644 index 66b2569..0000000 --- a/docs/models/operations/updateplayprogressrequest.md +++ /dev/null @@ -1,10 +0,0 @@ -# UpdatePlayProgressRequest - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `key` | *str* | :heavy_check_mark: | the media key | | -| `time` | *float* | :heavy_check_mark: | The time, in milliseconds, used to set the media playback progress. | 90000 | -| `state` | *str* | :heavy_check_mark: | The playback state of the media item. | played | \ No newline at end of file diff --git a/docs/models/operations/updateplayprogressresponse.md b/docs/models/operations/updateplayprogressresponse.md deleted file mode 100644 index 6a9164b..0000000 --- a/docs/models/operations/updateplayprogressresponse.md +++ /dev/null @@ -1,10 +0,0 @@ -# UpdatePlayProgressResponse - - -## Fields - -| Field | Type | Required | Description | -| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | -| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | -| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/uploadplaylistglobals.md b/docs/models/operations/uploadplaylistglobals.md new file mode 100644 index 0000000..4f4b4ff --- /dev/null +++ b/docs/models/operations/uploadplaylistglobals.md @@ -0,0 +1,18 @@ +# UploadPlaylistGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/uploadplaylistrequest.md b/docs/models/operations/uploadplaylistrequest.md index c5dd8c5..3fb9268 100644 --- a/docs/models/operations/uploadplaylistrequest.md +++ b/docs/models/operations/uploadplaylistrequest.md @@ -3,8 +3,18 @@ ## Fields -| Field | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `path` | *str* | :heavy_check_mark: | absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server.
If the `path` argument is a directory, that path will be scanned for playlist files to be processed.
Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it.
The GUID of each playlist is based on the filename.
If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it.
The GUID of each playlist is based on the filename.
| /home/barkley/playlist.m3u | -| `force` | [operations.QueryParamForce](../../models/operations/queryparamforce.md) | :heavy_check_mark: | Force overwriting of duplicate playlists.
By default, a playlist file uploaded with the same path will overwrite the existing playlist.
The `force` argument is used to disable overwriting.
If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.
| | -| `section_id` | *int* | :heavy_check_mark: | Possibly the section ID to upload the playlist to, we are not certain. | 1 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `path` | *Optional[str]* | :heavy_minus_sign: | Absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server. If the `path` argument is a directory, that path will be scanned for playlist files to be processed. Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it. The GUID of each playlist is based on the filename. If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it. The GUID of each playlist is based on the filename. | /home/barkley/playlist.m3u | +| `force` | [Optional[components.BoolInt]](../../models/components/boolint.md) | :heavy_minus_sign: | Force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist. The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded. | 1 | \ No newline at end of file diff --git a/docs/models/operations/upscale.md b/docs/models/operations/upscale.md deleted file mode 100644 index 1622f51..0000000 --- a/docs/models/operations/upscale.md +++ /dev/null @@ -1,11 +0,0 @@ -# Upscale - -allow images to be resized beyond native dimensions. - - -## Values - -| Name | Value | -| ------ | ------ | -| `ZERO` | 0 | -| `ONE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/user.md b/docs/models/operations/user.md deleted file mode 100644 index 779b16c..0000000 --- a/docs/models/operations/user.md +++ /dev/null @@ -1,27 +0,0 @@ -# User - - -## Fields - -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | User's unique ID. | 22526914 | -| `title` | *str* | :heavy_check_mark: | User's display name. | Plex User | -| `username` | *str* | :heavy_check_mark: | User's username. | zgfuc7krcqfimrmb9lsl5j | -| `email` | *str* | :heavy_check_mark: | User's email address. | zgfuc7krcqfimrmb9lsl5j@protonmail.com | -| `recommendations_playlist_id` | *OptionalNullable[str]* | :heavy_minus_sign: | ID of the user's recommendation playlist. | | -| `thumb` | *str* | :heavy_check_mark: | URL to the user's avatar image. | https://plex.tv/users/3346028014e93acd/avatar?c=1731605021 | -| `protected` | [Optional[operations.Protected]](../../models/operations/protected.md) | :heavy_minus_sign: | N/A | 1 | -| `home` | [Optional[operations.Home]](../../models/operations/home.md) | :heavy_minus_sign: | N/A | 1 | -| `allow_tuners` | [Optional[operations.AllowTuners]](../../models/operations/allowtuners.md) | :heavy_minus_sign: | N/A | 1 | -| `allow_sync` | [Optional[operations.AllowSync]](../../models/operations/allowsync.md) | :heavy_minus_sign: | N/A | 1 | -| `allow_camera_upload` | [Optional[operations.AllowCameraUpload]](../../models/operations/allowcameraupload.md) | :heavy_minus_sign: | N/A | 1 | -| `allow_channels` | [Optional[operations.AllowChannels]](../../models/operations/allowchannels.md) | :heavy_minus_sign: | N/A | 1 | -| `allow_subtitle_admin` | [Optional[operations.AllowSubtitleAdmin]](../../models/operations/allowsubtitleadmin.md) | :heavy_minus_sign: | N/A | 1 | -| `filter_all` | *OptionalNullable[str]* | :heavy_minus_sign: | Filters applied for all content. | | -| `filter_movies` | *OptionalNullable[str]* | :heavy_minus_sign: | Filters applied for movies. | | -| `filter_music` | *OptionalNullable[str]* | :heavy_minus_sign: | Filters applied for music. | | -| `filter_photos` | *OptionalNullable[str]* | :heavy_minus_sign: | Filters applied for photos. | | -| `filter_television` | *Optional[str]* | :heavy_minus_sign: | Filters applied for television. | | -| `restricted` | [Optional[operations.Restricted]](../../models/operations/restricted.md) | :heavy_minus_sign: | N/A | 1 | -| `server` | List[[operations.GetUsersServer](../../models/operations/getusersserver.md)] | :heavy_check_mark: | List of servers owned by the user. | | \ No newline at end of file diff --git a/docs/models/operations/userprofile.md b/docs/models/operations/userprofile.md deleted file mode 100644 index 2113967..0000000 --- a/docs/models/operations/userprofile.md +++ /dev/null @@ -1,15 +0,0 @@ -# UserProfile - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------ | -| `auto_select_audio` | *Optional[bool]* | :heavy_minus_sign: | If the account has automatically select audio and subtitle tracks enabled | true | -| `default_audio_language` | *Nullable[str]* | :heavy_check_mark: | The preferred audio language for the account | ja | -| `default_subtitle_language` | *Nullable[str]* | :heavy_check_mark: | The preferred subtitle language for the account | en | -| `auto_select_subtitle` | [Optional[operations.AutoSelectSubtitle]](../../models/operations/autoselectsubtitle.md) | :heavy_minus_sign: | N/A | 1 | -| `default_subtitle_accessibility` | [Optional[operations.DefaultSubtitleAccessibility]](../../models/operations/defaultsubtitleaccessibility.md) | :heavy_minus_sign: | N/A | 1 | -| `default_subtitle_forced` | [Optional[operations.DefaultSubtitleForced]](../../models/operations/defaultsubtitleforced.md) | :heavy_minus_sign: | N/A | 1 | -| `watched_indicator` | [Optional[operations.WatchedIndicator]](../../models/operations/watchedindicator.md) | :heavy_minus_sign: | N/A | 1 | -| `media_reviews_visibility` | [Optional[operations.MediaReviewsVisibility]](../../models/operations/mediareviewsvisibility.md) | :heavy_minus_sign: | N/A | 1 | \ No newline at end of file diff --git a/docs/models/operations/voicesearchhubsglobals.md b/docs/models/operations/voicesearchhubsglobals.md new file mode 100644 index 0000000..06e564f --- /dev/null +++ b/docs/models/operations/voicesearchhubsglobals.md @@ -0,0 +1,18 @@ +# VoiceSearchHubsGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/voicesearchhubsmediacontainer.md b/docs/models/operations/voicesearchhubsmediacontainer.md new file mode 100644 index 0000000..ad89268 --- /dev/null +++ b/docs/models/operations/voicesearchhubsmediacontainer.md @@ -0,0 +1,17 @@ +# VoiceSearchHubsMediaContainer + +`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. +Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) +The container often "hoists" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `identifier` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `offset` | *Optional[int]* | :heavy_minus_sign: | The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header.
| +| `size` | *Optional[int]* | :heavy_minus_sign: | N/A | +| `total_size` | *Optional[int]* | :heavy_minus_sign: | The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header.
| +| `hub` | List[[components.Hub](../../models/components/hub.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/voicesearchhubsrequest.md b/docs/models/operations/voicesearchhubsrequest.md new file mode 100644 index 0000000..f9cd9eb --- /dev/null +++ b/docs/models/operations/voicesearchhubsrequest.md @@ -0,0 +1,21 @@ +# VoiceSearchHubsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `query` | *str* | :heavy_check_mark: | The query term | | +| `type` | *Optional[int]* | :heavy_minus_sign: | The metadata type to filter by | | +| `limit` | *Optional[int]* | :heavy_minus_sign: | The number of items to return per hub. 3 if not specified | | \ No newline at end of file diff --git a/docs/models/operations/voicesearchhubsresponse.md b/docs/models/operations/voicesearchhubsresponse.md new file mode 100644 index 0000000..b08cb92 --- /dev/null +++ b/docs/models/operations/voicesearchhubsresponse.md @@ -0,0 +1,12 @@ +# VoiceSearchHubsResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | +| `object` | [Optional[operations.VoiceSearchHubsResponseBody]](../../models/operations/voicesearchhubsresponsebody.md) | :heavy_minus_sign: | OK | +| `headers` | Dict[str, List[*str*]] | :heavy_check_mark: | N/A | \ No newline at end of file diff --git a/docs/models/operations/voicesearchhubsresponsebody.md b/docs/models/operations/voicesearchhubsresponsebody.md new file mode 100644 index 0000000..e5b7796 --- /dev/null +++ b/docs/models/operations/voicesearchhubsresponsebody.md @@ -0,0 +1,10 @@ +# VoiceSearchHubsResponseBody + +OK + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `media_container` | [Optional[operations.VoiceSearchHubsMediaContainer]](../../models/operations/voicesearchhubsmediacontainer.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/docs/models/operations/watchedindicator.md b/docs/models/operations/watchedindicator.md deleted file mode 100644 index c564dca..0000000 --- a/docs/models/operations/watchedindicator.md +++ /dev/null @@ -1,11 +0,0 @@ -# WatchedIndicator - -Whether or not media watched indicators are enabled (little orange dot on media) - - -## Values - -| Name | Value | -| --------- | --------- | -| `DISABLE` | 0 | -| `ENABLE` | 1 | \ No newline at end of file diff --git a/docs/models/operations/writelogresponse.md b/docs/models/operations/writelogresponse.md new file mode 100644 index 0000000..3873635 --- /dev/null +++ b/docs/models/operations/writelogresponse.md @@ -0,0 +1,10 @@ +# WriteLogResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/writemessageglobals.md b/docs/models/operations/writemessageglobals.md new file mode 100644 index 0000000..f3472f8 --- /dev/null +++ b/docs/models/operations/writemessageglobals.md @@ -0,0 +1,18 @@ +# WriteMessageGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | ------------------------------------------------------------------ | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | \ No newline at end of file diff --git a/docs/models/operations/writemessagerequest.md b/docs/models/operations/writemessagerequest.md new file mode 100644 index 0000000..193ab90 --- /dev/null +++ b/docs/models/operations/writemessagerequest.md @@ -0,0 +1,21 @@ +# WriteMessageRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | +| `accepts` | [Optional[components.Accepts]](../../models/components/accepts.md) | :heavy_minus_sign: | Indicates the client accepts the indicated media types | | +| `client_identifier` | *Optional[str]* | :heavy_minus_sign: | An opaque identifier unique to the client | abc123 | +| `product` | *Optional[str]* | :heavy_minus_sign: | The name of the client product | Plex for Roku | +| `version` | *Optional[str]* | :heavy_minus_sign: | The version of the client application | 2.4.1 | +| `platform` | *Optional[str]* | :heavy_minus_sign: | The platform of the client | Roku | +| `platform_version` | *Optional[str]* | :heavy_minus_sign: | The version of the platform | 4.3 build 1057 | +| `device` | *Optional[str]* | :heavy_minus_sign: | A relatively friendly name for the client device | Roku 3 | +| `model` | *Optional[str]* | :heavy_minus_sign: | A potentially less friendly identifier for the device model | 4200X | +| `device_vendor` | *Optional[str]* | :heavy_minus_sign: | The device vendor | Roku | +| `device_name` | *Optional[str]* | :heavy_minus_sign: | A friendly name for the client | Living Room TV | +| `marketplace` | *Optional[str]* | :heavy_minus_sign: | The marketplace on which the client application is distributed | googlePlay | +| `level` | [Optional[operations.Level]](../../models/operations/level.md) | :heavy_minus_sign: | An integer log level to write to the PMS log with.
- 0: Error
- 1: Warning
- 2: Info
- 3: Debug
- 4: Verbose
| | +| `message` | *Optional[str]* | :heavy_minus_sign: | The text of the message to write to the log. | | +| `source` | *Optional[str]* | :heavy_minus_sign: | A string indicating the source of the message. | | \ No newline at end of file diff --git a/docs/models/operations/writemessageresponse.md b/docs/models/operations/writemessageresponse.md new file mode 100644 index 0000000..e3c6b8c --- /dev/null +++ b/docs/models/operations/writemessageresponse.md @@ -0,0 +1,10 @@ +# WriteMessageResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [httpx.Response](https://www.python-httpx.org/api/#response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/docs/models/operations/writer.md b/docs/models/operations/writer.md deleted file mode 100644 index 1bfce4a..0000000 --- a/docs/models/operations/writer.md +++ /dev/null @@ -1,12 +0,0 @@ -# Writer - - -## Fields - -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | -| `id` | *int* | :heavy_check_mark: | Unique identifier for the writer. | 126522 | -| `filter_` | *str* | :heavy_check_mark: | The filter string used to query this writer. | writer=126522 | -| `tag` | *str* | :heavy_check_mark: | The role of Writer | Jamie P. Hanson | -| `tag_key` | *Optional[str]* | :heavy_minus_sign: | A 24-character hexadecimal unique key associated with the writer’s tag, used for internal identification. | 5d77683d85719b001f3a535e | -| `thumb` | *Optional[str]* | :heavy_minus_sign: | The absolute URL of the thumbnail image for the writer. | https://metadata-static.plex.tv/8/people/8d65fa96804802e08f2de09fe014408e.jpg | \ No newline at end of file diff --git a/docs/sdks/activities/README.md b/docs/sdks/activities/README.md index fe9b512..2ca3eb2 100644 --- a/docs/sdks/activities/README.md +++ b/docs/sdks/activities/README.md @@ -3,36 +3,34 @@ ## Overview -Activities are awesome. They provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints. +Activities provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints. + Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity. -Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. Other details: -- They can contain a `progress` (from 0 to 100) marking the percent completion of the activity. -- They must contain an `type` which is used by clients to distinguish the specific activity. -- They may contain a `Context` object with attributes which associate the activity with various specific entities (items, libraries, etc.) -- The may contain a `Response` object which attributes which represent the result of the asynchronous operation. + +Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. ### Available Operations -* [get_server_activities](#get_server_activities) - Get Server Activities -* [cancel_server_activities](#cancel_server_activities) - Cancel Server Activities +* [list_activities](#list_activities) - Get all activities +* [cancel_activity](#cancel_activity) - Cancel a running activity -## get_server_activities +## list_activities -Get Server Activities +List all activities on the server. Admins can see all activities but other users can only see their own ### Example Usage - + ```python from plex_api_client import PlexAPI with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.activities.get_server_activities() + res = plex_api.activities.list_activities() assert res.object is not None @@ -49,32 +47,44 @@ with PlexAPI( ### Response -**[operations.GetServerActivitiesResponse](../../models/operations/getserveractivitiesresponse.md)** +**[operations.ListActivitiesResponse](../../models/operations/listactivitiesresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| -------------------------------------- | -------------------------------------- | -------------------------------------- | -| errors.GetServerActivitiesBadRequest | 400 | application/json | -| errors.GetServerActivitiesUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | -## cancel_server_activities +## cancel_activity -Cancel Server Activities +Cancel a running activity. Admins can cancel all activities but other users can only cancel their own ### Example Usage - + ```python from plex_api_client import PlexAPI +from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.activities.cancel_server_activities(activity_uuid="25b71ed5-0f9d-461c-baa7-d404e9e10d3e") + res = plex_api.activities.cancel_activity(request={ + "activity_id": "d6199ba1-fb5e-4cae-bf17-1a5369c1cf1e", + }) assert res is not None @@ -85,19 +95,17 @@ with PlexAPI( ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `activity_uuid` | *str* | :heavy_check_mark: | The UUID of the activity to cancel. | 25b71ed5-0f9d-461c-baa7-d404e9e10d3e | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.CancelActivityRequest](../../models/operations/cancelactivityrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.CancelServerActivitiesResponse](../../models/operations/cancelserveractivitiesresponse.md)** +**[operations.CancelActivityResponse](../../models/operations/cancelactivityresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | -| errors.CancelServerActivitiesBadRequest | 400 | application/json | -| errors.CancelServerActivitiesUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/authentication/README.md b/docs/sdks/authentication/README.md deleted file mode 100644 index 6d1317e..0000000 --- a/docs/sdks/authentication/README.md +++ /dev/null @@ -1,201 +0,0 @@ -# Authentication -(*authentication*) - -## Overview - -API Calls regarding authentication for Plex Media Server - - -### Available Operations - -* [get_transient_token](#get_transient_token) - Get a Transient Token -* [get_source_connection_information](#get_source_connection_information) - Get Source Connection Information -* [get_token_details](#get_token_details) - Get Token Details -* [post_users_sign_in_data](#post_users_sign_in_data) - Get User Sign In Data - -## get_transient_token - -This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI -from plex_api_client.models import operations - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.authentication.get_transient_token(type_=operations.GetTransientTokenQueryParamType.DELEGATION, scope=operations.Scope.ALL) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -| `type` | [operations.GetTransientTokenQueryParamType](../../models/operations/gettransienttokenqueryparamtype.md) | :heavy_check_mark: | `delegation` - This is the only supported `type` parameter. | -| `scope` | [operations.Scope](../../models/operations/scope.md) | :heavy_check_mark: | `all` - This is the only supported `scope` parameter. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetTransientTokenResponse](../../models/operations/gettransienttokenresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | -| errors.GetTransientTokenBadRequest | 400 | application/json | -| errors.GetTransientTokenUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_source_connection_information - -If a caller requires connection details and a transient token for a source that is known to the server, for example a cloud media provider or shared PMS, then this endpoint can be called. This endpoint is only accessible with either an admin token or a valid transient token generated from an admin token. -Note: requires Plex Media Server >= 1.15.4. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.authentication.get_source_connection_information(source="server://client-identifier") - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `source` | *str* | :heavy_check_mark: | The source identifier with an included prefix. | server://client-identifier | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.GetSourceConnectionInformationResponse](../../models/operations/getsourceconnectioninformationresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------- | -| errors.GetSourceConnectionInformationBadRequest | 400 | application/json | -| errors.GetSourceConnectionInformationUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_token_details - -Get the User data from the provided X-Plex-Token - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.authentication.get_token_details() - - assert res.user_plex_account is not None - - # Handle response - print(res.user_plex_account) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | -| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[operations.GetTokenDetailsResponse](../../models/operations/gettokendetailsresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | -| errors.GetTokenDetailsBadRequest | 400 | application/json | -| errors.GetTokenDetailsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## post_users_sign_in_data - -Sign in user with username and password and return user data with Plex authentication token - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI() as plex_api: - - res = plex_api.authentication.post_users_sign_in_data(request={ - "client_id": "3381b62b-9ab7-4e37-827b-203e9809eb58", - "client_name": "Plex for Roku", - "device_nickname": "Roku 3", - "client_version": "2.4.1", - "platform": "Roku", - "request_body": { - "login": "username@email.com", - "password": "password123", - "verification_code": "123456", - }, - }) - - assert res.user_plex_account is not None - - # Handle response - print(res.user_plex_account) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | -| `request` | [operations.PostUsersSignInDataRequest](../../models/operations/postuserssignindatarequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | -| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[operations.PostUsersSignInDataResponse](../../models/operations/postuserssignindataresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------------- | -------------------------------------- | -------------------------------------- | -| errors.PostUsersSignInDataBadRequest | 400 | application/json | -| errors.PostUsersSignInDataUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/butler/README.md b/docs/sdks/butler/README.md index 8711bce..28ee675 100644 --- a/docs/sdks/butler/README.md +++ b/docs/sdks/butler/README.md @@ -3,33 +3,73 @@ ## Overview -Butler is the task manager of the Plex Media Server Ecosystem. - +The butler is responsible for running periodic tasks. Some tasks run daily, others every few days, and some weekly. These includes database maintenance, metadata updating, thumbnail generation, media analysis, and other tasks. ### Available Operations -* [get_butler_tasks](#get_butler_tasks) - Get Butler tasks -* [start_all_tasks](#start_all_tasks) - Start all Butler tasks -* [stop_all_tasks](#stop_all_tasks) - Stop all Butler tasks -* [start_task](#start_task) - Start a single Butler task +* [stop_tasks](#stop_tasks) - Stop all Butler tasks +* [get_tasks](#get_tasks) - Get all Butler tasks +* [start_tasks](#start_tasks) - Start all Butler tasks * [stop_task](#stop_task) - Stop a single Butler task +* [start_task](#start_task) - Start a single Butler task -## get_butler_tasks +## stop_tasks -Returns a list of butler tasks +This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue. ### Example Usage - + ```python from plex_api_client import PlexAPI with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.butler.get_butler_tasks() + res = plex_api.butler.stop_tasks() + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.StopTasksResponse](../../models/operations/stoptasksresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_tasks + +Get the list of butler tasks and their scheduling + + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI( + token="", +) as plex_api: + + res = plex_api.butler.get_tasks() assert res.object is not None @@ -46,37 +86,36 @@ with PlexAPI( ### Response -**[operations.GetButlerTasksResponse](../../models/operations/getbutlertasksresponse.md)** +**[operations.GetTasksResponse](../../models/operations/gettasksresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.GetButlerTasksBadRequest | 400 | application/json | -| errors.GetButlerTasksUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | -## start_all_tasks +## start_tasks This endpoint will attempt to start all Butler tasks that are enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria: -1. Any tasks not scheduled to run on the current day will be skipped. -2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately. -3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window. -4. If we are outside the configured window, the task will start immediately. + + 1. Any tasks not scheduled to run on the current day will be skipped. + 2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately. + 3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window. + 4. If we are outside the configured window, the task will start immediately. ### Example Usage - + ```python from plex_api_client import PlexAPI with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.butler.start_all_tasks() + res = plex_api.butler.start_tasks() assert res is not None @@ -93,126 +132,45 @@ with PlexAPI( ### Response -**[operations.StartAllTasksResponse](../../models/operations/startalltasksresponse.md)** +**[operations.StartTasksResponse](../../models/operations/starttasksresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| -------------------------------- | -------------------------------- | -------------------------------- | -| errors.StartAllTasksBadRequest | 400 | application/json | -| errors.StartAllTasksUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## stop_all_tasks - -This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.butler.stop_all_tasks() - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.StopAllTasksResponse](../../models/operations/stopalltasksresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------- | ------------------------------- | ------------------------------- | -| errors.StopAllTasksBadRequest | 400 | application/json | -| errors.StopAllTasksUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## start_task - -This endpoint will attempt to start a single Butler task that is enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria: -1. Any tasks not scheduled to run on the current day will be skipped. -2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately. -3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window. -4. If we are outside the configured window, the task will start immediately. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI -from plex_api_client.models import operations - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.butler.start_task(task_name=operations.TaskName.REFRESH_PERIODIC_METADATA) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `task_name` | [operations.TaskName](../../models/operations/taskname.md) | :heavy_check_mark: | the name of the task to be started. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.StartTaskResponse](../../models/operations/starttaskresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------- | ---------------------------- | ---------------------------- | -| errors.StartTaskBadRequest | 400 | application/json | -| errors.StartTaskUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | ## stop_task -This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists. See the section above for a list of task names for this endpoint. +This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists ### Example Usage - + ```python from plex_api_client import PlexAPI -from plex_api_client.models import operations +from plex_api_client.models import components, operations with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.butler.stop_task(task_name=operations.PathParamTaskName.CLEAN_OLD_CACHE_FILES) + res = plex_api.butler.stop_task(request={ + "task": operations.Task.CLEAN_OLD_BUNDLES, + }) assert res is not None @@ -223,10 +181,10 @@ with PlexAPI( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `task_name` | [operations.PathParamTaskName](../../models/operations/pathparamtaskname.md) | :heavy_check_mark: | The name of the task to be started. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `request` | [operations.StopTaskRequest](../../models/operations/stoptaskrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response @@ -234,8 +192,62 @@ with PlexAPI( ### Errors -| Error Type | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.StopTaskBadRequest | 400 | application/json | -| errors.StopTaskUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## start_task + +This endpoint will attempt to start a specific Butler task by name. + + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.butler.start_task(request={ + "task": operations.PathParamTask.REFRESH_LOCAL_MEDIA, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.StartTaskRequest](../../models/operations/starttaskrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.StartTaskResponse](../../models/operations/starttaskresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/collections/README.md b/docs/sdks/collections/README.md new file mode 100644 index 0000000..91571af --- /dev/null +++ b/docs/sdks/collections/README.md @@ -0,0 +1,65 @@ +# Collections +(*collections*) + +## Overview + +API Operations against the Collections + +### Available Operations + +* [create_collection](#create_collection) - Create collection + +## create_collection + +Create a collection in the library + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.collections.create_collection(request={ + "section_id": "", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.CreateCollectionRequest](../../models/operations/createcollectionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.CreateCollectionResponse](../../models/operations/createcollectionresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/content/README.md b/docs/sdks/content/README.md new file mode 100644 index 0000000..ebd4fa3 --- /dev/null +++ b/docs/sdks/content/README.md @@ -0,0 +1,749 @@ +# Content +(*content*) + +## Overview + +The actual content of the media provider + +### Available Operations + +* [get_collection_items](#get_collection_items) - Get items in a collection +* [get_metadata_item](#get_metadata_item) - Get a metadata item +* [get_albums](#get_albums) - Set section albums +* [list_content](#list_content) - Get items in the section +* [get_all_leaves](#get_all_leaves) - Set section leaves +* [get_arts](#get_arts) - Set section artwork +* [get_categories](#get_categories) - Set section categories +* [get_cluster](#get_cluster) - Set section clusters +* [get_sonic_path](#get_sonic_path) - Similar tracks to transition from one to another +* [get_folders](#get_folders) - Get all folder locations +* [list_moments](#list_moments) - Set section moments +* [get_sonically_similar](#get_sonically_similar) - The nearest audio tracks +* [get_collection_image](#get_collection_image) - Get a collection's image + +## get_collection_items + +Get items in a collection. Note if this collection contains more than 100 items, paging must be used. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.content.get_collection_items(request={ + "collection_id": 314585, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `request` | [operations.GetCollectionItemsRequest](../../models/operations/getcollectionitemsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetCollectionItemsResponse](../../models/operations/getcollectionitemsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_metadata_item + +Get one or more metadata items. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.content.get_metadata_item(request=operations.GetMetadataItemRequest( + ids=[], + async_check_files=components.BoolInt.ONE, + async_refresh_local_media_agent=components.BoolInt.ONE, + async_refresh_analysis=components.BoolInt.ONE, + check_files=components.BoolInt.ONE, + skip_refresh=components.BoolInt.ONE, + check_file_availability=components.BoolInt.ONE, + async_augment_metadata=components.BoolInt.ONE, + augment_count=components.BoolInt.ONE, + )) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.GetMetadataItemRequest](../../models/operations/getmetadataitemrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetMetadataItemResponse](../../models/operations/getmetadataitemresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_albums + +Get all albums in a music section + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.content.get_albums(request={ + "section_id": 817133, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.GetAlbumsRequest](../../models/operations/getalbumsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetAlbumsResponse](../../models/operations/getalbumsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## list_content + +Get the items in a section, potentially filtering them + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.content.list_content(request={ + "section_id": "", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `request` | [operations.ListContentRequest](../../models/operations/listcontentrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ListContentResponse](../../models/operations/listcontentresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_all_leaves + +Get all leaves in a section (such as episodes in a show section) + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.content.get_all_leaves(request={ + "section_id": 633197, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.GetAllLeavesRequest](../../models/operations/getallleavesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetAllLeavesResponse](../../models/operations/getallleavesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_arts + +Get artwork for a library section + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.content.get_arts(request={ + "section_id": 859200, + }) + + assert res.media_container_with_artwork is not None + + # Handle response + print(res.media_container_with_artwork) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `request` | [operations.GetArtsRequest](../../models/operations/getartsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetArtsResponse](../../models/operations/getartsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_categories + +Get categories in a library section + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.content.get_categories(request={ + "section_id": 21841, + }) + + assert res.media_container_with_artwork is not None + + # Handle response + print(res.media_container_with_artwork) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `request` | [operations.GetCategoriesRequest](../../models/operations/getcategoriesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetCategoriesResponse](../../models/operations/getcategoriesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_cluster + +Get clusters in a library section (typically for photos) + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.content.get_cluster(request={ + "section_id": 138560, + }) + + assert res.media_container_with_artwork is not None + + # Handle response + print(res.media_container_with_artwork) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `request` | [operations.GetClusterRequest](../../models/operations/getclusterrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetClusterResponse](../../models/operations/getclusterresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_sonic_path + +Get a list of audio tracks starting at one and ending at another which are similar across the path + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.content.get_sonic_path(request={ + "section_id": 914549, + "start_id": 629990, + "end_id": 687740, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.GetSonicPathRequest](../../models/operations/getsonicpathrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetSonicPathResponse](../../models/operations/getsonicpathresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_folders + +Get all folder locations of the media in a section + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.content.get_folders(request={ + "section_id": 892532, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `request` | [operations.GetFoldersRequest](../../models/operations/getfoldersrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetFoldersResponse](../../models/operations/getfoldersresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## list_moments + +Get moments in a library section (typically for photos) + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.content.list_moments(request={ + "section_id": 403239, + }) + + assert res.media_container_with_artwork is not None + + # Handle response + print(res.media_container_with_artwork) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `request` | [operations.ListMomentsRequest](../../models/operations/listmomentsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ListMomentsResponse](../../models/operations/listmomentsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_sonically_similar + +Get the nearest audio tracks to a particular analysis + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.content.get_sonically_similar(request={ + "section_id": 525956, + "values": [], + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `request` | [operations.GetSonicallySimilarRequest](../../models/operations/getsonicallysimilarrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetSonicallySimilarResponse](../../models/operations/getsonicallysimilarresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_collection_image + +Get an image for the collection based on the items within + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.content.get_collection_image(request={ + "collection_id": 474227, + "updated_at": 759379, + }) + + assert res.response_stream is not None + + # Handle response + print(res.response_stream) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `request` | [operations.GetCollectionImageRequest](../../models/operations/getcollectionimagerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetCollectionImageResponse](../../models/operations/getcollectionimageresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/devices/README.md b/docs/sdks/devices/README.md new file mode 100644 index 0000000..7b70875 --- /dev/null +++ b/docs/sdks/devices/README.md @@ -0,0 +1,762 @@ +# Devices +(*devices*) + +## Overview + +Media grabbers provide ways for media to be obtained for a given protocol. The simplest ones are `stream` and `download`. More complex grabbers can have associated devices + +Network tuners can present themselves on the network using the Simple Service Discovery Protocol and Plex Media Server will discover them. The following XML is an example of the data returned from SSDP. The `deviceType`, `serviceType`, and `serviceId` values must remain as they are in the example in order for PMS to properly discover the device. Other less-obvious fields are described in the parameters section below. + +Example SSDP output +``` + + + 1 + 0 + + + urn:plex-tv:device:Media:1 + Turing Hopper 3000 + Plex, Inc. + https://plex.tv/ + Turing Hopper 3000 Media Grabber + Plex Media Grabber + 1 + https://plex.tv + uuid:42fde8e4-93b6-41e5-8a63-12d848655811 + + + http://10.0.0.5:8088 + urn:plex-tv:service:MediaGrabber:1 + urn:plex-tv:serviceId:MediaGrabber + + + + +``` + + - UDN: (string) A UUID for the device. This should be unique across models of a device at minimum. + - URLBase: (string) The base HTTP URL for the device from which all of the other endpoints are hosted. + + +### Available Operations + +* [get_available_grabbers](#get_available_grabbers) - Get available grabbers +* [list_devices](#list_devices) - Get all devices +* [add_device](#add_device) - Add a device +* [discover_devices](#discover_devices) - Tell grabbers to discover devices +* [remove_device](#remove_device) - Remove a device +* [get_device_details](#get_device_details) - Get device details +* [modify_device](#modify_device) - Enable or disable a device +* [set_channelmap](#set_channelmap) - Set a device's channel mapping +* [get_devices_channels](#get_devices_channels) - Get a device's channels +* [set_device_preferences](#set_device_preferences) - Set device preferences +* [stop_scan](#stop_scan) - Tell a device to stop scanning for channels +* [scan](#scan) - Tell a device to scan for channels +* [get_thumb](#get_thumb) - Get device thumb + +## get_available_grabbers + +Get available grabbers visible to the server + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.devices.get_available_grabbers(request={ + "protocol": "livetv", + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetAvailableGrabbersRequest](../../models/operations/getavailablegrabbersrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetAvailableGrabbersResponse](../../models/operations/getavailablegrabbersresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## list_devices + +Get the list of all devices present + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI( + token="", +) as plex_api: + + res = plex_api.devices.list_devices() + + assert res.media_container_with_device is not None + + # Handle response + print(res.media_container_with_device) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ListDevicesResponse](../../models/operations/listdevicesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## add_device + +This endpoint adds a device to an existing grabber. The device is identified, and added to the correct grabber. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.devices.add_device(request={ + "uri": "http://10.0.0.5", + }) + + assert res.media_container_with_device is not None + + # Handle response + print(res.media_container_with_device) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.AddDeviceRequest](../../models/operations/adddevicerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.AddDeviceResponse](../../models/operations/adddeviceresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## discover_devices + +Tell grabbers to discover devices + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI( + token="", +) as plex_api: + + res = plex_api.devices.discover_devices() + + assert res.media_container_with_device is not None + + # Handle response + print(res.media_container_with_device) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DiscoverDevicesResponse](../../models/operations/discoverdevicesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## remove_device + +Remove a devices by its id along with its channel mappings + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.devices.remove_device(request={ + "device_id": 685908, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.RemoveDeviceRequest](../../models/operations/removedevicerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.RemoveDeviceResponse](../../models/operations/removedeviceresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_device_details + +Get a device's details by its id + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.devices.get_device_details(request={ + "device_id": 170949, + }) + + assert res.media_container_with_device is not None + + # Handle response + print(res.media_container_with_device) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.GetDeviceDetailsRequest](../../models/operations/getdevicedetailsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetDeviceDetailsResponse](../../models/operations/getdevicedetailsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## modify_device + +Enable or disable a device by its id + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.devices.modify_device(request={ + "device_id": 879135, + "enabled": components.BoolInt.ONE, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.ModifyDeviceRequest](../../models/operations/modifydevicerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ModifyDeviceResponse](../../models/operations/modifydeviceresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## set_channelmap + +Set a device's channel mapping + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.devices.set_channelmap(request={ + "device_id": 937661, + "channel_mapping": {}, + "channel_mapping_by_key": {}, + "channels_enabled": [ + "4", + "6", + ".", + "1", + ",", + "4", + "4", + ".", + "1", + ",", + "4", + "5", + ".", + "1", + ], + }) + + assert res.media_container_with_device is not None + + # Handle response + print(res.media_container_with_device) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `request` | [operations.SetChannelmapRequest](../../models/operations/setchannelmaprequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.SetChannelmapResponse](../../models/operations/setchannelmapresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_devices_channels + +Get a device's channels by its id + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.devices.get_devices_channels(request={ + "device_id": 517209, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `request` | [operations.GetDevicesChannelsRequest](../../models/operations/getdeviceschannelsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetDevicesChannelsResponse](../../models/operations/getdeviceschannelsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## set_device_preferences + +Set device preferences by its id + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.devices.set_device_preferences(request={ + "device_id": 420973, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `request` | [operations.SetDevicePreferencesRequest](../../models/operations/setdevicepreferencesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.SetDevicePreferencesResponse](../../models/operations/setdevicepreferencesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## stop_scan + +Tell a device to stop scanning for channels + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.devices.stop_scan(request={ + "device_id": 576494, + }) + + assert res.media_container_with_device is not None + + # Handle response + print(res.media_container_with_device) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `request` | [operations.StopScanRequest](../../models/operations/stopscanrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.StopScanResponse](../../models/operations/stopscanresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## scan + +Tell a device to scan for channels + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.devices.scan(request={ + "device_id": 57391, + "source": "Cable", + }) + + assert res.media_container_with_device is not None + + # Handle response + print(res.media_container_with_device) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [operations.ScanRequest](../../models/operations/scanrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ScanResponse](../../models/operations/scanresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_thumb + +Get a device's thumb for display to the user + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.devices.get_thumb(request={ + "device_id": 960617, + "version_path_parameter": 1025, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `request` | [operations.GetThumbRequest](../../models/operations/getthumbrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetThumbResponse](../../models/operations/getthumbresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/downloadqueue/README.md b/docs/sdks/downloadqueue/README.md new file mode 100644 index 0000000..86a2c00 --- /dev/null +++ b/docs/sdks/downloadqueue/README.md @@ -0,0 +1,568 @@ +# DownloadQueue +(*download_queue*) + +## Overview + +API Operations against the Download Queue + +### Available Operations + +* [create_download_queue](#create_download_queue) - Create download queue +* [get_download_queue](#get_download_queue) - Get a download queue +* [add_download_queue_items](#add_download_queue_items) - Add to download queue +* [list_download_queue_items](#list_download_queue_items) - Get download queue items +* [get_item_decision](#get_item_decision) - Grab download queue item decision +* [get_download_queue_media](#get_download_queue_media) - Grab download queue media +* [remove_download_queue_items](#remove_download_queue_items) - Delete download queue items +* [get_download_queue_items](#get_download_queue_items) - Get download queue items +* [restart_processing_download_queue_items](#restart_processing_download_queue_items) - Restart processing of items from the decision + +## create_download_queue + +Available: 0.2.0 + +Creates a download queue for this client if one doesn't exist, or returns the existing queue for this client and user. + + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI( + token="", +) as plex_api: + + res = plex_api.download_queue.create_download_queue() + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.CreateDownloadQueueResponse](../../models/operations/createdownloadqueueresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_download_queue + +Available: 0.2.0 + +Get a download queue by its id + + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.download_queue.get_download_queue(request={ + "queue_id": 922802, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.GetDownloadQueueRequest](../../models/operations/getdownloadqueuerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetDownloadQueueResponse](../../models/operations/getdownloadqueueresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## add_download_queue_items + +Available: 0.2.0 + +Add items to the download queue + + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.download_queue.add_download_queue_items(request=operations.AddDownloadQueueItemsRequest( + queue_id=984925, + keys=[ + "/library/metadata/3", + "/library/metadata/6", + ], + advanced_subtitles=components.AdvancedSubtitles.BURN, + audio_boost=50, + audio_channel_count=5, + auto_adjust_quality=components.BoolInt.ONE, + auto_adjust_subtitle=components.BoolInt.ONE, + direct_play=components.BoolInt.ONE, + direct_stream=components.BoolInt.ONE, + direct_stream_audio=components.BoolInt.ONE, + disable_resolution_rotation=components.BoolInt.ONE, + has_mde=components.BoolInt.ONE, + location=components.Location.WAN, + media_buffer_size=102400, + media_index=0, + music_bitrate=5000, + offset=90.5, + part_index=0, + path="/library/metadata/151671", + peak_bitrate=12000, + photo_resolution="1080x1080", + protocol=components.Protocol.DASH, + seconds_per_segment=5, + subtitle_size=50, + video_bitrate=12000, + video_quality=50, + video_resolution="1080x1080", + )) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `request` | [operations.AddDownloadQueueItemsRequest](../../models/operations/adddownloadqueueitemsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.AddDownloadQueueItemsResponse](../../models/operations/adddownloadqueueitemsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## list_download_queue_items + +Available: 0.2.0 + +Get items from a download queue + + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.download_queue.list_download_queue_items(request={ + "queue_id": 524138, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `request` | [operations.ListDownloadQueueItemsRequest](../../models/operations/listdownloadqueueitemsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ListDownloadQueueItemsResponse](../../models/operations/listdownloadqueueitemsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_item_decision + +Available: 0.2.0 + +Grab the decision for a download queue item + + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.download_queue.get_item_decision(request={ + "queue_id": 231605, + "item_id": 32, + }) + + assert res.media_container_with_decision is not None + + # Handle response + print(res.media_container_with_decision) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.GetItemDecisionRequest](../../models/operations/getitemdecisionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetItemDecisionResponse](../../models/operations/getitemdecisionresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_download_queue_media + +Available: 0.2.0 + +Grab the media for a download queue item + + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.download_queue.get_download_queue_media(request={ + "queue_id": 663184, + "item_id": 32, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `request` | [operations.GetDownloadQueueMediaRequest](../../models/operations/getdownloadqueuemediarequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetDownloadQueueMediaResponse](../../models/operations/getdownloadqueuemediaresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## remove_download_queue_items + +delete items from a download queue + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.download_queue.remove_download_queue_items(request={ + "queue_id": 946275, + "item_id": [ + 32, + 345, + 23, + ], + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `request` | [operations.RemoveDownloadQueueItemsRequest](../../models/operations/removedownloadqueueitemsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.RemoveDownloadQueueItemsResponse](../../models/operations/removedownloadqueueitemsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_download_queue_items + +Available: 0.2.0 + +Get items from a download queue + + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.download_queue.get_download_queue_items(request={ + "queue_id": 809886, + "item_id": [ + 32, + 345, + 23, + ], + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `request` | [operations.GetDownloadQueueItemsRequest](../../models/operations/getdownloadqueueitemsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetDownloadQueueItemsResponse](../../models/operations/getdownloadqueueitemsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## restart_processing_download_queue_items + +Available: 0.2.0 + +Reprocess download queue items with previous decision parameters + + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.download_queue.restart_processing_download_queue_items(request={ + "queue_id": 713001, + "item_id": [ + 32, + 345, + 23, + ], + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------ | +| `request` | [operations.RestartProcessingDownloadQueueItemsRequest](../../models/operations/restartprocessingdownloadqueueitemsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.RestartProcessingDownloadQueueItemsResponse](../../models/operations/restartprocessingdownloadqueueitemsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/dvrs/README.md b/docs/sdks/dvrs/README.md new file mode 100644 index 0000000..af51523 --- /dev/null +++ b/docs/sdks/dvrs/README.md @@ -0,0 +1,728 @@ +# DVRs +(*dv_rs*) + +## Overview + +The DVR provides means to watch and record live TV. This section of endpoints describes how to setup the DVR itself + + +### Available Operations + +* [list_dv_rs](#list_dv_rs) - Get DVRs +* [create_dvr](#create_dvr) - Create a DVR +* [delete_dvr](#delete_dvr) - Delete a single DVR +* [get_dvr](#get_dvr) - Get a single DVR +* [delete_lineup](#delete_lineup) - Delete a DVR Lineup +* [add_lineup](#add_lineup) - Add a DVR Lineup +* [set_dvr_preferences](#set_dvr_preferences) - Set DVR preferences +* [stop_dvr_reload](#stop_dvr_reload) - Tell a DVR to stop reloading program guide +* [reload_guide](#reload_guide) - Tell a DVR to reload program guide +* [tune_channel](#tune_channel) - Tune a channel on a DVR +* [remove_device_from_dvr](#remove_device_from_dvr) - Remove a device from an existing DVR +* [add_device_to_dvr](#add_device_to_dvr) - Add a device to an existing DVR + +## list_dv_rs + +Get the list of all available DVRs + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI( + token="", +) as plex_api: + + res = plex_api.dv_rs.list_dv_rs() + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ListDVRsResponse](../../models/operations/listdvrsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## create_dvr + +Creation of a DVR, after creation of a devcie and a lineup is selected + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.dv_rs.create_dvr(request={ + "lineup": "lineup://tv.plex.providers.epg.onconnect/USA-HI51418-DEFAULT", + "device_query_parameter": [ + "d", + "e", + "v", + "i", + "c", + "e", + "[", + "]", + "=", + "d", + "e", + "v", + "i", + "c", + "e", + ":", + "/", + "/", + "t", + "v", + ".", + "p", + "l", + "e", + "x", + ".", + "g", + "r", + "a", + "b", + "b", + "e", + "r", + "s", + ".", + "h", + "d", + "h", + "o", + "m", + "e", + "r", + "u", + "n", + "/", + "1", + "0", + "5", + "3", + "C", + "0", + "C", + "A", + ], + "language": "eng", + }) + + assert res.dvr_request_handler_slash_get_responses_200 is not None + + # Handle response + print(res.dvr_request_handler_slash_get_responses_200) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.CreateDVRRequest](../../models/operations/createdvrrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.CreateDVRResponse](../../models/operations/createdvrresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_dvr + +Delete a single DVR by its id (key) + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.dv_rs.delete_dvr(request={ + "dvr_id": 855088, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.DeleteDVRRequest](../../models/operations/deletedvrrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeleteDVRResponse](../../models/operations/deletedvrresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_dvr + +Get a single DVR by its id (key) + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.dv_rs.get_dvr(request={ + "dvr_id": 973518, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `request` | [operations.GetDVRRequest](../../models/operations/getdvrrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetDVRResponse](../../models/operations/getdvrresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_lineup + +Deletes a DVR device's lineup. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.dv_rs.delete_lineup(request={ + "dvr_id": 454470, + "lineup": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.DeleteLineupRequest](../../models/operations/deletelineuprequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeleteLineupResponse](../../models/operations/deletelineupresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## add_lineup + +Add a lineup to a DVR device's set of lineups. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.dv_rs.add_lineup(request={ + "dvr_id": 945235, + "lineup": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.AddLineupRequest](../../models/operations/addlineuprequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.AddLineupResponse](../../models/operations/addlineupresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## set_dvr_preferences + +Set DVR preferences by name avd value + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.dv_rs.set_dvr_preferences(request={ + "dvr_id": 116357, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `request` | [operations.SetDVRPreferencesRequest](../../models/operations/setdvrpreferencesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.SetDVRPreferencesResponse](../../models/operations/setdvrpreferencesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## stop_dvr_reload + +Tell a DVR to stop reloading program guide + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.dv_rs.stop_dvr_reload(request={ + "dvr_id": 348053, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `request` | [operations.StopDVRReloadRequest](../../models/operations/stopdvrreloadrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.StopDVRReloadResponse](../../models/operations/stopdvrreloadresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## reload_guide + +Tell a DVR to reload program guide + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.dv_rs.reload_guide(request={ + "dvr_id": 140753, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `request` | [operations.ReloadGuideRequest](../../models/operations/reloadguiderequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ReloadGuideResponse](../../models/operations/reloadguideresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## tune_channel + +Tune a channel on a DVR to the provided channel + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.dv_rs.tune_channel(request={ + "dvr_id": 834281, + "channel": "2.1", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `request` | [operations.TuneChannelRequest](../../models/operations/tunechannelrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.TuneChannelResponse](../../models/operations/tunechannelresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## remove_device_from_dvr + +Remove a device from an existing DVR + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.dv_rs.remove_device_from_dvr(request={ + "dvr_id": 945416, + "device_id": 260761, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `request` | [operations.RemoveDeviceFromDVRRequest](../../models/operations/removedevicefromdvrrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.RemoveDeviceFromDVRResponse](../../models/operations/removedevicefromdvrresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## add_device_to_dvr + +Add a device to an existing DVR + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.dv_rs.add_device_to_dvr(request={ + "dvr_id": 334755, + "device_id": 852930, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.AddDeviceToDVRRequest](../../models/operations/adddevicetodvrrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.AddDeviceToDVRResponse](../../models/operations/adddevicetodvrresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/epg/README.md b/docs/sdks/epg/README.md new file mode 100644 index 0000000..78b8d05 --- /dev/null +++ b/docs/sdks/epg/README.md @@ -0,0 +1,493 @@ +# Epg +(*epg*) + +## Overview + +The EPG (Electronic Program Guide) is responsible for obtaining metadata for what is airing on each channel and when + + +### Available Operations + +* [compute_channel_map](#compute_channel_map) - Compute the best channel map +* [get_channels](#get_channels) - Get channels for a lineup +* [get_countries](#get_countries) - Get all countries +* [get_all_languages](#get_all_languages) - Get all languages +* [get_lineup](#get_lineup) - Compute the best lineup +* [get_lineup_channels](#get_lineup_channels) - Get the channels for mulitple lineups +* [get_countries_lineups](#get_countries_lineups) - Get lineups for a country via postal code +* [get_country_regions](#get_country_regions) - Get regions for a country +* [list_lineups](#list_lineups) - Get lineups for a region + +## compute_channel_map + +Compute the best channel map, given device and lineup + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.epg.compute_channel_map(request={ + "device_query_parameter": "", + "lineup": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `request` | [operations.ComputeChannelMapRequest](../../models/operations/computechannelmaprequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ComputeChannelMapResponse](../../models/operations/computechannelmapresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_channels + +Get channels for a lineup within an EPG provider + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.epg.get_channels(request={ + "lineup": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `request` | [operations.GetChannelsRequest](../../models/operations/getchannelsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetChannelsResponse](../../models/operations/getchannelsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_countries + +This endpoint returns a list of countries which EPG data is available for. There are three flavors, as specfied by the `flavor` attribute + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI( + token="", +) as plex_api: + + res = plex_api.epg.get_countries() + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetCountriesResponse](../../models/operations/getcountriesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_all_languages + +Returns a list of all possible languages for EPG data. + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI( + token="", +) as plex_api: + + res = plex_api.epg.get_all_languages() + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetAllLanguagesResponse](../../models/operations/getalllanguagesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_lineup + +Compute the best lineup, given lineup group and device + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.epg.get_lineup(request={ + "device_query_parameter": "", + "lineup_group": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.GetLineupRequest](../../models/operations/getlineuprequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetLineupResponse](../../models/operations/getlineupresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_lineup_channels + +Get the channels across multiple lineups + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.epg.get_lineup_channels(request={ + "lineup": [ + "", + "", + ], + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `request` | [operations.GetLineupChannelsRequest](../../models/operations/getlineupchannelsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetLineupChannelsResponse](../../models/operations/getlineupchannelsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_countries_lineups + +Returns a list of lineups for a given country, EPG provider and postal code + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.epg.get_countries_lineups(request={ + "country": "Malawi", + "epg_id": "", + }) + + assert res.media_container_with_lineup is not None + + # Handle response + print(res.media_container_with_lineup) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `request` | [operations.GetCountriesLineupsRequest](../../models/operations/getcountrieslineupsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetCountriesLineupsResponse](../../models/operations/getcountrieslineupsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_country_regions + +Get regions for a country within an EPG provider + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.epg.get_country_regions(request={ + "country": "Morocco", + "epg_id": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `request` | [operations.GetCountryRegionsRequest](../../models/operations/getcountryregionsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetCountryRegionsResponse](../../models/operations/getcountryregionsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## list_lineups + +Get lineups for a region within an EPG provider + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.epg.list_lineups(request={ + "country": "Vanuatu", + "epg_id": "", + "region": "", + }) + + assert res.media_container_with_lineup is not None + + # Handle response + print(res.media_container_with_lineup) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `request` | [operations.ListLineupsRequest](../../models/operations/listlineupsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ListLineupsResponse](../../models/operations/listlineupsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/events/README.md b/docs/sdks/events/README.md new file mode 100644 index 0000000..e30057e --- /dev/null +++ b/docs/sdks/events/README.md @@ -0,0 +1,120 @@ +# Events +(*events*) + +## Overview + +The server can notify clients in real-time of a wide range of events, from library scanning, to preferences being modified, to changes to media, and many other things. This is also the mechanism by which activity progress is reported. + +Two protocols for receiving the events are available: EventSource (also known as SSE), and WebSocket. + + +### Available Operations + +* [get_notifications](#get_notifications) - Connect to Eventsource +* [connect_web_socket](#connect_web_socket) - Connect to WebSocket + +## get_notifications + +Connect to the event source to get a stream of events + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.events.get_notifications(request={}) + + assert res.response_stream is not None + + # Handle response + print(res.response_stream) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.GetNotificationsRequest](../../models/operations/getnotificationsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetNotificationsResponse](../../models/operations/getnotificationsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## connect_web_socket + +Connect to the web socket to get a stream of events + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.events.connect_web_socket(request={}) + + assert res.response_stream is not None + + # Handle response + print(res.response_stream) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.ConnectWebSocketRequest](../../models/operations/connectwebsocketrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ConnectWebSocketResponse](../../models/operations/connectwebsocketresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/general/README.md b/docs/sdks/general/README.md new file mode 100644 index 0000000..ca65768 --- /dev/null +++ b/docs/sdks/general/README.md @@ -0,0 +1,217 @@ +# General +(*general*) + +## Overview + +General endpoints for basic PMS operation not specific to any media provider + +### Available Operations + +* [get_server_info](#get_server_info) - Get PMS info +* [get_identity](#get_identity) - Get PMS identity +* [get_source_connection_information](#get_source_connection_information) - Get Source Connection Information +* [get_transient_token](#get_transient_token) - Get Transient Tokens + +## get_server_info + +Information about this PMS setup and configuration + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.general.get_server_info(request={}) + + assert res.media_container_with_directory is not None + + # Handle response + print(res.media_container_with_directory) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `request` | [operations.GetServerInfoRequest](../../models/operations/getserverinforequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetServerInfoResponse](../../models/operations/getserverinforesponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_identity + +Get details about this PMS's identity + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI() as plex_api: + + res = plex_api.general.get_identity() + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetIdentityResponse](../../models/operations/getidentityresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_source_connection_information + +If a caller requires connection details and a transient token for a source that is known to the server, for example a cloud media provider or shared PMS, then this endpoint can be called. This endpoint is only accessible with either an admin token or a valid transient token generated from an admin token. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.general.get_source_connection_information(request={ + "source": "server://client-identifier", + "refresh": components.BoolInt.ONE, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `request` | [operations.GetSourceConnectionInformationRequest](../../models/operations/getsourceconnectioninformationrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetSourceConnectionInformationResponse](../../models/operations/getsourceconnectioninformationresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_transient_token + +This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted. +Note: This endpoint responds to all HTTP verbs but POST in preferred + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.general.get_transient_token(request={ + "type": operations.QueryParamType.DELEGATION, + "scope": operations.Scope.ALL, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `request` | [operations.GetTransientTokenRequest](../../models/operations/gettransienttokenrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetTransientTokenResponse](../../models/operations/gettransienttokenresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/hubs/README.md b/docs/sdks/hubs/README.md index 32ab977..20e936d 100644 --- a/docs/sdks/hubs/README.md +++ b/docs/sdks/hubs/README.md @@ -3,81 +3,54 @@ ## Overview -Hubs are a structured two-dimensional container for media, generally represented by multiple horizontal rows. - +The hubs within a media provider ### Available Operations -* [get_global_hubs](#get_global_hubs) - Get Global Hubs -* [get_recently_added](#get_recently_added) - Get Recently Added -* [get_library_hubs](#get_library_hubs) - Get library specific hubs +* [get_all_hubs](#get_all_hubs) - Get global hubs +* [get_continue_watching](#get_continue_watching) - Get the continue watching hub +* [get_hub_items](#get_hub_items) - Get a hub's items +* [get_promoted_hubs](#get_promoted_hubs) - Get the hubs which are promoted +* [get_metadata_hubs](#get_metadata_hubs) - Get hubs for section by metadata item +* [get_postplay_hubs](#get_postplay_hubs) - Get postplay hubs +* [get_related_hubs](#get_related_hubs) - Get related hubs +* [get_section_hubs](#get_section_hubs) - Get section hubs +* [reset_section_defaults](#reset_section_defaults) - Reset hubs to defaults +* [list_hubs](#list_hubs) - Get hubs +* [create_custom_hub](#create_custom_hub) - Create a custom hub +* [move_hub](#move_hub) - Move Hub +* [delete_custom_hub](#delete_custom_hub) - Delete a custom hub +* [update_hub_visibility](#update_hub_visibility) - Change hub visibility -## get_global_hubs +## get_all_hubs -Get Global Hubs filtered by the parameters provided. +Get the global hubs in this PMS ### Example Usage - + ```python from plex_api_client import PlexAPI +from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.hubs.get_global_hubs() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| `count` | *Optional[float]* | :heavy_minus_sign: | The number of items to return with each hub. | -| `only_transient` | [Optional[operations.OnlyTransient]](../../models/operations/onlytransient.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetGlobalHubsResponse](../../models/operations/getglobalhubsresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------- | -------------------------------- | -------------------------------- | -| errors.GetGlobalHubsBadRequest | 400 | application/json | -| errors.GetGlobalHubsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_recently_added - -This endpoint will return the recently added content. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI -from plex_api_client.models import operations - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.hubs.get_recently_added(request={ - "content_directory_id": 39486, - "section_id": 2, - "type": operations.Type.TV_SHOW, - "include_meta": operations.IncludeMeta.ENABLE, + res = plex_api.hubs.get_all_hubs(request={ + "only_transient": components.BoolInt.ONE, }) assert res.object is not None @@ -89,14 +62,14 @@ with PlexAPI( ### Parameters -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `request` | [operations.GetRecentlyAddedRequest](../../models/operations/getrecentlyaddedrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `request` | [operations.GetAllHubsRequest](../../models/operations/getallhubsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.GetRecentlyAddedResponse](../../models/operations/getrecentlyaddedresponse.md)** +**[operations.GetAllHubsResponse](../../models/operations/getallhubsresponse.md)** ### Errors @@ -104,23 +77,34 @@ with PlexAPI( | --------------- | --------------- | --------------- | | errors.SDKError | 4XX, 5XX | \*/\* | -## get_library_hubs - -This endpoint will return a list of library specific hubs +## get_continue_watching +Get the global continue watching hub ### Example Usage - + ```python from plex_api_client import PlexAPI +from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.hubs.get_library_hubs(section_id=492.74) + res = plex_api.hubs.get_continue_watching(request={}) assert res.object is not None @@ -131,21 +115,693 @@ with PlexAPI( ### Parameters -| Parameter | Type | Required | Description | -| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| `section_id` | *float* | :heavy_check_mark: | the Id of the library to query | -| `count` | *Optional[float]* | :heavy_minus_sign: | The number of items to return with each hub. | -| `only_transient` | [Optional[operations.QueryParamOnlyTransient]](../../models/operations/queryparamonlytransient.md) | :heavy_minus_sign: | Only return hubs which are "transient", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `request` | [operations.GetContinueWatchingRequest](../../models/operations/getcontinuewatchingrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.GetLibraryHubsResponse](../../models/operations/getlibraryhubsresponse.md)** +**[operations.GetContinueWatchingResponse](../../models/operations/getcontinuewatchingresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.GetLibraryHubsBadRequest | 400 | application/json | -| errors.GetLibraryHubsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_hub_items + +Get the items within a single hub specified by identifier + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.hubs.get_hub_items(request={ + "identifier": [ + "", + "", + "", + ], + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `request` | [operations.GetHubItemsRequest](../../models/operations/gethubitemsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetHubItemsResponse](../../models/operations/gethubitemsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_promoted_hubs + +Get the global hubs which are promoted (should be displayed on the home screen) + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.hubs.get_promoted_hubs(request={}) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.GetPromotedHubsRequest](../../models/operations/getpromotedhubsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetPromotedHubsResponse](../../models/operations/getpromotedhubsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_metadata_hubs + +Get the hubs for a section by metadata item. Currently only for music sections + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.hubs.get_metadata_hubs(request={ + "metadata_id": 605482, + "only_transient": components.BoolInt.ONE, + }) + + assert res.media_container_with_hubs is not None + + # Handle response + print(res.media_container_with_hubs) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.GetMetadataHubsRequest](../../models/operations/getmetadatahubsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetMetadataHubsResponse](../../models/operations/getmetadatahubsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_postplay_hubs + +Get the hubs for a metadata to be displayed in post play + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.hubs.get_postplay_hubs(request={ + "metadata_id": 441419, + "only_transient": components.BoolInt.ONE, + }) + + assert res.media_container_with_hubs is not None + + # Handle response + print(res.media_container_with_hubs) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.GetPostplayHubsRequest](../../models/operations/getpostplayhubsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetPostplayHubsResponse](../../models/operations/getpostplayhubsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_related_hubs + +Get the hubs for a metadata related to the provided metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.hubs.get_related_hubs(request={ + "metadata_id": 8858, + "only_transient": components.BoolInt.ONE, + }) + + assert res.media_container_with_hubs is not None + + # Handle response + print(res.media_container_with_hubs) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.GetRelatedHubsRequest](../../models/operations/getrelatedhubsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetRelatedHubsResponse](../../models/operations/getrelatedhubsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_section_hubs + +Get the hubs for a single section + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.hubs.get_section_hubs(request={ + "section_id": 336924, + "only_transient": components.BoolInt.ONE, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.GetSectionHubsRequest](../../models/operations/getsectionhubsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetSectionHubsResponse](../../models/operations/getsectionhubsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## reset_section_defaults + +Reset hubs for this section to defaults and delete custom hubs + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.hubs.reset_section_defaults(request={ + "section_id": 383022, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `request` | [operations.ResetSectionDefaultsRequest](../../models/operations/resetsectiondefaultsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ResetSectionDefaultsResponse](../../models/operations/resetsectiondefaultsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## list_hubs + +Get the list of hubs including both built-in and custom + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.hubs.list_hubs(request={ + "section_id": 442546, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `request` | [operations.ListHubsRequest](../../models/operations/listhubsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ListHubsResponse](../../models/operations/listhubsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## create_custom_hub + +Create a custom hub based on a metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.hubs.create_custom_hub(request=operations.CreateCustomHubRequest( + section_id=869922, + metadata_item_id=703843, + promoted_to_recommended=components.BoolInt.ONE, + promoted_to_own_home=components.BoolInt.ONE, + promoted_to_shared_home=components.BoolInt.ONE, + )) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.CreateCustomHubRequest](../../models/operations/createcustomhubrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.CreateCustomHubResponse](../../models/operations/createcustomhubresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## move_hub + +Changed the ordering of a hub among others hubs + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.hubs.move_hub(request={ + "section_id": 755710, + "identifier": "", + }) + + assert res.get_responses_200 is not None + + # Handle response + print(res.get_responses_200) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `request` | [operations.MoveHubRequest](../../models/operations/movehubrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.MoveHubResponse](../../models/operations/movehubresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_custom_hub + +Delete a custom hub from the server + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.hubs.delete_custom_hub(request={ + "section_id": 625677, + "identifier": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.DeleteCustomHubRequest](../../models/operations/deletecustomhubrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeleteCustomHubResponse](../../models/operations/deletecustomhubresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## update_hub_visibility + +Changed the visibility of a hub for both the admin and shared users + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.hubs.update_hub_visibility(request=operations.UpdateHubVisibilityRequest( + section_id=341650, + identifier="", + promoted_to_recommended=components.BoolInt.ONE, + promoted_to_own_home=components.BoolInt.ONE, + promoted_to_shared_home=components.BoolInt.ONE, + )) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `request` | [operations.UpdateHubVisibilityRequest](../../models/operations/updatehubvisibilityrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.UpdateHubVisibilityResponse](../../models/operations/updatehubvisibilityresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/library/README.md b/docs/sdks/library/README.md index 6133166..9ee52b5 100644 --- a/docs/sdks/library/README.md +++ b/docs/sdks/library/README.md @@ -3,364 +3,123 @@ ## Overview -API Calls interacting with Plex Media Server Libraries - +Library endpoints which are outside of the Media Provider API. Typically this is manipulation of the library (adding/removing sections, modifying preferences, etc). ### Available Operations -* [get_file_hash](#get_file_hash) - Get Hash Value -* [get_recently_added_library](#get_recently_added_library) - Get Recently Added -* [get_all_libraries](#get_all_libraries) - Get All Libraries -* [get_library_details](#get_library_details) - Get Library Details -* [delete_library](#delete_library) - Delete Library Section -* [get_library_items](#get_library_items) - Get Library Items -* [get_library_sections_all](#get_library_sections_all) - Get Library section media by tag ALL -* [get_refresh_library_metadata](#get_refresh_library_metadata) - Refresh Metadata Of The Library -* [get_search_library](#get_search_library) - Search Library -* [get_genres_library](#get_genres_library) - Get Genres of library media -* [get_countries_library](#get_countries_library) - Get Countries of library media -* [get_actors_library](#get_actors_library) - Get Actors of library media -* [get_search_all_libraries](#get_search_all_libraries) - Search All Libraries -* [get_media_meta_data](#get_media_meta_data) - Get Media Metadata -* [get_media_arts](#get_media_arts) - Get Media Background Artwork -* [post_media_arts](#post_media_arts) - Upload Media Background Artwork -* [get_media_posters](#get_media_posters) - Get Media Posters -* [post_media_poster](#post_media_poster) - Upload Media Poster -* [get_metadata_children](#get_metadata_children) - Get Items Children -* [get_top_watched_content](#get_top_watched_content) - Get Top Watched Content - -## get_file_hash - -This resource returns hash values for local files - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.library.get_file_hash(url="file://C:\\Image.png&type=13") - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `url` | *str* | :heavy_check_mark: | This is the path to the local file, must be prefixed by `file://` | file://C:\Image.png&type=13 | -| `type` | *Optional[float]* | :heavy_minus_sign: | Item type | | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.GetFileHashResponse](../../models/operations/getfilehashresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------ | ------------------------------ | ------------------------------ | -| errors.GetFileHashBadRequest | 400 | application/json | -| errors.GetFileHashUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_recently_added_library - -This endpoint will return the recently added content. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI -from plex_api_client.models import operations - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.library.get_recently_added_library(request={ - "content_directory_id": 2, - "pinned_content_directory_id": [ - 3, - 5, - 7, - 13, - 12, - 1, - 6, - 14, - 2, - 10, - 16, - 17, - ], - "section_id": 2, - "type": operations.QueryParamType.TV_SHOW, - "include_meta": operations.QueryParamIncludeMeta.ENABLE, - }) - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `request` | [operations.GetRecentlyAddedLibraryRequest](../../models/operations/getrecentlyaddedlibraryrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetRecentlyAddedLibraryResponse](../../models/operations/getrecentlyaddedlibraryresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | -| errors.GetRecentlyAddedLibraryBadRequest | 400 | application/json | -| errors.GetRecentlyAddedLibraryUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_all_libraries - -A library section (commonly referred to as just a library) is a collection of media. -Libraries are typed, and depending on their type provide either a flat or a hierarchical view of the media. -For example, a music library has an artist > albums > tracks structure, whereas a movie library is flat. - -Libraries have features beyond just being a collection of media; for starters, they include information about supported types, filters and sorts. -This allows a client to provide a rich interface around the media (e.g. allow sorting movies by release year). - - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.library.get_all_libraries() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetAllLibrariesResponse](../../models/operations/getalllibrariesresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | -| errors.GetAllLibrariesBadRequest | 400 | application/json | -| errors.GetAllLibrariesUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_library_details - -## Library Details Endpoint - -This endpoint provides comprehensive details about the library, focusing on organizational aspects rather than the content itself. - -The details include: - -### Directories -Organized into three categories: - -- **Primary Directories**: - - Used in some clients for quick access to media subsets (e.g., "All", "On Deck"). - - Most can be replicated via media queries. - - Customizable by users. - -- **Secondary Directories**: - - Marked with `secondary="1"`. - - Used in older clients for structured navigation. - -- **Special Directories**: - - Includes a "By Folder" entry for filesystem-based browsing. - - Contains an obsolete `search="1"` entry for on-the-fly search dialog creation. - -### Types -Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls: - -- **Type Object Attributes**: - - `key`: Endpoint for the media list of this type. - - `type`: Metadata type (if standard Plex type). - - `title`: Title for this content type (e.g., "Movies"). - -- **Filter Objects**: - - Subset of the media query language. - - Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`. - -- **Sort Objects**: - - Description of sort fields. - - Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`. - -> **Note**: Filters and sorts are optional; without them, no filtering controls are rendered. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI -from plex_api_client.models import operations - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.library.get_library_details(section_key=9518, include_details=operations.IncludeDetails.ZERO) - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `include_details` | [Optional[operations.IncludeDetails]](../../models/operations/includedetails.md) | :heavy_minus_sign: | Whether or not to include details for a section (types, filters, and sorts).
Only exists for backwards compatibility, media providers other than the server libraries have it on always.
| | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.GetLibraryDetailsResponse](../../models/operations/getlibrarydetailsresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | -| errors.GetLibraryDetailsBadRequest | 400 | application/json | -| errors.GetLibraryDetailsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## delete_library - -Delete a library using a specific section id - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.library.delete_library(section_key=9518) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.DeleteLibraryResponse](../../models/operations/deletelibraryresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------- | -------------------------------- | -------------------------------- | -| errors.DeleteLibraryBadRequest | 400 | application/json | -| errors.DeleteLibraryUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | +* [get_library_items](#get_library_items) - Get all items in library +* [delete_caches](#delete_caches) - Delete library caches +* [clean_bundles](#clean_bundles) - Clean bundles +* [ingest_transient_item](#ingest_transient_item) - Ingest a transient item +* [get_library_matches](#get_library_matches) - Get library matches +* [optimize_database](#optimize_database) - Optimize the Database +* [get_random_artwork](#get_random_artwork) - Get random artwork +* [get_sections](#get_sections) - Get library sections (main Media Provider Only) +* [add_section](#add_section) - Add a library section +* [stop_all_refreshes](#stop_all_refreshes) - Stop refresh +* [get_sections_prefs](#get_sections_prefs) - Get section prefs +* [refresh_sections_metadata](#refresh_sections_metadata) - Refresh all sections +* [get_tags](#get_tags) - Get all library tags of a type +* [delete_metadata_item](#delete_metadata_item) - Delete a metadata item +* [edit_metadata_item](#edit_metadata_item) - Edit a metadata item +* [detect_ads](#detect_ads) - Ad-detect an item +* [get_all_item_leaves](#get_all_item_leaves) - Get the leaves of an item +* [analyze_metadata](#analyze_metadata) - Analyze an item +* [generate_thumbs](#generate_thumbs) - Generate thumbs of chapters for an item +* [detect_credits](#detect_credits) - Credit detect a metadata item +* [get_extras](#get_extras) - Get an item's extras +* [add_extras](#add_extras) - Add to an item's extras +* [get_file](#get_file) - Get a file from a metadata or media bundle +* [start_bif_generation](#start_bif_generation) - Start BIF generation of an item +* [detect_intros](#detect_intros) - Intro detect an item +* [create_marker](#create_marker) - Create a marker +* [match_item](#match_item) - Match a metadata item +* [list_matches](#list_matches) - Get metadata matches for an item +* [merge_items](#merge_items) - Merge a metadata item +* [list_sonically_similar](#list_sonically_similar) - Get nearest tracks to metadata item +* [set_item_preferences](#set_item_preferences) - Set metadata preferences +* [refresh_items_metadata](#refresh_items_metadata) - Refresh a metadata item +* [get_related_items](#get_related_items) - Get related items +* [list_similar](#list_similar) - Get similar items +* [split_item](#split_item) - Split a metadata item +* [add_subtitles](#add_subtitles) - Add subtitles +* [get_item_tree](#get_item_tree) - Get metadata items as a tree +* [unmatch](#unmatch) - Unmatch a metadata item +* [list_top_users](#list_top_users) - Get metadata top users +* [detect_voice_activity](#detect_voice_activity) - Detect voice activity +* [get_augmentation_status](#get_augmentation_status) - Get augmentation status +* [set_stream_selection](#set_stream_selection) - Set stream selection +* [get_person](#get_person) - Get person details +* [list_person_media](#list_person_media) - Get media for a person +* [delete_library_section](#delete_library_section) - Delete a library section +* [get_library_details](#get_library_details) - Get a library section by id +* [edit_section](#edit_section) - Edit a library section +* [update_items](#update_items) - Set the fields of the filtered items +* [start_analysis](#start_analysis) - Analyze a section +* [autocomplete](#autocomplete) - Get autocompletions for search +* [get_collections](#get_collections) - Get collections in a section +* [get_common](#get_common) - Get common fields for items +* [empty_trash](#empty_trash) - Empty section trash +* [get_section_filters](#get_section_filters) - Get section filters +* [get_first_characters](#get_first_characters) - Get list of first characters +* [delete_indexes](#delete_indexes) - Delete section indexes +* [delete_intros](#delete_intros) - Delete section intro markers +* [get_section_preferences](#get_section_preferences) - Get section prefs +* [set_section_preferences](#set_section_preferences) - Set section prefs +* [cancel_refresh](#cancel_refresh) - Cancel section refresh +* [refresh_section](#refresh_section) - Refresh section +* [get_available_sorts](#get_available_sorts) - Get a section sorts +* [get_stream_levels](#get_stream_levels) - Get loudness about a stream in json +* [get_stream_loudness](#get_stream_loudness) - Get loudness about a stream +* [get_chapter_image](#get_chapter_image) - Get a chapter image +* [set_item_artwork](#set_item_artwork) - Set an item's artwork, theme, etc +* [update_item_artwork](#update_item_artwork) - Set an item's artwork, theme, etc +* [delete_marker](#delete_marker) - Delete a marker +* [edit_marker](#edit_marker) - Edit a marker +* [delete_media_item](#delete_media_item) - Delete a media item +* [get_part_index](#get_part_index) - Get BIF index for a part +* [delete_collection](#delete_collection) - Delete a collection +* [get_section_image](#get_section_image) - Get a section composite image +* [delete_stream](#delete_stream) - Delete a stream +* [get_stream](#get_stream) - Get a stream +* [set_stream_offset](#set_stream_offset) - Set a stream offset +* [get_item_artwork](#get_item_artwork) - Get an item's artwork, theme, etc +* [get_media_part](#get_media_part) - Get a media part +* [get_image_from_bif](#get_image_from_bif) - Get an image from part BIF ## get_library_items -Fetches details from a specific section of the library identified by a section key and a tag. The tag parameter accepts the following values: -- `all`: All items in the section. -- `unwatched`: Items that have not been played. -- `newest`: Items that are recently released. -- `recentlyAdded`: Items that are recently added to the library. -- `recentlyViewed`: Items that were recently viewed. -- `onDeck`: Items to continue watching. -- `collection`: Items categorized by collection. -- `edition`: Items categorized by edition. -- `genre`: Items categorized by genre. -- `year`: Items categorized by year of release. -- `decade`: Items categorized by decade. -- `director`: Items categorized by director. -- `actor`: Items categorized by starring actor. -- `country`: Items categorized by country of origin. -- `contentRating`: Items categorized by content rating. -- `rating`: Items categorized by rating. -- `resolution`: Items categorized by resolution. -- `firstCharacter`: Items categorized by the first letter. -- `folder`: Items categorized by folder. -- `albums`: Items categorized by album. - +Request all metadata items according to a query. ### Example Usage - + ```python from plex_api_client import PlexAPI -from plex_api_client.models import operations +from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.get_library_items(request={ - "tag": operations.Tag.NEWEST, - "include_guids": operations.IncludeGuids.ENABLE, - "type": operations.GetLibraryItemsQueryParamType.TV_SHOW, - "section_key": 9518, - "include_meta": operations.GetLibraryItemsQueryParamIncludeMeta.ENABLE, - }) + res = plex_api.library.get_library_items(request={}) - assert res.object is not None + assert res.media_container_with_metadata is not None # Handle response - print(res.object) + print(res.media_container_with_metadata) ``` @@ -377,83 +136,26 @@ with PlexAPI( ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | -| errors.GetLibraryItemsBadRequest | 400 | application/json | -| errors.GetLibraryItemsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | -## get_library_sections_all - -Retrieves a list of all general media data for this library. +## delete_caches +Delete the hub caches so they are recomputed on next request ### Example Usage - + ```python from plex_api_client import PlexAPI -from plex_api_client.models import operations with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.library.get_library_sections_all(request={ - "section_key": 9518, - "type": operations.GetLibrarySectionsAllQueryParamType.TV_SHOW, - "include_meta": operations.GetLibrarySectionsAllQueryParamIncludeMeta.ENABLE, - "include_guids": operations.QueryParamIncludeGuids.ENABLE, - "include_advanced": operations.IncludeAdvanced.ENABLE, - "include_collections": operations.QueryParamIncludeCollections.ENABLE, - "include_external_media": operations.QueryParamIncludeExternalMedia.ENABLE, - }) - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `request` | [operations.GetLibrarySectionsAllRequest](../../models/operations/getlibrarysectionsallrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetLibrarySectionsAllResponse](../../models/operations/getlibrarysectionsallresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| errors.GetLibrarySectionsAllBadRequest | 400 | application/json | -| errors.GetLibrarySectionsAllUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_refresh_library_metadata - -This endpoint Refreshes all the Metadata of the library. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI -from plex_api_client.models import operations - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.library.get_refresh_library_metadata(section_key=9518, force=operations.Force.ZERO) + res = plex_api.library.delete_caches() assert res is not None @@ -464,316 +166,215 @@ with PlexAPI( ### Parameters -| Parameter | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | -| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `force` | [Optional[operations.Force]](../../models/operations/force.md) | :heavy_minus_sign: | Force the refresh even if the library is already being refreshed. | 0 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.GetRefreshLibraryMetadataResponse](../../models/operations/getrefreshlibrarymetadataresponse.md)** +**[operations.DeleteCachesResponse](../../models/operations/deletecachesresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -| errors.GetRefreshLibraryMetadataBadRequest | 400 | application/json | -| errors.GetRefreshLibraryMetadataUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | -## get_search_library - -Search for content within a specific section of the library. - -### Types -Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls: - -- **Type Object Attributes**: - - `type`: Metadata type (if standard Plex type). - - `title`: Title for this content type (e.g., "Movies"). - -- **Filter Objects**: - - Subset of the media query language. - - Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`. - -- **Sort Objects**: - - Description of sort fields. - - Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`. - -> **Note**: Filters and sorts are optional; without them, no filtering controls are rendered. +## clean_bundles +Clean out any now unused bundles. Bundles can become unused when media is deleted ### Example Usage - + ```python from plex_api_client import PlexAPI -from plex_api_client.models import operations with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.library.get_search_library(section_key=9518, type_=operations.GetSearchLibraryQueryParamType.TV_SHOW) + res = plex_api.library.clean_bundles() - assert res.object is not None + assert res is not None # Handle response - print(res.object) + print(res) ``` ### Parameters -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `type` | [operations.GetSearchLibraryQueryParamType](../../models/operations/getsearchlibraryqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.GetSearchLibraryResponse](../../models/operations/getsearchlibraryresponse.md)** +**[operations.CleanBundlesResponse](../../models/operations/cleanbundlesresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | -| errors.GetSearchLibraryBadRequest | 400 | application/json | -| errors.GetSearchLibraryUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | -## get_genres_library - -Retrieves a list of all the genres that are found for the media in this library. +## ingest_transient_item +This endpoint takes a file path specified in the `url` parameter, matches it using the scanner's match mechanism, downloads rich metadata, and then ingests the item as a transient item (without a library section). In the case where the file represents an episode, the entire tree (show, season, and episode) is added as transient items. At this time, movies and episodes are the only supported types, which are gleaned automatically from the file path. +Note that any of the parameters passed to the metadata details endpoint (e.g. `includeExtras=1`) work here. ### Example Usage - + ```python from plex_api_client import PlexAPI -from plex_api_client.models import operations +from plex_api_client.models import components, operations with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.get_genres_library(section_key=9518, type_=operations.GetGenresLibraryQueryParamType.TV_SHOW) + res = plex_api.library.ingest_transient_item(request=operations.IngestTransientItemRequest( + url="file:///storage%2Femulated%2F0%2FArcher-S01E01.mkv", + virtual_file_path="/Avatar.mkv", + compute_hashes=components.BoolInt.ONE, + ingest_non_matches=components.BoolInt.ONE, + )) - assert res.object is not None + assert res.media_container_with_metadata is not None # Handle response - print(res.object) + print(res.media_container_with_metadata) ``` ### Parameters -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `type` | [operations.GetGenresLibraryQueryParamType](../../models/operations/getgenreslibraryqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `request` | [operations.IngestTransientItemRequest](../../models/operations/ingesttransientitemrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.GetGenresLibraryResponse](../../models/operations/getgenreslibraryresponse.md)** +**[operations.IngestTransientItemResponse](../../models/operations/ingesttransientitemresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | -| errors.GetGenresLibraryBadRequest | 400 | application/json | -| errors.GetGenresLibraryUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | -## get_countries_library - -Retrieves a list of all the countries that are found for the media in this library. +## get_library_matches +The matches endpoint is used to match content external to the library with content inside the library. This is done by passing a series of semantic "hints" about the content (its type, name, or release year). Each type (e.g. movie) has a canonical set of minimal required hints. +This ability to match content is useful in a variety of scenarios. For example, in the DVR, the EPG uses the endpoint to match recording rules against airing content. And in the cloud, the UMP uses the endpoint to match up a piece of media with rich metadata. +The endpoint response can including multiple matches, if there is ambiguity, each one containing a `score` from 0 to 100. For somewhat historical reasons, anything over 85 is considered a positive match (we prefer false negatives over false positives in general for matching). +The `guid` hint is somewhat special, in that it generally represents a unique identity for a piece of media (e.g. the IMDB `ttXXX`) identifier, in contrast with other hints which can be much more ambiguous (e.g. a title of `Jane Eyre`, which could refer to the 1943 or the 2011 version). +Episodes require either a season/episode pair, or an air date (or both). Either the path must be sent, or the show title ### Example Usage - + ```python from plex_api_client import PlexAPI -from plex_api_client.models import operations +from plex_api_client.models import components, operations with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.get_countries_library(section_key=9518, type_=operations.GetCountriesLibraryQueryParamType.TV_SHOW) + res = plex_api.library.get_library_matches(request=operations.GetLibraryMatchesRequest( + include_full_metadata=components.BoolInt.ONE, + include_ancestor_metadata=components.BoolInt.ONE, + include_alternate_metadata_sources=components.BoolInt.ONE, + )) - assert res.object is not None + assert res.media_container_with_metadata is not None # Handle response - print(res.object) + print(res.media_container_with_metadata) ``` ### Parameters -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `type` | [operations.GetCountriesLibraryQueryParamType](../../models/operations/getcountrieslibraryqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `request` | [operations.GetLibraryMatchesRequest](../../models/operations/getlibrarymatchesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.GetCountriesLibraryResponse](../../models/operations/getcountrieslibraryresponse.md)** +**[operations.GetLibraryMatchesResponse](../../models/operations/getlibrarymatchesresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| -------------------------------------- | -------------------------------------- | -------------------------------------- | -| errors.GetCountriesLibraryBadRequest | 400 | application/json | -| errors.GetCountriesLibraryUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | -## get_actors_library - -Retrieves a list of all the actors that are found for the media in this library. +## optimize_database +Initiate optimize on the database. ### Example Usage - + ```python from plex_api_client import PlexAPI -from plex_api_client.models import operations +from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.get_actors_library(section_key=9518, type_=operations.GetActorsLibraryQueryParamType.TV_SHOW) - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `section_key` | *int* | :heavy_check_mark: | The unique key of the Plex library.
Note: This is unique in the context of the Plex server.
| 9518 | -| `type` | [operations.GetActorsLibraryQueryParamType](../../models/operations/getactorslibraryqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.GetActorsLibraryResponse](../../models/operations/getactorslibraryresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | -| errors.GetActorsLibraryBadRequest | 400 | application/json | -| errors.GetActorsLibraryUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_search_all_libraries - -Search the provided query across all library sections, or a single section, and return matches as hubs, split up by type. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI -from plex_api_client.models import operations - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.library.get_search_all_libraries(request={ - "query": "", - "client_id": "3381b62b-9ab7-4e37-827b-203e9809eb58", - "search_types": [ - operations.SearchTypes.PEOPLE, - ], - "include_collections": operations.GetSearchAllLibrariesQueryParamIncludeCollections.ENABLE, - "include_external_media": operations.GetSearchAllLibrariesQueryParamIncludeExternalMedia.ENABLE, + res = plex_api.library.optimize_database(request={ + "async_": components.BoolInt.ONE, }) - assert res.object is not None + assert res is not None # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -| `request` | [operations.GetSearchAllLibrariesRequest](../../models/operations/getsearchalllibrariesrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetSearchAllLibrariesResponse](../../models/operations/getsearchalllibrariesresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| errors.GetSearchAllLibrariesBadRequest | 400 | application/json | -| errors.GetSearchAllLibrariesUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_media_meta_data - -This endpoint will return all the (meta)data of one or more library items specified by the ratingKey. -Multiple rating keys can be provided as a comma-separated list (e.g., "21119,21617"). - - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.library.get_media_meta_data(request={ - "rating_key": "21119,21617", - "include_concerts": True, - "include_extras": True, - "include_on_deck": True, - "include_popular_leaves": True, - "include_preferences": True, - "include_reviews": True, - "include_chapters": True, - "include_stations": True, - "include_external_media": True, - "async_augment_metadata": True, - "async_check_files": True, - "async_refresh_analysis": True, - "async_refresh_local_media_agent": True, - }) - - assert res.object is not None - - # Handle response - print(res.object) + print(res) ``` @@ -781,37 +382,97 @@ with PlexAPI( | Parameter | Type | Required | Description | | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `request` | [operations.GetMediaMetaDataRequest](../../models/operations/getmediametadatarequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `request` | [operations.OptimizeDatabaseRequest](../../models/operations/optimizedatabaserequest.md) | :heavy_check_mark: | The request object to use for the request. | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.GetMediaMetaDataResponse](../../models/operations/getmediametadataresponse.md)** +**[operations.OptimizeDatabaseResponse](../../models/operations/optimizedatabaseresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | -| errors.GetMediaMetaDataBadRequest | 400 | application/json | -| errors.GetMediaMetaDataUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | -## get_media_arts +## get_random_artwork + +Get random artwork across sections. This is commonly used for a screensaver. + +This retrieves 100 random artwork paths in the specified sections and returns them. Restrictions are put in place to not return artwork for items the user is not allowed to access. Artwork will be for Movies, Shows, and Artists only. -Returns the background artwork for a library item. ### Example Usage - + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_random_artwork(request={ + "sections": [ + 5, + 6, + ], + }) + + assert res.media_container_with_artwork is not None + + # Handle response + print(res.media_container_with_artwork) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.GetRandomArtworkRequest](../../models/operations/getrandomartworkrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetRandomArtworkResponse](../../models/operations/getrandomartworkresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_sections + +A library section (commonly referred to as just a library) is a collection of media. Libraries are typed, and depending on their type provide either a flat or a hierarchical view of the media. For example, a music library has an artist > albums > tracks structure, whereas a movie library is flat. +Libraries have features beyond just being a collection of media; for starters, they include information about supported types, filters and sorts. This allows a client to provide a rich interface around the media (e.g. allow sorting movies by release year). + +### Example Usage + + ```python from plex_api_client import PlexAPI with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.library.get_media_arts(rating_key=16099) + res = plex_api.library.get_sections() assert res.object is not None @@ -822,14 +483,13 @@ with PlexAPI( ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `rating_key` | *int* | :heavy_check_mark: | the id of the library item to return the artwork of. | 16099 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.GetMediaArtsResponse](../../models/operations/getmediaartsresponse.md)** +**[operations.GetSectionsResponse](../../models/operations/getsectionsresponse.md)** ### Errors @@ -837,22 +497,194 @@ with PlexAPI( | --------------- | --------------- | --------------- | | errors.SDKError | 4XX, 5XX | \*/\* | -## post_media_arts +## add_section -Uploads an image to use as the background artwork for a library item, either from a local file or a remote URL +Add a new library section to the server ### Example Usage - + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.add_section(request=operations.AddSectionRequest( + name="", + type=39544, + agent="", + language="", + locations=[ + "O:\fatboy\\Media\\Ripped\\Music", + "O:\fatboy\\Media\\My Music", + ], + prefs=operations.QueryParamPrefs(), + relative=components.BoolInt.ONE, + import_fromi_tunes=components.BoolInt.ONE, + )) + + assert res.slash_get_responses_200 is not None + + # Handle response + print(res.slash_get_responses_200) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `request` | [operations.AddSectionRequest](../../models/operations/addsectionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.AddSectionResponse](../../models/operations/addsectionresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## stop_all_refreshes + +Stop all refreshes across all sections + +### Example Usage + + ```python from plex_api_client import PlexAPI with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.library.post_media_arts(rating_key=2268, url="https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b") + res = plex_api.library.stop_all_refreshes() + + assert res.request_handler_slash_get_responses_200 is not None + + # Handle response + print(res.request_handler_slash_get_responses_200) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.StopAllRefreshesResponse](../../models/operations/stopallrefreshesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_sections_prefs + +Get a section's preferences for a metadata type + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_sections_prefs(request={ + "type": 460221, + }) + + assert res.request_handler_slash_get_responses_200 is not None + + # Handle response + print(res.request_handler_slash_get_responses_200) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.GetSectionsPrefsRequest](../../models/operations/getsectionsprefsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetSectionsPrefsResponse](../../models/operations/getsectionsprefsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## refresh_sections_metadata + +Tell PMS to refresh all section metadata + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.refresh_sections_metadata(request={}) assert res is not None @@ -863,16 +695,14 @@ with PlexAPI( ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `rating_key` | *int* | :heavy_check_mark: | the id of the library item to return the posters of. | 2268 | -| `url` | *Optional[str]* | :heavy_minus_sign: | The URL of the image, if uploading a remote image | https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b | -| `request_body` | *Optional[Union[bytes, IO[bytes], io.BufferedReader]]* | :heavy_minus_sign: | The contents of the image, if uploading a local file | | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `request` | [operations.RefreshSectionsMetadataRequest](../../models/operations/refreshsectionsmetadatarequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.PostMediaArtsResponse](../../models/operations/postmediaartsresponse.md)** +**[operations.RefreshSectionsMetadataResponse](../../models/operations/refreshsectionsmetadataresponse.md)** ### Errors @@ -880,22 +710,34 @@ with PlexAPI( | --------------- | --------------- | --------------- | | errors.SDKError | 4XX, 5XX | \*/\* | -## get_media_posters +## get_tags -Returns the available posters for a library item. +Get all library tags of a type ### Example Usage - + ```python from plex_api_client import PlexAPI +from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.get_media_posters(rating_key=16099) + res = plex_api.library.get_tags(request={}) assert res.object is not None @@ -906,14 +748,14 @@ with PlexAPI( ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `rating_key` | *int* | :heavy_check_mark: | the id of the library item to return the posters of. | 16099 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `request` | [operations.GetTagsRequest](../../models/operations/gettagsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.GetMediaPostersResponse](../../models/operations/getmediapostersresponse.md)** +**[operations.GetTagsResponse](../../models/operations/gettagsresponse.md)** ### Errors @@ -921,22 +763,37 @@ with PlexAPI( | --------------- | --------------- | --------------- | | errors.SDKError | 4XX, 5XX | \*/\* | -## post_media_poster +## delete_metadata_item -Uploads a poster to a library item, either from a local file or a remote URL +Delete a single metadata item from the library, deleting media as well ### Example Usage - + ```python from plex_api_client import PlexAPI +from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.post_media_poster(rating_key=2268, url="https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b") + res = plex_api.library.delete_metadata_item(request={ + "ids": "", + "proxy": components.BoolInt.ONE, + }) assert res is not None @@ -947,16 +804,14 @@ with PlexAPI( ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `rating_key` | *int* | :heavy_check_mark: | the id of the library item to return the posters of. | 2268 | -| `url` | *Optional[str]* | :heavy_minus_sign: | The URL of the image, if uploading a remote image | https://api.mediux.pro/assets/fcfdc487-dd07-4993-a0c1-0a3015362e5b | -| `request_body` | *Optional[Union[bytes, IO[bytes], io.BufferedReader]]* | :heavy_minus_sign: | The contents of the image, if uploading a local file | | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `request` | [operations.DeleteMetadataItemRequest](../../models/operations/deletemetadataitemrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.PostMediaPosterResponse](../../models/operations/postmediaposterresponse.md)** +**[operations.DeleteMetadataItemResponse](../../models/operations/deletemetadataitemresponse.md)** ### Errors @@ -964,23 +819,653 @@ with PlexAPI( | --------------- | --------------- | --------------- | | errors.SDKError | 4XX, 5XX | \*/\* | -## get_metadata_children - -This endpoint will return the children of of a library item specified with the ratingKey. +## edit_metadata_item +Edit metadata items setting fields ### Example Usage - + ```python from plex_api_client import PlexAPI +from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.get_metadata_children(rating_key=2403.67, include_elements="Stream") + res = plex_api.library.edit_metadata_item(request={ + "ids": [ + "", + "", + ], + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.EditMetadataItemRequest](../../models/operations/editmetadataitemrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.EditMetadataItemResponse](../../models/operations/editmetadataitemresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## detect_ads + +Start the detection of ads in a metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.detect_ads(request={ + "ids": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.DetectAdsRequest](../../models/operations/detectadsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DetectAdsResponse](../../models/operations/detectadsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_all_item_leaves + +Get the leaves for a metadata item such as the episodes in a show + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_all_item_leaves(request={ + "ids": "", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.GetAllItemLeavesRequest](../../models/operations/getallitemleavesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetAllItemLeavesResponse](../../models/operations/getallitemleavesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## analyze_metadata + +Start the analysis of a metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.analyze_metadata(request={ + "ids": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.AnalyzeMetadataRequest](../../models/operations/analyzemetadatarequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.AnalyzeMetadataResponse](../../models/operations/analyzemetadataresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## generate_thumbs + +Start the chapter thumb generation for an item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.generate_thumbs(request={ + "ids": "", + "force": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.GenerateThumbsRequest](../../models/operations/generatethumbsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GenerateThumbsResponse](../../models/operations/generatethumbsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## detect_credits + +Start credit detection on a metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.detect_credits(request=operations.DetectCreditsRequest( + ids="", + force=components.BoolInt.ONE, + manual=components.BoolInt.ONE, + )) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `request` | [operations.DetectCreditsRequest](../../models/operations/detectcreditsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DetectCreditsResponse](../../models/operations/detectcreditsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_extras + +Get the extras for a metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_extras(request={ + "ids": "", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.GetExtrasRequest](../../models/operations/getextrasrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetExtrasResponse](../../models/operations/getextrasresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## add_extras + +Add an extra to a metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.add_extras(request={ + "ids": "", + "url": "https://super-mortise.biz/", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.AddExtrasRequest](../../models/operations/addextrasrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.AddExtrasResponse](../../models/operations/addextrasresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_file + +Get a bundle file for a metadata or media item. This is either an image or a mp3 (for a show's theme) + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_file(request={ + "ids": "", + }) + + assert res.two_hundred_audio_mpeg3_response_stream is not None + + # Handle response + print(res.two_hundred_audio_mpeg3_response_stream) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `request` | [operations.GetFileRequest](../../models/operations/getfilerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetFileResponse](../../models/operations/getfileresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## start_bif_generation + +Start the indexing (BIF generation) of an item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.start_bif_generation(request={ + "ids": "", + "force": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `request` | [operations.StartBifGenerationRequest](../../models/operations/startbifgenerationrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.StartBifGenerationResponse](../../models/operations/startbifgenerationresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## detect_intros + +Start the detection of intros in a metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.detect_intros(request={ + "ids": "", + "force": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.DetectIntrosRequest](../../models/operations/detectintrosrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DetectIntrosResponse](../../models/operations/detectintrosresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## create_marker + +Create a marker for this user on the metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.create_marker(request={ + "ids": "", + "type": 248391, + "start_time_offset": 535191, + "attributes": {}, + }) assert res.object is not None @@ -991,42 +1476,383 @@ with PlexAPI( ### Parameters -| Parameter | Type | Required | Description | -| ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| `rating_key` | *float* | :heavy_check_mark: | the id of the library item to return the children of. | -| `include_elements` | *Optional[str]* | :heavy_minus_sign: | Adds additional elements to the response. Supported types are (Stream)
| -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.CreateMarkerRequest](../../models/operations/createmarkerrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.GetMetadataChildrenResponse](../../models/operations/getmetadatachildrenresponse.md)** +**[operations.CreateMarkerResponse](../../models/operations/createmarkerresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| -------------------------------------- | -------------------------------------- | -------------------------------------- | -| errors.GetMetadataChildrenBadRequest | 400 | application/json | -| errors.GetMetadataChildrenUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | -## get_top_watched_content - -This endpoint will return the top watched content from libraries of a certain type +## match_item +Match a metadata item to a guid ### Example Usage - + ```python from plex_api_client import PlexAPI -from plex_api_client.models import operations +from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.library.get_top_watched_content(type_=operations.GetTopWatchedContentQueryParamType.TV_SHOW, include_guids=operations.GetTopWatchedContentQueryParamIncludeGuids.ENABLE) + res = plex_api.library.match_item(request={ + "ids": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.MatchItemRequest](../../models/operations/matchitemrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.MatchItemResponse](../../models/operations/matchitemresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## list_matches + +Get the list of metadata matches for a metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.list_matches(request={ + "ids": "", + "manual": components.BoolInt.ONE, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `request` | [operations.ListMatchesRequest](../../models/operations/listmatchesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ListMatchesResponse](../../models/operations/listmatchesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## merge_items + +Merge a metadata item with other items + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.merge_items(request={ + "ids_path_parameter": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `request` | [operations.MergeItemsRequest](../../models/operations/mergeitemsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.MergeItemsResponse](../../models/operations/mergeitemsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## list_sonically_similar + +Get the nearest tracks, sonically, to the provided track + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.list_sonically_similar(request={ + "ids": "", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `request` | [operations.ListSonicallySimilarRequest](../../models/operations/listsonicallysimilarrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ListSonicallySimilarResponse](../../models/operations/listsonicallysimilarresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## set_item_preferences + +Set the preferences on a metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.set_item_preferences(request={ + "ids": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `request` | [operations.SetItemPreferencesRequest](../../models/operations/setitempreferencesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.SetItemPreferencesResponse](../../models/operations/setitempreferencesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## refresh_items_metadata + +Refresh a metadata item from the agent + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.refresh_items_metadata(request={ + "ids": "", + "mark_updated": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `request` | [operations.RefreshItemsMetadataRequest](../../models/operations/refreshitemsmetadatarequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.RefreshItemsMetadataResponse](../../models/operations/refreshitemsmetadataresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_related_items + +Get a hub of related items to a metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_related_items(request={ + "ids": "", + }) assert res.object is not None @@ -1037,20 +1863,2639 @@ with PlexAPI( ### Parameters -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `type` | [operations.GetTopWatchedContentQueryParamType](../../models/operations/gettopwatchedcontentqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `include_guids` | [Optional[operations.GetTopWatchedContentQueryParamIncludeGuids]](../../models/operations/gettopwatchedcontentqueryparamincludeguids.md) | :heavy_minus_sign: | Adds the Guid object to the response
| 1 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.GetRelatedItemsRequest](../../models/operations/getrelateditemsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.GetTopWatchedContentResponse](../../models/operations/gettopwatchedcontentresponse.md)** +**[operations.GetRelatedItemsResponse](../../models/operations/getrelateditemsresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| --------------------------------------- | --------------------------------------- | --------------------------------------- | -| errors.GetTopWatchedContentBadRequest | 400 | application/json | -| errors.GetTopWatchedContentUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## list_similar + +Get a list of similar items to a metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.list_similar(request={ + "ids": "", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `request` | [operations.ListSimilarRequest](../../models/operations/listsimilarrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ListSimilarResponse](../../models/operations/listsimilarresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## split_item + +Split a metadata item into multiple items + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.split_item(request={ + "ids": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.SplitItemRequest](../../models/operations/splititemrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.SplitItemResponse](../../models/operations/splititemresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## add_subtitles + +Add a subtitle to a metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.add_subtitles(request=operations.AddSubtitlesRequest( + ids="", + forced=components.BoolInt.ONE, + hearing_impaired=components.BoolInt.ONE, + )) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.AddSubtitlesRequest](../../models/operations/addsubtitlesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.AddSubtitlesResponse](../../models/operations/addsubtitlesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_item_tree + +Get a tree of metadata items, such as the seasons/episodes of a show + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_item_tree(request={ + "ids": "", + }) + + assert res.media_container_with_nested_metadata is not None + + # Handle response + print(res.media_container_with_nested_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `request` | [operations.GetItemTreeRequest](../../models/operations/getitemtreerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetItemTreeResponse](../../models/operations/getitemtreeresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## unmatch + +Unmatch a metadata item to info fetched from the agent + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.unmatch(request={ + "ids": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `request` | [operations.UnmatchRequest](../../models/operations/unmatchrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.UnmatchResponse](../../models/operations/unmatchresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## list_top_users + +Get the list of users which have played this item starting with the most + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.list_top_users(request={ + "ids": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.ListTopUsersRequest](../../models/operations/listtopusersrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ListTopUsersResponse](../../models/operations/listtopusersresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## detect_voice_activity + +Start the detection of voice in a metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.detect_voice_activity(request=operations.DetectVoiceActivityRequest( + ids="", + force=components.BoolInt.ONE, + manual=components.BoolInt.ONE, + )) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `request` | [operations.DetectVoiceActivityRequest](../../models/operations/detectvoiceactivityrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DetectVoiceActivityResponse](../../models/operations/detectvoiceactivityresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_augmentation_status + +Get augmentation status and potentially wait for completion + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_augmentation_status(request={ + "augmentation_id": "", + "wait": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `request` | [operations.GetAugmentationStatusRequest](../../models/operations/getaugmentationstatusrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetAugmentationStatusResponse](../../models/operations/getaugmentationstatusresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## set_stream_selection + +Set which streams (audio/subtitle) are selected by this user + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.set_stream_selection(request={ + "part_id": 360489, + "all_parts": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `request` | [operations.SetStreamSelectionRequest](../../models/operations/setstreamselectionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.SetStreamSelectionResponse](../../models/operations/setstreamselectionresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_person + +Get details for a single actor. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_person(request={ + "person_id": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.GetPersonRequest](../../models/operations/getpersonrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetPersonResponse](../../models/operations/getpersonresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## list_person_media + +Get all the media for a single actor. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.list_person_media(request={ + "person_id": "", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.ListPersonMediaRequest](../../models/operations/listpersonmediarequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ListPersonMediaResponse](../../models/operations/listpersonmediaresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_library_section + +Delete a library section by id + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.delete_library_section(request={ + "section_id": "", + "async_": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `request` | [operations.DeleteLibrarySectionRequest](../../models/operations/deletelibrarysectionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeleteLibrarySectionResponse](../../models/operations/deletelibrarysectionresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_library_details + +Returns details for the library. This can be thought of as an interstitial endpoint because it contains information about the library, rather than content itself. It often contains a list of `Directory` metadata objects: These used to be used by clients to build a menuing system. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_library_details(request={ + "section_id": "", + "include_details": components.BoolInt.ONE, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `request` | [operations.GetLibraryDetailsRequest](../../models/operations/getlibrarydetailsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetLibraryDetailsResponse](../../models/operations/getlibrarydetailsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## edit_section + +Edit a library section by id setting parameters + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.edit_section(request={ + "section_id": "", + "agent": "", + "locations": [ + "O:\fatboy\\Media\\Ripped\\Music", + "O:\fatboy\\Media\\My Music", + ], + "prefs": {}, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `request` | [operations.EditSectionRequest](../../models/operations/editsectionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.EditSectionResponse](../../models/operations/editsectionresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## update_items + +This endpoint takes an large possible set of values. Here are some examples. +- **Parameters, extra documentation** + - artist.title.value + - When used with track, both artist.title.value and album.title.value need to be specified + - title.value usage + - Summary + - Tracks always rename and never merge + - Albums and Artists + - if single item and item without title does not exist, it is renamed. + - if single item and item with title does exist they are merged. + - if multiple they are always merged. + - Tracks + - Works as expected will update the track's title + - Single track: `/library/sections/{id}/all?type=10&id=42&title.value=NewName` + - Multiple tracks: `/library/sections/{id}/all?type=10&id=42,43,44&title.value=NewName` + - All tracks: `/library/sections/{id}/all?type=10&title.value=NewName` + - Albums + - Functionality changes depending on the existence of an album with the same title + - Album exists + - Single album: `/library/sections/{id}/all?type=9&id=42&title.value=Album 2` + - Album with id 42 is merged into album titled "Album 2" + - Multiple/All albums: `/library/sections/{id}/all?type=9&title.value=Moo Album` + - All albums are merged into the existing album titled "Moo Album" + - Album does not exist + - Single album: `/library/sections/{id}/all?type=9&id=42&title.value=NewAlbumTitle` + - Album with id 42 has title modified to "NewAlbumTitle" + - Multiple/All albums: `/library/sections/{id}/all?type=9&title.value=NewAlbumTitle` + - All albums are merged into a new album with title="NewAlbumTitle" + - Artists + - Functionaly changes depending on the existence of an artist with the same title. + - Artist exists + - Single artist: `/library/sections/{id}/all?type=8&id=42&title.value=Artist 2` + - Artist with id 42 is merged into existing artist titled "Artist 2" + - Multiple/All artists: `/library/sections/{id}/all?type=8&title.value=Artist 3` + - All artists are merged into the existing artist titled "Artist 3" + - Artist does not exist + - Single artist: `/library/sections/{id}/all?type=8&id=42&title.value=NewArtistTitle` + - Artist with id 42 has title modified to "NewArtistTitle" + - Multiple/All artists: `/library/sections/{id}/all?type=8&title.value=NewArtistTitle` + - All artists are merged into a new artist with title="NewArtistTitle" + +- **Notes** + - Technically square brackets are not allowed in an URI except the Internet Protocol Literal Address + - RFC3513: A host identified by an Internet Protocol literal address, version 6 [RFC3513] or later, is distinguished by enclosing the IP literal within square brackets ("[" and "]"). This is the only place where square bracket characters are allowed in the URI syntax. + - Escaped square brackets are allowed, but don't render well + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.update_items(request={ + "section_id": "", + "field_locked": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `request` | [operations.UpdateItemsRequest](../../models/operations/updateitemsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.UpdateItemsResponse](../../models/operations/updateitemsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## start_analysis + +Start analysis of all items in a section. If BIF generation is enabled, this will also be started on this section + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.start_analysis(request={ + "section_id": 158829, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `request` | [operations.StartAnalysisRequest](../../models/operations/startanalysisrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.StartAnalysisResponse](../../models/operations/startanalysisresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## autocomplete + +The field to autocomplete on is specified by the {field}.query parameter. For example `genre.query` or `title.query`. +Returns a set of items from the filtered items whose {field} starts with {field}.query. In the results, a {field}.queryRange will be present to express the range of the match + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.autocomplete(request={ + "section_id": 942007, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.AutocompleteRequest](../../models/operations/autocompleterequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.AutocompleteResponse](../../models/operations/autocompleteresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_collections + +Get all collections in a section + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_collections(request={ + "section_id": 348838, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.GetCollectionsRequest](../../models/operations/getcollectionsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetCollectionsResponse](../../models/operations/getcollectionsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_common + +Represents a "Common" item. It contains only the common attributes of the items selected by the provided filter +Fields which are not common will be expressed in the `mixedFields` field + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_common(request={ + "section_id": 298154, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.GetCommonRequest](../../models/operations/getcommonrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetCommonResponse](../../models/operations/getcommonresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## empty_trash + +Empty trash in the section, permanently deleting media/metadata for missing media + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.empty_trash(request={ + "section_id": 30052, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `request` | [operations.EmptyTrashRequest](../../models/operations/emptytrashrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.EmptyTrashResponse](../../models/operations/emptytrashresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_section_filters + +Get common filters on a section + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_section_filters(request={ + "section_id": 380557, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `request` | [operations.GetSectionFiltersRequest](../../models/operations/getsectionfiltersrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetSectionFiltersResponse](../../models/operations/getsectionfiltersresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_first_characters + +Get list of first characters in this section + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_first_characters(request={ + "section_id": 3947, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `request` | [operations.GetFirstCharactersRequest](../../models/operations/getfirstcharactersrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetFirstCharactersResponse](../../models/operations/getfirstcharactersresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_indexes + +Delete all the indexes in a section + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.delete_indexes(request={ + "section_id": 588437, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `request` | [operations.DeleteIndexesRequest](../../models/operations/deleteindexesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeleteIndexesResponse](../../models/operations/deleteindexesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_intros + +Delete all the intro markers in a section + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.delete_intros(request={ + "section_id": 498656, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.DeleteIntrosRequest](../../models/operations/deleteintrosrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeleteIntrosResponse](../../models/operations/deleteintrosresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_section_preferences + +Get the prefs for a section by id and potentially overriding the agent + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_section_preferences(request={ + "section_id": 754869, + }) + + assert res.media_container_with_settings is not None + + # Handle response + print(res.media_container_with_settings) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `request` | [operations.GetSectionPreferencesRequest](../../models/operations/getsectionpreferencesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetSectionPreferencesResponse](../../models/operations/getsectionpreferencesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## set_section_preferences + +Set the prefs for a section by id + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.set_section_preferences(request={ + "section_id": 349936, + "prefs": {}, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `request` | [operations.SetSectionPreferencesRequest](../../models/operations/setsectionpreferencesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.SetSectionPreferencesResponse](../../models/operations/setsectionpreferencesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## cancel_refresh + +Cancel the refresh of a section + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.cancel_refresh(request={ + "section_id": 326852, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `request` | [operations.CancelRefreshRequest](../../models/operations/cancelrefreshrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.CancelRefreshResponse](../../models/operations/cancelrefreshresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## refresh_section + +Start a refresh of this section + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.refresh_section(request={ + "section_id": 450300, + "force": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.RefreshSectionRequest](../../models/operations/refreshsectionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.RefreshSectionResponse](../../models/operations/refreshsectionresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_available_sorts + +Get the sort mechanisms available in a section + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_available_sorts(request={ + "section_id": 212498, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `request` | [operations.GetAvailableSortsRequest](../../models/operations/getavailablesortsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetAvailableSortsResponse](../../models/operations/getavailablesortsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_stream_levels + +The the loudness of a stream in db, one entry per 100ms + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_stream_levels(request={ + "stream_id": 447611, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.GetStreamLevelsRequest](../../models/operations/getstreamlevelsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetStreamLevelsResponse](../../models/operations/getstreamlevelsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_stream_loudness + +The the loudness of a stream in db, one number per line, one entry per 100ms + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_stream_loudness(request={ + "stream_id": 277271, + }) + + assert res.res is not None + + # Handle response + print(res.res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `request` | [operations.GetStreamLoudnessRequest](../../models/operations/getstreamloudnessrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetStreamLoudnessResponse](../../models/operations/getstreamloudnessresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_chapter_image + +Get a single chapter image for a piece of media + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_chapter_image(request={ + "media_id": 892563, + "chapter": 48348, + }) + + assert res.response_stream is not None + + # Handle response + print(res.response_stream) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.GetChapterImageRequest](../../models/operations/getchapterimagerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetChapterImageResponse](../../models/operations/getchapterimageresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## set_item_artwork + +Set the artwork, thumb, element for a metadata item +Generally only the admin can perform this action. The exception is if the metadata is a playlist created by the user + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.set_item_artwork(request={ + "ids": "", + "element": operations.Element.BANNER, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.SetItemArtworkRequest](../../models/operations/setitemartworkrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.SetItemArtworkResponse](../../models/operations/setitemartworkresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## update_item_artwork + +Set the artwork, thumb, element for a metadata item +Generally only the admin can perform this action. The exception is if the metadata is a playlist created by the user + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.update_item_artwork(request={ + "ids": "", + "element": operations.PathParamElement.CLEAR_LOGO, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `request` | [operations.UpdateItemArtworkRequest](../../models/operations/updateitemartworkrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.UpdateItemArtworkResponse](../../models/operations/updateitemartworkresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_marker + +Delete a marker for this user on the metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.delete_marker(request={ + "ids": "", + "marker": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.DeleteMarkerRequest](../../models/operations/deletemarkerrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeleteMarkerResponse](../../models/operations/deletemarkerresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## edit_marker + +Edit a marker for this user on the metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.edit_marker(request={ + "ids": "", + "marker": "", + "type": 884347, + "start_time_offset": 517251, + "attributes": {}, + }) + + assert res.post_responses_200 is not None + + # Handle response + print(res.post_responses_200) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `request` | [operations.EditMarkerRequest](../../models/operations/editmarkerrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.EditMarkerResponse](../../models/operations/editmarkerresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_media_item + +Delete a single media from a metadata item in the library + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.delete_media_item(request={ + "ids": "", + "media_item": "", + "proxy": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.DeleteMediaItemRequest](../../models/operations/deletemediaitemrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeleteMediaItemResponse](../../models/operations/deletemediaitemresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_part_index + +Get BIF index for a part by index type + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_part_index(request={ + "part_id": 724750, + "index": operations.Index.SD, + }) + + assert res.response_stream is not None + + # Handle response + print(res.response_stream) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.GetPartIndexRequest](../../models/operations/getpartindexrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetPartIndexResponse](../../models/operations/getpartindexresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_collection + +Delete a library collection from the PMS + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.delete_collection(request={ + "section_id": 283619, + "collection_id": 680895, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.DeleteCollectionRequest](../../models/operations/deletecollectionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeleteCollectionResponse](../../models/operations/deletecollectionresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_section_image + +Get a composite image of images in this section + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_section_image(request={ + "section_id": 925611, + "updated_at": 117413, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.GetSectionImageRequest](../../models/operations/getsectionimagerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetSectionImageResponse](../../models/operations/getsectionimageresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_stream + +Delete a stream. Only applies to downloaded subtitle streams or a sidecar subtitle when media deletion is enabled. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.delete_stream(request={ + "stream_id": 841510, + "ext": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.DeleteStreamRequest](../../models/operations/deletestreamrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeleteStreamResponse](../../models/operations/deletestreamresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_stream + +Get a stream (such as a sidecar subtitle stream) + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_stream(request={ + "stream_id": 314506, + "ext": "", + "auto_adjust_subtitle": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.GetStreamRequest](../../models/operations/getstreamrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetStreamResponse](../../models/operations/getstreamresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## set_stream_offset + +Set a stream offset in ms. This may not be respected by all clients + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.set_stream_offset(request={ + "stream_id": 606295, + "ext": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.SetStreamOffsetRequest](../../models/operations/setstreamoffsetrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.SetStreamOffsetResponse](../../models/operations/setstreamoffsetresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_item_artwork + +Get the artwork, thumb, element for a metadata item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_item_artwork(request={ + "ids": "", + "element": operations.GetItemArtworkPathParamElement.POSTER, + "timestamp": 999555, + }) + + assert res.two_hundred_audio_mpeg3_response_stream is not None + + # Handle response + print(res.two_hundred_audio_mpeg3_response_stream) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.GetItemArtworkRequest](../../models/operations/getitemartworkrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetItemArtworkResponse](../../models/operations/getitemartworkresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_media_part + +Get a media part for streaming or download. + - streaming: This is the default scenario. Bandwidth usage on this endpoint will be guaranteed (on the server's end) to be at least the bandwidth reservation given in the decision. If no decision exists, an ad-hoc decision will be created if sufficient bandwidth exists. Clients should not rely on ad-hoc decisions being made as this may be removed in the future. + - download: Indicated if the query parameter indicates this is a download. Bandwidth will be prioritized behind playbacks and will get a fair share of what remains. + + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_media_part(request={ + "part_id": 877105, + "changestamp": 970622, + "filename": "example.file", + "download": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.GetMediaPartRequest](../../models/operations/getmediapartrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetMediaPartResponse](../../models/operations/getmediapartresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_image_from_bif + +Extract an image from the BIF for a part at a particular offset + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library.get_image_from_bif(request={ + "part_id": 304273, + "index": operations.PathParamIndex.SD, + "offset": 939569, + }) + + assert res.response_stream is not None + + # Handle response + print(res.response_stream) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.GetImageFromBifRequest](../../models/operations/getimagefrombifrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetImageFromBifResponse](../../models/operations/getimagefrombifresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/librarycollections/README.md b/docs/sdks/librarycollections/README.md new file mode 100644 index 0000000..453e3e4 --- /dev/null +++ b/docs/sdks/librarycollections/README.md @@ -0,0 +1,180 @@ +# LibraryCollections +(*library_collections*) + +## Overview + +Endpoints for manipulating collections. In addition to these endpoints, `/library/collections/:collectionId/X` will be rerouted to `/library/metadata/:collectionId/X` and respond to those endpoints as well. + +### Available Operations + +* [add_collection_items](#add_collection_items) - Add items to a collection +* [delete_collection_item](#delete_collection_item) - Delete an item from a collection +* [move_collection_item](#move_collection_item) - Reorder an item in the collection + +## add_collection_items + +Add items to a collection by uri + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library_collections.add_collection_items(request={ + "collection_id": 338144, + "uri": "https://expensive-bakeware.com", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `request` | [operations.AddCollectionItemsRequest](../../models/operations/addcollectionitemsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.AddCollectionItemsResponse](../../models/operations/addcollectionitemsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_collection_item + +Delete an item from a collection + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library_collections.delete_collection_item(request={ + "collection_id": 320928, + "item_id": 406983, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `request` | [operations.DeleteCollectionItemRequest](../../models/operations/deletecollectionitemrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeleteCollectionItemResponse](../../models/operations/deletecollectionitemresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## move_collection_item + +Reorder items in a collection with one item after another + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library_collections.move_collection_item(request={ + "collection_id": 239532, + "item_id": 513864, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `request` | [operations.MoveCollectionItemRequest](../../models/operations/movecollectionitemrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.MoveCollectionItemResponse](../../models/operations/movecollectionitemresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/libraryplaylists/README.md b/docs/sdks/libraryplaylists/README.md new file mode 100644 index 0000000..beabb47 --- /dev/null +++ b/docs/sdks/libraryplaylists/README.md @@ -0,0 +1,760 @@ +# LibraryPlaylists +(*library_playlists*) + +## Overview + +Endpoints for manipulating playlists. + +### Available Operations + +* [create_playlist](#create_playlist) - Create a Playlist +* [upload_playlist](#upload_playlist) - Upload +* [delete_playlist](#delete_playlist) - Delete a Playlist +* [update_playlist](#update_playlist) - Editing a Playlist +* [get_playlist_generators](#get_playlist_generators) - Get a playlist's generators +* [clear_playlist_items](#clear_playlist_items) - Clearing a playlist +* [add_playlist_items](#add_playlist_items) - Adding to a Playlist +* [delete_playlist_item](#delete_playlist_item) - Delete a Generator +* [get_playlist_generator](#get_playlist_generator) - Get a playlist generator +* [modify_playlist_generator](#modify_playlist_generator) - Modify a Generator +* [get_playlist_generator_items](#get_playlist_generator_items) - Get a playlist generator's items +* [move_playlist_item](#move_playlist_item) - Moving items in a playlist +* [refresh_playlist](#refresh_playlist) - Reprocess a generator + +## create_playlist + +Create a new playlist. By default the playlist is blank. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library_playlists.create_playlist(request={ + "uri": "https://short-term-disconnection.name/", + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.CreatePlaylistRequest](../../models/operations/createplaylistrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.CreatePlaylistResponse](../../models/operations/createplaylistresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## upload_playlist + +Imports m3u playlists by passing a path on the server to scan for m3u-formatted playlist files, or a path to a single playlist file. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library_playlists.upload_playlist(request={ + "path": "/home/barkley/playlist.m3u", + "force": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.UploadPlaylistRequest](../../models/operations/uploadplaylistrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.UploadPlaylistResponse](../../models/operations/uploadplaylistresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_playlist + +Deletes a playlist by provided id + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library_playlists.delete_playlist(request={ + "playlist_id": 343293, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.DeletePlaylistRequest](../../models/operations/deleteplaylistrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeletePlaylistResponse](../../models/operations/deleteplaylistresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## update_playlist + +Edits a playlist in the same manner as [editing metadata](#tag/Provider/operation/metadataPutItem) + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library_playlists.update_playlist(request={ + "playlist_id": 157966, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.UpdatePlaylistRequest](../../models/operations/updateplaylistrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.UpdatePlaylistResponse](../../models/operations/updateplaylistresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_playlist_generators + +Get all the generators in a playlist + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library_playlists.get_playlist_generators(request={ + "playlist_id": 162342, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `request` | [operations.GetPlaylistGeneratorsRequest](../../models/operations/getplaylistgeneratorsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetPlaylistGeneratorsResponse](../../models/operations/getplaylistgeneratorsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## clear_playlist_items + +Clears a playlist, only works with dumb playlists. Returns the playlist. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library_playlists.clear_playlist_items(request={ + "playlist_id": 552140, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `request` | [operations.ClearPlaylistItemsRequest](../../models/operations/clearplaylistitemsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ClearPlaylistItemsResponse](../../models/operations/clearplaylistitemsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## add_playlist_items + +Adds a generator to a playlist, same parameters as the POST above. With a dumb playlist, this adds the specified items to the playlist. With a smart playlist, passing a new `uri` parameter replaces the rules for the playlist. Returns the playlist. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library_playlists.add_playlist_items(request={ + "playlist_id": 533723, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.AddPlaylistItemsRequest](../../models/operations/addplaylistitemsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.AddPlaylistItemsResponse](../../models/operations/addplaylistitemsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_playlist_item + +Deletes an item from a playlist. Only works with dumb playlists. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library_playlists.delete_playlist_item(request={ + "playlist_id": 981646, + "generator_id": 194010, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `request` | [operations.DeletePlaylistItemRequest](../../models/operations/deleteplaylistitemrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeletePlaylistItemResponse](../../models/operations/deleteplaylistitemresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_playlist_generator + +Get a playlist's generator. Only used for optimized versions + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library_playlists.get_playlist_generator(request={ + "playlist_id": 744880, + "generator_id": 322168, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetPlaylistGeneratorRequest](../../models/operations/getplaylistgeneratorrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetPlaylistGeneratorResponse](../../models/operations/getplaylistgeneratorresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## modify_playlist_generator + +Modify a playlist generator. Only used for optimizer + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library_playlists.modify_playlist_generator(request={ + "playlist_id": 972007, + "generator_id": 208334, + "item": { + "location": { + "uri": "library://82503060-0d68-4603-b594-8b071d54819e/item/%2Flibrary%2Fmetadata%2F146", + }, + "location_id": -1, + "policy": { + "scope": operations.QueryParamScope.ALL, + "unwatched": components.BoolInt.ZERO, + }, + "target": "", + "target_tag_id": 1, + "title": "Jack-Jack Attack", + "type": 42, + }, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `request` | [operations.ModifyPlaylistGeneratorRequest](../../models/operations/modifyplaylistgeneratorrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ModifyPlaylistGeneratorResponse](../../models/operations/modifyplaylistgeneratorresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_playlist_generator_items + +Get a playlist generator's items + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library_playlists.get_playlist_generator_items(request={ + "playlist_id": 77230, + "generator_id": 979714, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `request` | [operations.GetPlaylistGeneratorItemsRequest](../../models/operations/getplaylistgeneratoritemsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetPlaylistGeneratorItemsResponse](../../models/operations/getplaylistgeneratoritemsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## move_playlist_item + +Moves an item in a playlist. Only works with dumb playlists. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library_playlists.move_playlist_item(request={ + "playlist_id": 940298, + "playlist_item_id": 375626, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.MovePlaylistItemRequest](../../models/operations/moveplaylistitemrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.MovePlaylistItemResponse](../../models/operations/moveplaylistitemresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## refresh_playlist + +Make a generator reprocess (refresh) + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.library_playlists.refresh_playlist(request={ + "playlist_id": 895314, + "generator_id": 629742, + "metadata_id": 724422, + "action": operations.Action.DISABLE, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.RefreshPlaylistRequest](../../models/operations/refreshplaylistrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.RefreshPlaylistResponse](../../models/operations/refreshplaylistresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/livetv/README.md b/docs/sdks/livetv/README.md new file mode 100644 index 0000000..80898e0 --- /dev/null +++ b/docs/sdks/livetv/README.md @@ -0,0 +1,222 @@ +# LiveTV +(*live_tv*) + +## Overview + +LiveTV contains the playback sessions of a channel from a DVR device + + +### Available Operations + +* [get_sessions](#get_sessions) - Get all sessions +* [get_live_tv_session](#get_live_tv_session) - Get a single session +* [get_session_playlist_index](#get_session_playlist_index) - Get a session playlist index +* [get_session_segment](#get_session_segment) - Get a single session segment + +## get_sessions + +Get all livetv sessions and metadata + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI( + token="", +) as plex_api: + + res = plex_api.live_tv.get_sessions() + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetSessionsResponse](../../models/operations/getsessionsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_live_tv_session + +Get a single livetv session and metadata + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.live_tv.get_live_tv_session(request={ + "session_id": "", + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.GetLiveTVSessionRequest](../../models/operations/getlivetvsessionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetLiveTVSessionResponse](../../models/operations/getlivetvsessionresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_session_playlist_index + +Get a playlist index for playing this session + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.live_tv.get_session_playlist_index(request={ + "session_id": "", + "consumer_id": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | +| `request` | [operations.GetSessionPlaylistIndexRequest](../../models/operations/getsessionplaylistindexrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetSessionPlaylistIndexResponse](../../models/operations/getsessionplaylistindexresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_session_segment + +Get a single LiveTV session segment + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.live_tv.get_session_segment(request={ + "session_id": "", + "consumer_id": "", + "segment_id": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `request` | [operations.GetSessionSegmentRequest](../../models/operations/getsessionsegmentrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetSessionSegmentResponse](../../models/operations/getsessionsegmentresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/log/README.md b/docs/sdks/log/README.md index 0a66b5c..7ea1461 100644 --- a/docs/sdks/log/README.md +++ b/docs/sdks/log/README.md @@ -3,33 +3,87 @@ ## Overview -Submit logs to the Log Handler for Plex Media Server - +Logging mechanism to allow clients to log to the server ### Available Operations -* [log_line](#log_line) - Logging a single line message. -* [log_multi_line](#log_multi_line) - Logging a multi-line message -* [enable_paper_trail](#enable_paper_trail) - Enabling Papertrail +* [write_log](#write_log) - Logging a multi-line message to the Plex Media Server log +* [write_message](#write_message) - Logging a single-line message to the Plex Media Server log +* [enable_papertrail](#enable_papertrail) - Enabling Papertrail -## log_line +## write_log + +This endpoint will write multiple lines to the main Plex Media Server log in a single request. It takes a set of query strings as would normally sent to the above PUT endpoint as a linefeed-separated block of POST data. The parameters for each query string match as above. + + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI( + token="", +) as plex_api: + + res = plex_api.log.write_log(request=open("example.file", "rb")) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `request` | [Union[bytes, IO[bytes], io.BufferedReader]](../../models/.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.WriteLogResponse](../../models/operations/writelogresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## write_message This endpoint will write a single-line log message, including a level and source to the main Plex Media Server log. +Note: This endpoint responds to all HTTP verbs **except POST** but PUT is preferred + ### Example Usage - + ```python from plex_api_client import PlexAPI -from plex_api_client.models import operations +from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.log.log_line(level=operations.Level.THREE, message="Test log message", source="Postman") + res = plex_api.log.write_message(request={}) assert res is not None @@ -40,64 +94,52 @@ with PlexAPI( ### Parameters -| Parameter | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -| `level` | [operations.Level](../../models/operations/level.md) | :heavy_check_mark: | An integer log level to write to the PMS log with.
0: Error
1: Warning
2: Info
3: Debug
4: Verbose
| | -| `message` | *str* | :heavy_check_mark: | The text of the message to write to the log. | Test log message | -| `source` | *str* | :heavy_check_mark: | a string indicating the source of the message. | Postman | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.WriteMessageRequest](../../models/operations/writemessagerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.LogLineResponse](../../models/operations/loglineresponse.md)** +**[operations.WriteMessageResponse](../../models/operations/writemessageresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| -------------------------- | -------------------------- | -------------------------- | -| errors.LogLineBadRequest | 400 | application/json | -| errors.LogLineUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | -## log_multi_line +## enable_papertrail -This endpoint allows for the batch addition of log entries to the main Plex Media Server log. -It accepts a text/plain request body, where each line represents a distinct log entry. -Each log entry consists of URL-encoded key-value pairs, specifying log attributes such as 'level', 'message', and 'source'. +This endpoint will enable all Plex Media Server logs to be sent to the Papertrail networked logging site for a period of time -Log entries are separated by a newline character (`\n`). -Each entry's parameters should be URL-encoded to ensure accurate parsing and handling of special characters. -This method is efficient for logging multiple entries in a single API call, reducing the overhead of multiple individual requests. - -The 'level' parameter specifies the log entry's severity or importance, with the following integer values: -- `0`: Error - Critical issues that require immediate attention. -- `1`: Warning - Important events that are not critical but may indicate potential issues. -- `2`: Info - General informational messages about system operation. -- `3`: Debug - Detailed information useful for debugging purposes. -- `4`: Verbose - Highly detailed diagnostic information for in-depth analysis. - -The 'message' parameter contains the log text, and 'source' identifies the log message's origin (e.g., an application name or module). - -Example of a single log entry format: -`level=4&message=Sample%20log%20entry&source=applicationName` - -Ensure each parameter is properly URL-encoded to avoid interpretation issues. +Note: This endpoint responds to all HTTP verbs but POST is preferred ### Example Usage - + ```python from plex_api_client import PlexAPI +from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.log.log_multi_line(request=("level=4&message=Test%20message%201&source=postman\n" - "level=3&message=Test%20message%202&source=postman\n" - "level=1&message=Test%20message%203&source=postman")) + res = plex_api.log.enable_papertrail(request={}) assert res is not None @@ -108,62 +150,17 @@ with PlexAPI( ### Parameters -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `request` | [str](../../models/.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.EnablePapertrailRequest](../../models/operations/enablepapertrailrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.LogMultiLineResponse](../../models/operations/logmultilineresponse.md)** +**[operations.EnablePapertrailResponse](../../models/operations/enablepapertrailresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ------------------------------- | ------------------------------- | ------------------------------- | -| errors.LogMultiLineBadRequest | 400 | application/json | -| errors.LogMultiLineUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## enable_paper_trail - -This endpoint will enable all Plex Media Serverlogs to be sent to the Papertrail networked logging site for a period of time. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.log.enable_paper_trail() - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.EnablePaperTrailResponse](../../models/operations/enablepapertrailresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | -| errors.EnablePaperTrailBadRequest | 400 | application/json | -| errors.EnablePaperTrailUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/media/README.md b/docs/sdks/media/README.md deleted file mode 100644 index 787e28c..0000000 --- a/docs/sdks/media/README.md +++ /dev/null @@ -1,247 +0,0 @@ -# Media -(*media*) - -## Overview - -API Calls interacting with Plex Media Server Media - - -### Available Operations - -* [mark_played](#mark_played) - Mark Media Played -* [mark_unplayed](#mark_unplayed) - Mark Media Unplayed -* [update_play_progress](#update_play_progress) - Update Media Play Progress -* [get_banner_image](#get_banner_image) - Get Banner Image -* [get_thumb_image](#get_thumb_image) - Get Thumb Image - -## mark_played - -This will mark the provided media key as Played. - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.media.mark_played(key=59398) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `key` | *float* | :heavy_check_mark: | The media key to mark as played | 59398 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.MarkPlayedResponse](../../models/operations/markplayedresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------- | ----------------------------- | ----------------------------- | -| errors.MarkPlayedBadRequest | 400 | application/json | -| errors.MarkPlayedUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## mark_unplayed - -This will mark the provided media key as Unplayed. - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.media.mark_unplayed(key=59398) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `key` | *float* | :heavy_check_mark: | The media key to mark as Unplayed | 59398 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.MarkUnplayedResponse](../../models/operations/markunplayedresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------- | ------------------------------- | ------------------------------- | -| errors.MarkUnplayedBadRequest | 400 | application/json | -| errors.MarkUnplayedUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## update_play_progress - -This API command can be used to update the play progress of a media item. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.media.update_play_progress(key="", time=90000, state="played") - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `key` | *str* | :heavy_check_mark: | the media key | | -| `time` | *float* | :heavy_check_mark: | The time, in milliseconds, used to set the media playback progress. | 90000 | -| `state` | *str* | :heavy_check_mark: | The playback state of the media item. | played | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.UpdatePlayProgressResponse](../../models/operations/updateplayprogressresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------- | ------------------------------------- | ------------------------------------- | -| errors.UpdatePlayProgressBadRequest | 400 | application/json | -| errors.UpdatePlayProgressUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_banner_image - -Gets the banner image of the media item - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.media.get_banner_image(request={ - "rating_key": 9518, - "width": 396, - "height": 396, - "min_size": 1, - "upscale": 1, - "x_plex_token": "CV5xoxjTpFKUzBTShsaf", - }) - - assert res.response_stream is not None - - # Handle response - print(res.response_stream) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `request` | [operations.GetBannerImageRequest](../../models/operations/getbannerimagerequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetBannerImageResponse](../../models/operations/getbannerimageresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.GetBannerImageBadRequest | 400 | application/json | -| errors.GetBannerImageUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_thumb_image - -Gets the thumbnail image of the media item - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.media.get_thumb_image(request={ - "rating_key": 9518, - "width": 396, - "height": 396, - "min_size": 1, - "upscale": 1, - "x_plex_token": "CV5xoxjTpFKUzBTShsaf", - }) - - assert res.response_stream is not None - - # Handle response - print(res.response_stream) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `request` | [operations.GetThumbImageRequest](../../models/operations/getthumbimagerequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetThumbImageResponse](../../models/operations/getthumbimageresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------- | -------------------------------- | -------------------------------- | -| errors.GetThumbImageBadRequest | 400 | application/json | -| errors.GetThumbImageUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/playlist/README.md b/docs/sdks/playlist/README.md new file mode 100644 index 0000000..930513e --- /dev/null +++ b/docs/sdks/playlist/README.md @@ -0,0 +1,176 @@ +# Playlist +(*playlist*) + +## Overview + +Media playlists that can be created and played back + +### Available Operations + +* [list_playlists](#list_playlists) - List playlists +* [get_playlist](#get_playlist) - Retrieve Playlist +* [get_playlist_items](#get_playlist_items) - Retrieve Playlist Contents + +## list_playlists + +Gets a list of playlists and playlist folders for a user. General filters are permitted, such as `sort=lastViewedAt:desc`. A flat playlist list can be retrieved using `type=15` to limit the collection to just playlists. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.playlist.list_playlists(request={}) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `request` | [operations.ListPlaylistsRequest](../../models/operations/listplaylistsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ListPlaylistsResponse](../../models/operations/listplaylistsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_playlist + +Gets detailed metadata for a playlist. A playlist for many purposes (rating, editing metadata, tagging), can be treated like a regular metadata item: +Smart playlist details contain the `content` attribute. This is the content URI for the generator. This can then be parsed by a client to provide smart playlist editing. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.playlist.get_playlist(request={ + "playlist_id": 841953, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `request` | [operations.GetPlaylistRequest](../../models/operations/getplaylistrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetPlaylistResponse](../../models/operations/getplaylistresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_playlist_items + +Gets the contents of a playlist. Should be paged by clients via standard mechanisms. By default leaves are returned (e.g. episodes, movies). In order to return other types you can use the `type` parameter. For example, you could use this to display a list of recently added albums vis a smart playlist. Note that for dumb playlists, items have a `playlistItemID` attribute which is used for deleting or moving items. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.playlist.get_playlist_items(request={ + "playlist_id": 118195, + }) + + assert res.media_container_with_metadata is not None + + # Handle response + print(res.media_container_with_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.GetPlaylistItemsRequest](../../models/operations/getplaylistitemsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetPlaylistItemsResponse](../../models/operations/getplaylistitemsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/playlists/README.md b/docs/sdks/playlists/README.md deleted file mode 100644 index 4e1a94e..0000000 --- a/docs/sdks/playlists/README.md +++ /dev/null @@ -1,440 +0,0 @@ -# Playlists -(*playlists*) - -## Overview - -Playlists are ordered collections of media. They can be dumb (just a list of media) or smart (based on a media query, such as "all albums from 2017"). -They can be organized in (optionally nesting) folders. -Retrieving a playlist, or its items, will trigger a refresh of its metadata. -This may cause the duration and number of items to change. - - -### Available Operations - -* [create_playlist](#create_playlist) - Create a Playlist -* [get_playlists](#get_playlists) - Get All Playlists -* [get_playlist](#get_playlist) - Retrieve Playlist -* [delete_playlist](#delete_playlist) - Deletes a Playlist -* [update_playlist](#update_playlist) - Update a Playlist -* [get_playlist_contents](#get_playlist_contents) - Retrieve Playlist Contents -* [clear_playlist_contents](#clear_playlist_contents) - Delete Playlist Contents -* [add_playlist_contents](#add_playlist_contents) - Adding to a Playlist -* [upload_playlist](#upload_playlist) - Upload Playlist - -## create_playlist - -Create a new playlist. By default the playlist is blank. To create a playlist along with a first item, pass: -- `uri` - The content URI for what we're playing (e.g. `server://1234/com.plexapp.plugins.library/library/metadata/1`). -- `playQueueID` - To create a playlist from an existing play queue. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI -from plex_api_client.models import operations - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.playlists.create_playlist(request={ - "title": "", - "type": operations.CreatePlaylistQueryParamType.AUDIO, - "smart": operations.Smart.ONE, - "uri": "https://short-term-disconnection.name/", - }) - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `request` | [operations.CreatePlaylistRequest](../../models/operations/createplaylistrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.CreatePlaylistResponse](../../models/operations/createplaylistresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.CreatePlaylistBadRequest | 400 | application/json | -| errors.CreatePlaylistUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_playlists - -Get All Playlists given the specified filters. - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.playlists.get_playlists() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | -| `playlist_type` | [Optional[operations.PlaylistType]](../../models/operations/playlisttype.md) | :heavy_minus_sign: | limit to a type of playlist. | -| `smart` | [Optional[operations.QueryParamSmart]](../../models/operations/queryparamsmart.md) | :heavy_minus_sign: | type of playlists to return (default is all). | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetPlaylistsResponse](../../models/operations/getplaylistsresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------- | ------------------------------- | ------------------------------- | -| errors.GetPlaylistsBadRequest | 400 | application/json | -| errors.GetPlaylistsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_playlist - -Gets detailed metadata for a playlist. A playlist for many purposes (rating, editing metadata, tagging), can be treated like a regular metadata item: -Smart playlist details contain the `content` attribute. This is the content URI for the generator. This can then be parsed by a client to provide smart playlist editing. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.playlists.get_playlist(playlist_id=8419.53) - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `playlist_id` | *float* | :heavy_check_mark: | the ID of the playlist | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetPlaylistResponse](../../models/operations/getplaylistresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------ | ------------------------------ | ------------------------------ | -| errors.GetPlaylistBadRequest | 400 | application/json | -| errors.GetPlaylistUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## delete_playlist - -This endpoint will delete a playlist - - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.playlists.delete_playlist(playlist_id=3432.93) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `playlist_id` | *float* | :heavy_check_mark: | the ID of the playlist | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.DeletePlaylistResponse](../../models/operations/deleteplaylistresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.DeletePlaylistBadRequest | 400 | application/json | -| errors.DeletePlaylistUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## update_playlist - -From PMS version 1.9.1 clients can also edit playlist metadata using this endpoint as they would via `PUT /library/metadata/{playlistID}` - - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.playlists.update_playlist(playlist_id=1579.66) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `playlist_id` | *float* | :heavy_check_mark: | the ID of the playlist | -| `title` | *Optional[str]* | :heavy_minus_sign: | name of the playlist | -| `summary` | *Optional[str]* | :heavy_minus_sign: | summary description of the playlist | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.UpdatePlaylistResponse](../../models/operations/updateplaylistresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.UpdatePlaylistBadRequest | 400 | application/json | -| errors.UpdatePlaylistUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_playlist_contents - -Gets the contents of a playlist. Should be paged by clients via standard mechanisms. -By default leaves are returned (e.g. episodes, movies). In order to return other types you can use the `type` parameter. -For example, you could use this to display a list of recently added albums vis a smart playlist. -Note that for dumb playlists, items have a `playlistItemID` attribute which is used for deleting or moving items. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI -from plex_api_client.models import operations - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.playlists.get_playlist_contents(playlist_id=5535.42, type_=operations.GetPlaylistContentsQueryParamType.TV_SHOW) - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `playlist_id` | *float* | :heavy_check_mark: | the ID of the playlist | | -| `type` | [operations.GetPlaylistContentsQueryParamType](../../models/operations/getplaylistcontentsqueryparamtype.md) | :heavy_check_mark: | The type of media to retrieve or filter by.
1 = movie
2 = show
3 = season
4 = episode
E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries
| 2 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.GetPlaylistContentsResponse](../../models/operations/getplaylistcontentsresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------------- | -------------------------------------- | -------------------------------------- | -| errors.GetPlaylistContentsBadRequest | 400 | application/json | -| errors.GetPlaylistContentsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## clear_playlist_contents - -Clears a playlist, only works with dumb playlists. Returns the playlist. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.playlists.clear_playlist_contents(playlist_id=4137.37) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `playlist_id` | *float* | :heavy_check_mark: | the ID of the playlist | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.ClearPlaylistContentsResponse](../../models/operations/clearplaylistcontentsresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| errors.ClearPlaylistContentsBadRequest | 400 | application/json | -| errors.ClearPlaylistContentsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## add_playlist_contents - -Adds a generator to a playlist, same parameters as the POST to create. With a dumb playlist, this adds the specified items to the playlist. -With a smart playlist, passing a new `uri` parameter replaces the rules for the playlist. Returns the playlist. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.playlists.add_playlist_contents(playlist_id=7013.44, uri="server://12345/com.plexapp.plugins.library/library/metadata/1", play_queue_id=123) - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `playlist_id` | *float* | :heavy_check_mark: | the ID of the playlist | | -| `uri` | *str* | :heavy_check_mark: | the content URI for the playlist | server://12345/com.plexapp.plugins.library/library/metadata/1 | -| `play_queue_id` | *Optional[float]* | :heavy_minus_sign: | the play queue to add to a playlist | 123 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.AddPlaylistContentsResponse](../../models/operations/addplaylistcontentsresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------------- | -------------------------------------- | -------------------------------------- | -| errors.AddPlaylistContentsBadRequest | 400 | application/json | -| errors.AddPlaylistContentsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## upload_playlist - -Imports m3u playlists by passing a path on the server to scan for m3u-formatted playlist files, or a path to a single playlist file. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI -from plex_api_client.models import operations - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.playlists.upload_playlist(path="/home/barkley/playlist.m3u", force=operations.QueryParamForce.ONE, section_id=1) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `path` | *str* | :heavy_check_mark: | absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server.
If the `path` argument is a directory, that path will be scanned for playlist files to be processed.
Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it.
The GUID of each playlist is based on the filename.
If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it.
The GUID of each playlist is based on the filename.
| /home/barkley/playlist.m3u | -| `force` | [operations.QueryParamForce](../../models/operations/queryparamforce.md) | :heavy_check_mark: | Force overwriting of duplicate playlists.
By default, a playlist file uploaded with the same path will overwrite the existing playlist.
The `force` argument is used to disable overwriting.
If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.
| | -| `section_id` | *int* | :heavy_check_mark: | Possibly the section ID to upload the playlist to, we are not certain. | 1 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.UploadPlaylistResponse](../../models/operations/uploadplaylistresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.UploadPlaylistBadRequest | 400 | application/json | -| errors.UploadPlaylistUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/playqueue/README.md b/docs/sdks/playqueue/README.md new file mode 100644 index 0000000..f6da420 --- /dev/null +++ b/docs/sdks/playqueue/README.md @@ -0,0 +1,530 @@ +# PlayQueue +(*play_queue*) + +## Overview + +The playqueue feature within a media provider +A play queue represents the current list of media for playback. Although queues are persisted by the server, they should be regarded by the user as a fairly lightweight, an ephemeral list of items queued up for playback in a session. There is generally one active queue for each type of media (music, video, photos) that can be added to or destroyed and replaced with a fresh queue. +Play Queues has a region, which we refer to in this doc (partially for historical reasons) as "Up Next". This region is defined by `playQueueLastAddedItemID` existing on the media container. This follows iTunes' terminology. It is a special region after the currently playing item but before the originally-played items. This enables "Party Mode" listening/viewing, where items can be added on-the-fly, and normal queue playback resumed when completed. +You can visualize the play queue as a sliding window in the complete list of media queued for playback. This model is important when scaling to larger play queues (e.g. shuffling 40,000 audio tracks). The client only needs visibility into small areas of the queue at any given time, and the server can optimize access in this fashion. +All created play queues will have an empty "Up Next" area - unless the item is an album and no `key` is provided. In this case the "Up Next" area will be populated by the contents of the album. This is to allow queueing of multiple albums - since the 'Add to Up Next' will insert after all the tracks. This means that If you're creating a PQ from an album, you can only shuffle it if you set `key`. This is due to the above implicit queueing of albums when no `key` is provided as well as the current limitation that you cannot shuffle a PQ with an "Up Next" area. +The play queue window advances as the server receives timeline requests. The client needs to retrieve the play queue as the “now playing” item changes. There is no play queue API to update the playing item. + +### Available Operations + +* [create_play_queue](#create_play_queue) - Create a play queue +* [get_play_queue](#get_play_queue) - Retrieve a play queue +* [add_to_play_queue](#add_to_play_queue) - Add a generator or playlist to a play queue +* [clear_play_queue](#clear_play_queue) - Clear a play queue +* [reset_play_queue](#reset_play_queue) - Reset a play queue +* [shuffle](#shuffle) - Shuffle a play queue +* [unshuffle](#unshuffle) - Unshuffle a play queue +* [delete_play_queue_item](#delete_play_queue_item) - Delete an item from a play queue +* [move_play_queue_item](#move_play_queue_item) - Move an item in a play queue + +## create_play_queue + +Makes a new play queue for a device. The source of the playqueue can either be a URI, or a playlist. The response is a media container with the initial items in the queue. Each item in the queue will be a regular item but with `playQueueItemID` - a unique ID since the queue could have repeated items with the same `ratingKey`. +Note: Either `uri` or `playlistID` must be specified + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.play_queue.create_play_queue(request=operations.CreatePlayQueueRequest( + type=operations.Type.AUDIO, + shuffle=components.BoolInt.ONE, + repeat=components.BoolInt.ONE, + continuous=components.BoolInt.ONE, + recursive=components.BoolInt.ONE, + on_deck=components.BoolInt.ONE, + )) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.CreatePlayQueueRequest](../../models/operations/createplayqueuerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.CreatePlayQueueResponse](../../models/operations/createplayqueueresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_play_queue + +Retrieves the play queue, centered at current item. This can be treated as a regular container by play queue-oblivious clients, but they may wish to request a large window onto the queue since they won't know to refresh. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.play_queue.get_play_queue(request=operations.GetPlayQueueRequest( + play_queue_id=210646, + own=components.BoolInt.ONE, + include_before=components.BoolInt.ONE, + include_after=components.BoolInt.ONE, + )) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.GetPlayQueueRequest](../../models/operations/getplayqueuerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetPlayQueueResponse](../../models/operations/getplayqueueresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## add_to_play_queue + +Adds an item to a play queue (e.g. party mode). Increments the version of the play queue. Takes the following parameters (`uri` and `playlistID` are mutually exclusive). Returns the modified play queue. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.play_queue.add_to_play_queue(request={ + "play_queue_id": 919248, + "next": components.BoolInt.ONE, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.AddToPlayQueueRequest](../../models/operations/addtoplayqueuerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.AddToPlayQueueResponse](../../models/operations/addtoplayqueueresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## clear_play_queue + +Deletes all items in the play queue, and increases the version of the play queue. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.play_queue.clear_play_queue(request={ + "play_queue_id": 86357, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.ClearPlayQueueRequest](../../models/operations/clearplayqueuerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ClearPlayQueueResponse](../../models/operations/clearplayqueueresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## reset_play_queue + +Reset a play queue to the first item being the current item + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.play_queue.reset_play_queue(request={ + "play_queue_id": 581891, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.ResetPlayQueueRequest](../../models/operations/resetplayqueuerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ResetPlayQueueResponse](../../models/operations/resetplayqueueresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## shuffle + +Shuffle a play queue (or reshuffles if already shuffled). The currently selected item is maintained. Note that this is currently only supported for play queues *without* an Up Next area. Returns the modified play queue. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.play_queue.shuffle(request={ + "play_queue_id": 316150, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `request` | [operations.ShuffleRequest](../../models/operations/shufflerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ShuffleResponse](../../models/operations/shuffleresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## unshuffle + +Unshuffles a play queue and restores "natural order". Note that this is currently only supported for play queues *without* an Up Next area. Returns the modified play queue. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.play_queue.unshuffle(request={ + "play_queue_id": 484388, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.UnshuffleRequest](../../models/operations/unshufflerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.UnshuffleResponse](../../models/operations/unshuffleresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_play_queue_item + +Deletes an item in a play queue. Increments the version of the play queue. Returns the modified play queue. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.play_queue.delete_play_queue_item(request={ + "play_queue_id": 285738, + "play_queue_item_id": 464354, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `request` | [operations.DeletePlayQueueItemRequest](../../models/operations/deleteplayqueueitemrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeletePlayQueueItemResponse](../../models/operations/deleteplayqueueitemresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## move_play_queue_item + +Moves an item in a play queue, and increases the version of the play queue. Returns the modified play queue. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.play_queue.move_play_queue_item(request={ + "play_queue_id": 31341, + "play_queue_item_id": 495865, + }) + + assert res.media_container_with_playlist_metadata is not None + + # Handle response + print(res.media_container_with_playlist_metadata) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ | +| `request` | [operations.MovePlayQueueItemRequest](../../models/operations/moveplayqueueitemrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.MovePlayQueueItemResponse](../../models/operations/moveplayqueueitemresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/plex/README.md b/docs/sdks/plex/README.md deleted file mode 100644 index 6ddf77f..0000000 --- a/docs/sdks/plex/README.md +++ /dev/null @@ -1,330 +0,0 @@ -# Plex -(*plex*) - -## Overview - -API Calls that perform operations directly against https://Plex.tv - - -### Available Operations - -* [get_companions_data](#get_companions_data) - Get Companions Data -* [get_user_friends](#get_user_friends) - Get list of friends of the user logged in -* [get_geo_data](#get_geo_data) - Get Geo Data -* [get_home_data](#get_home_data) - Get Plex Home Data -* [get_server_resources](#get_server_resources) - Get Server Resources -* [get_pin](#get_pin) - Get a Pin -* [get_token_by_pin_id](#get_token_by_pin_id) - Get Access Token by PinId - -## get_companions_data - -Get Companions Data - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.plex.get_companions_data() - - assert res.response_bodies is not None - - # Handle response - print(res.response_bodies) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | -| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[operations.GetCompanionsDataResponse](../../models/operations/getcompanionsdataresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | -| errors.GetCompanionsDataBadRequest | 400 | application/json | -| errors.GetCompanionsDataUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_user_friends - -Get friends of provided auth token. - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.plex.get_user_friends() - - assert res.friends is not None - - # Handle response - print(res.friends) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | -| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[operations.GetUserFriendsResponse](../../models/operations/getuserfriendsresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------- | --------------------------------- | --------------------------------- | -| errors.GetUserFriendsBadRequest | 400 | application/json | -| errors.GetUserFriendsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_geo_data - -Returns the geolocation and locale data of the caller - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI() as plex_api: - - res = plex_api.plex.get_geo_data() - - assert res.geo_data is not None - - # Handle response - print(res.geo_data) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | -| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[operations.GetGeoDataResponse](../../models/operations/getgeodataresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------- | ----------------------------- | ----------------------------- | -| errors.GetGeoDataBadRequest | 400 | application/json | -| errors.GetGeoDataUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_home_data - -Retrieves the home data for the authenticated user, including details like home ID, name, guest access information, and subscription status. - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.plex.get_home_data() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetHomeDataResponse](../../models/operations/gethomedataresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------ | ------------------------------ | ------------------------------ | -| errors.GetHomeDataBadRequest | 400 | application/json | -| errors.GetHomeDataUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_server_resources - -Get Plex server access tokens and server connections - -### Example Usage - - -```python -from plex_api_client import PlexAPI -from plex_api_client.models import operations - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.plex.get_server_resources(client_id="3381b62b-9ab7-4e37-827b-203e9809eb58", include_https=operations.IncludeHTTPS.ENABLE, include_relay=operations.IncludeRelay.ENABLE, include_i_pv6=operations.IncludeIPv6.ENABLE) - - assert res.plex_devices is not None - - # Handle response - print(res.plex_devices) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | -| `client_id` | *str* | :heavy_check_mark: | An opaque identifier unique to the client (UUID, serial number, or other unique device ID) | 3381b62b-9ab7-4e37-827b-203e9809eb58 | -| `include_https` | [Optional[operations.IncludeHTTPS]](../../models/operations/includehttps.md) | :heavy_minus_sign: | Include Https entries in the results | 1 | -| `include_relay` | [Optional[operations.IncludeRelay]](../../models/operations/includerelay.md) | :heavy_minus_sign: | Include Relay addresses in the results
E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400
| 1 | -| `include_i_pv6` | [Optional[operations.IncludeIPv6]](../../models/operations/includeipv6.md) | :heavy_minus_sign: | Include IPv6 entries in the results | 1 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | -| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | http://localhost:8080 | - -### Response - -**[operations.GetServerResourcesResponse](../../models/operations/getserverresourcesresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------- | ------------------------------------- | ------------------------------------- | -| errors.GetServerResourcesBadRequest | 400 | application/json | -| errors.GetServerResourcesUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_pin - -Retrieve a Pin ID from Plex.tv to use for authentication flows - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI() as plex_api: - - res = plex_api.plex.get_pin(request={ - "client_id": "3381b62b-9ab7-4e37-827b-203e9809eb58", - "client_name": "Plex for Roku", - "device_nickname": "Roku 3", - "client_version": "2.4.1", - "platform": "Roku", - }) - - assert res.auth_pin_container is not None - - # Handle response - print(res.auth_pin_container) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `request` | [operations.GetPinRequest](../../models/operations/getpinrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | -| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[operations.GetPinResponse](../../models/operations/getpinresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------- | ----------------------- | ----------------------- | -| errors.GetPinBadRequest | 400 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_token_by_pin_id - -Retrieve an Access Token from Plex.tv after the Pin has been authenticated - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI() as plex_api: - - res = plex_api.plex.get_token_by_pin_id(request={ - "pin_id": 232248, - "client_id": "3381b62b-9ab7-4e37-827b-203e9809eb58", - "client_name": "Plex for Roku", - "device_nickname": "Roku 3", - "client_version": "2.4.1", - "platform": "Roku", - }) - - assert res.auth_pin_container is not None - - # Handle response - print(res.auth_pin_container) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `request` | [operations.GetTokenByPinIDRequest](../../models/operations/gettokenbypinidrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | -| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[operations.GetTokenByPinIDResponse](../../models/operations/gettokenbypinidresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | -| errors.GetTokenByPinIDBadRequest | 400 | application/json | -| errors.GetTokenByPinIDResponseBody | 404 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/plexapi/README.md b/docs/sdks/plexapi/README.md deleted file mode 100644 index 1e395e4..0000000 --- a/docs/sdks/plexapi/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# PlexAPI SDK - -## Overview - -# Plex Media Server OpenAPI Specification - -An Open Source OpenAPI Specification for Plex Media Server - -Automation and SDKs provided by [Speakeasy](https://speakeasyapi.dev/) - -## Documentation - -[API Documentation](https://plexapi.dev) - -## SDKs - -The following SDKs are generated from the OpenAPI Specification. They are automatically generated and may not be fully tested. If you find any issues, please open an issue on the [main specification Repository](https://github.com/LukeHagar/plex-api-spec). - -| Language | Repository | Releases | Other | -| --------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------- | -| Python | [GitHub](https://github.com/LukeHagar/plexpy) | [PyPI](https://pypi.org/project/plex-api-client/) | - | -| JavaScript/TypeScript | [GitHub](https://github.com/LukeHagar/plexjs) | [NPM](https://www.npmjs.com/package/@lukehagar/plexjs) \ [JSR](https://jsr.io/@lukehagar/plexjs) | - | -| Go | [GitHub](https://github.com/LukeHagar/plexgo) | [Releases](https://github.com/LukeHagar/plexgo/releases) | [GoDoc](https://pkg.go.dev/github.com/LukeHagar/plexgo) | -| Ruby | [GitHub](https://github.com/LukeHagar/plexruby) | [Releases](https://github.com/LukeHagar/plexruby/releases) | - | -| Swift | [GitHub](https://github.com/LukeHagar/plexswift) | [Releases](https://github.com/LukeHagar/plexswift/releases) | - | -| PHP | [GitHub](https://github.com/LukeHagar/plexphp) | [Releases](https://github.com/LukeHagar/plexphp/releases) | - | -| Java | [GitHub](https://github.com/LukeHagar/plexjava) | [Releases](https://github.com/LukeHagar/plexjava/releases) | - | -| C# | [GitHub](https://github.com/LukeHagar/plexcsharp) | [Releases](https://github.com/LukeHagar/plexcsharp/releases) | - - - -### Available Operations diff --git a/docs/sdks/preferences/README.md b/docs/sdks/preferences/README.md new file mode 100644 index 0000000..ce2788e --- /dev/null +++ b/docs/sdks/preferences/README.md @@ -0,0 +1,160 @@ +# Preferences +(*preferences*) + +## Overview + +API Operations against the Preferences + +### Available Operations + +* [get_all_preferences](#get_all_preferences) - Get all preferences +* [set_preferences](#set_preferences) - Set preferences +* [get_preference](#get_preference) - Get a preferences + +## get_all_preferences + +Get the list of all preferences + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI( + token="", +) as plex_api: + + res = plex_api.preferences.get_all_preferences() + + assert res.media_container_with_settings is not None + + # Handle response + print(res.media_container_with_settings) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetAllPreferencesResponse](../../models/operations/getallpreferencesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## set_preferences + +Set a set of preferences in query parameters + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.preferences.set_preferences(request={ + "prefs": {}, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.SetPreferencesRequest](../../models/operations/setpreferencesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.SetPreferencesResponse](../../models/operations/setpreferencesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_preference + +Get a single preference and value + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.preferences.get_preference(request={}) + + assert res.media_container_with_settings is not None + + # Handle response + print(res.media_container_with_settings) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `request` | [operations.GetPreferenceRequest](../../models/operations/getpreferencerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetPreferenceResponse](../../models/operations/getpreferenceresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/provider/README.md b/docs/sdks/provider/README.md new file mode 100644 index 0000000..93b9c6a --- /dev/null +++ b/docs/sdks/provider/README.md @@ -0,0 +1,203 @@ +# Provider +(*provider*) + +## Overview + +Media providers are the starting points for the entire Plex Media Server media library API. It defines the paths for the groups of endpoints. The `/media/providers` should be the only hard-coded path in clients when accessing the media library. Non-media library endpoints are outside the scope of the media provider. See the description in See [the section in API Info](#section/API-Info/Media-Providers) for more information on how to use media providers. + +### Available Operations + +* [list_providers](#list_providers) - Get the list of available media providers +* [add_provider](#add_provider) - Add a media provider +* [refresh_providers](#refresh_providers) - Refresh media providers +* [delete_media_provider](#delete_media_provider) - Delete a media provider + +## list_providers + +Get the list of all available media providers for this PMS. This will generally include the library provider and possibly EPG if DVR is set up. + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI( + token="", +) as plex_api: + + res = plex_api.provider.list_providers() + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ListProvidersResponse](../../models/operations/listprovidersresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## add_provider + +This endpoint registers a media provider with the server. Once registered, the media server acts as a reverse proxy to the provider, allowing both local and remote providers to work. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.provider.add_provider(request={ + "url": "https://steep-obedience.name/", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `request` | [operations.AddProviderRequest](../../models/operations/addproviderrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.AddProviderResponse](../../models/operations/addproviderresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## refresh_providers + +Refresh all known media providers. This is useful in case a provider has updated features. + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI( + token="", +) as plex_api: + + res = plex_api.provider.refresh_providers() + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.RefreshProvidersResponse](../../models/operations/refreshprovidersresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_media_provider + +Deletes a media provider with the given id + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.provider.delete_media_provider(request={ + "provider": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `request` | [operations.DeleteMediaProviderRequest](../../models/operations/deletemediaproviderrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeleteMediaProviderResponse](../../models/operations/deletemediaproviderresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/rate/README.md b/docs/sdks/rate/README.md new file mode 100644 index 0000000..68f9a52 --- /dev/null +++ b/docs/sdks/rate/README.md @@ -0,0 +1,68 @@ +# Rate +(*rate*) + +## Overview + +Operations for rating media items (thumbs up/down, star ratings, etc.) + +### Available Operations + +* [set_rating](#set_rating) - Rate an item + +## set_rating + +Set the rating on an item. +This API does respond to the GET verb but applications should use PUT + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.rate.set_rating(request={ + "identifier": "", + "key": "", + "rating": 8722.46, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.SetRatingRequest](../../models/operations/setratingrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.SetRatingResponse](../../models/operations/setratingresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/search/README.md b/docs/sdks/search/README.md index 76bf6bd..ec7508f 100644 --- a/docs/sdks/search/README.md +++ b/docs/sdks/search/README.md @@ -3,16 +3,16 @@ ## Overview -API Calls that perform search operations with Plex Media Server - +The search feature within a media provider ### Available Operations -* [perform_search](#perform_search) - Perform a search -* [perform_voice_search](#perform_voice_search) - Perform a voice search -* [get_search_results](#get_search_results) - Get Search Results +* [search_hubs](#search_hubs) - Search Hub +* [voice_search_hubs](#voice_search_hubs) - Voice Search Hub -## perform_search +## search_hubs + +Perform a search and get the result as hubs This endpoint performs a search across all library sections, or a single section, and returns matches as hubs, split up by type. It performs spell checking, looks for partial matches, and orders the hubs based on quality of results. In addition, based on matches, it will return other related matches (e.g. for a genre match, it may return movies in that genre, or for an actor match, movies with that actor). @@ -30,110 +30,31 @@ This request is intended to be very fast, and called as the user types. ### Example Usage - + ```python from plex_api_client import PlexAPI +from plex_api_client.models import components with PlexAPI( - access_token="", + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", ) as plex_api: - res = plex_api.search.perform_search(query="arnold", limit=5) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `query` | *str* | :heavy_check_mark: | The query term | arnold | -| `section_id` | *Optional[float]* | :heavy_minus_sign: | This gives context to the search, and can result in re-ordering of search result hubs | | -| `limit` | *Optional[float]* | :heavy_minus_sign: | The number of items to return per hub | 5 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.PerformSearchResponse](../../models/operations/performsearchresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------- | -------------------------------- | -------------------------------- | -| errors.PerformSearchBadRequest | 400 | application/json | -| errors.PerformSearchUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## perform_voice_search - -This endpoint performs a search specifically tailored towards voice or other imprecise input which may work badly with the substring and spell-checking heuristics used by the `/hubs/search` endpoint. -It uses a [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance) heuristic to search titles, and as such is much slower than the other search endpoint. -Whenever possible, clients should limit the search to the appropriate type. -Results, as well as their containing per-type hubs, contain a `distance` attribute which can be used to judge result quality. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.search.perform_voice_search(query="dead+poop", limit=5) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | -| `query` | *str* | :heavy_check_mark: | The query term | dead+poop | -| `section_id` | *Optional[float]* | :heavy_minus_sign: | This gives context to the search, and can result in re-ordering of search result hubs | | -| `limit` | *Optional[float]* | :heavy_minus_sign: | The number of items to return per hub | 5 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.PerformVoiceSearchResponse](../../models/operations/performvoicesearchresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------- | ------------------------------------- | ------------------------------------- | -| errors.PerformVoiceSearchBadRequest | 400 | application/json | -| errors.PerformVoiceSearchUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_search_results - -This will search the database for the string provided. - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.search.get_search_results(query="110") + res = plex_api.search.search_hubs(request={ + "query": "", + "section_id": 1, + }) assert res.object is not None @@ -144,19 +65,77 @@ with PlexAPI( ### Parameters -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `query` | *str* | :heavy_check_mark: | The search query string to use | 110 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `request` | [operations.SearchHubsRequest](../../models/operations/searchhubsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response -**[operations.GetSearchResultsResponse](../../models/operations/getsearchresultsresponse.md)** +**[operations.SearchHubsResponse](../../models/operations/searchhubsresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | -| errors.GetSearchResultsBadRequest | 400 | application/json | -| errors.GetSearchResultsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## voice_search_hubs + +Perform a search tailored to voice input and get the result as hubs + +This endpoint performs a search specifically tailored towards voice or other imprecise input which may work badly with the substring and spell-checking heuristics used by the `/hubs/search` endpoint. It uses a [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance) heuristic to search titles, and as such is much slower than the other search endpoint. Whenever possible, clients should limit the search to the appropriate type. + +Results, as well as their containing per-type hubs, contain a `distance` attribute which can be used to judge result quality. + + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.search.voice_search_hubs(request={ + "query": "", + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.VoiceSearchHubsRequest](../../models/operations/voicesearchhubsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.VoiceSearchHubsResponse](../../models/operations/voicesearchhubsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/server/README.md b/docs/sdks/server/README.md deleted file mode 100644 index c03351d..0000000 --- a/docs/sdks/server/README.md +++ /dev/null @@ -1,405 +0,0 @@ -# Server -(*server*) - -## Overview - -Operations against the Plex Media Server System. - - -### Available Operations - -* [get_server_capabilities](#get_server_capabilities) - Get Server Capabilities -* [get_server_preferences](#get_server_preferences) - Get Server Preferences -* [get_available_clients](#get_available_clients) - Get Available Clients -* [get_devices](#get_devices) - Get Devices -* [get_server_identity](#get_server_identity) - Get Server Identity -* [get_my_plex_account](#get_my_plex_account) - Get MyPlex Account -* [get_resized_photo](#get_resized_photo) - Get a Resized Photo -* [get_media_providers](#get_media_providers) - Get Media Providers -* [get_server_list](#get_server_list) - Get Server List - -## get_server_capabilities - -Get Server Capabilities - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.server.get_server_capabilities() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetServerCapabilitiesResponse](../../models/operations/getservercapabilitiesresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | -| errors.GetServerCapabilitiesBadRequest | 400 | application/json | -| errors.GetServerCapabilitiesUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_server_preferences - -Get Server Preferences - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.server.get_server_preferences() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetServerPreferencesResponse](../../models/operations/getserverpreferencesresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------------- | --------------------------------------- | --------------------------------------- | -| errors.GetServerPreferencesBadRequest | 400 | application/json | -| errors.GetServerPreferencesUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_available_clients - -Get Available Clients - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.server.get_available_clients() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetAvailableClientsResponse](../../models/operations/getavailableclientsresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------------- | -------------------------------------- | -------------------------------------- | -| errors.GetAvailableClientsBadRequest | 400 | application/json | -| errors.GetAvailableClientsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_devices - -Get Devices - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.server.get_devices() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetDevicesResponse](../../models/operations/getdevicesresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------- | ----------------------------- | ----------------------------- | -| errors.GetDevicesBadRequest | 400 | application/json | -| errors.GetDevicesUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_server_identity - -This request is useful to determine if the server is online or offline - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI() as plex_api: - - res = plex_api.server.get_server_identity() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetServerIdentityResponse](../../models/operations/getserveridentityresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------------- | -------------------------------------- | -------------------------------------- | -| errors.GetServerIdentityRequestTimeout | 408 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_my_plex_account - -Returns MyPlex Account Information - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.server.get_my_plex_account() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetMyPlexAccountResponse](../../models/operations/getmyplexaccountresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | -| errors.GetMyPlexAccountBadRequest | 400 | application/json | -| errors.GetMyPlexAccountUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_resized_photo - -Plex's Photo transcoder is used throughout the service to serve images at specified sizes. - - -### Example Usage - - -```python -from plex_api_client import PlexAPI -from plex_api_client.models import operations - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.server.get_resized_photo(request={ - "width": 110, - "height": 165, - "blur": 0, - "min_size": operations.MinSize.ZERO, - "upscale": operations.Upscale.ZERO, - "url": "/library/metadata/49564/thumb/1654258204", - }) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `request` | [operations.GetResizedPhotoRequest](../../models/operations/getresizedphotorequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetResizedPhotoResponse](../../models/operations/getresizedphotoresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | -| errors.GetResizedPhotoBadRequest | 400 | application/json | -| errors.GetResizedPhotoUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_media_providers - -Retrieves media providers and their features from the Plex server. - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.server.get_media_providers(x_plex_token="CV5xoxjTpFKUzBTShsaf") - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `x_plex_token` | *str* | :heavy_check_mark: | An authentication token, obtained from plex.tv | CV5xoxjTpFKUzBTShsaf | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.GetMediaProvidersResponse](../../models/operations/getmediaprovidersresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | -| errors.GetMediaProvidersBadRequest | 400 | application/json | -| errors.GetMediaProvidersUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_server_list - -Get Server List - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.server.get_server_list() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetServerListResponse](../../models/operations/getserverlistresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------- | -------------------------------- | -------------------------------- | -| errors.GetServerListBadRequest | 400 | application/json | -| errors.GetServerListUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/sessions/README.md b/docs/sdks/sessions/README.md deleted file mode 100644 index 8d43f8e..0000000 --- a/docs/sdks/sessions/README.md +++ /dev/null @@ -1,187 +0,0 @@ -# Sessions -(*sessions*) - -## Overview - -API Calls that perform search operations with Plex Media Server Sessions - - -### Available Operations - -* [get_sessions](#get_sessions) - Get Active Sessions -* [get_session_history](#get_session_history) - Get Session History -* [get_transcode_sessions](#get_transcode_sessions) - Get Transcode Sessions -* [stop_transcode_session](#stop_transcode_session) - Stop a Transcode Session - -## get_sessions - -This will retrieve the "Now Playing" Information of the PMS. - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.sessions.get_sessions() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetSessionsResponse](../../models/operations/getsessionsresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------ | ------------------------------ | ------------------------------ | -| errors.GetSessionsBadRequest | 400 | application/json | -| errors.GetSessionsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_session_history - -This will Retrieve a listing of all history views. - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.sessions.get_session_history(sort="viewedAt:desc", account_id=1, filter_={}, library_section_id=12) - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `sort` | *Optional[str]* | :heavy_minus_sign: | Sorts the results by the specified field followed by the direction (asc, desc)
| | -| `account_id` | *Optional[int]* | :heavy_minus_sign: | Filter results by those that are related to a specific users id
| 1 | -| `filter_` | [Optional[operations.QueryParamFilter]](../../models/operations/queryparamfilter.md) | :heavy_minus_sign: | Filters content by field and direction/equality
(Unknown if viewedAt is the only supported column)
| {
"viewed-at-greater-than": {
"value": "viewedAt\u003e"
},
"viewed-at-greater-than-or-equal-to": {
"value": "viewedAt\u003e=\u003e"
},
"viewed-at-less-than": {
"value": "viewedAt\u003c"
}
} | -| `library_section_id` | *Optional[int]* | :heavy_minus_sign: | Filters the results based on the id of a valid library section
| 12 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.GetSessionHistoryResponse](../../models/operations/getsessionhistoryresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | -| errors.GetSessionHistoryBadRequest | 400 | application/json | -| errors.GetSessionHistoryUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_transcode_sessions - -Get Transcode Sessions - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.sessions.get_transcode_sessions() - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetTranscodeSessionsResponse](../../models/operations/gettranscodesessionsresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------------- | --------------------------------------- | --------------------------------------- | -| errors.GetTranscodeSessionsBadRequest | 400 | application/json | -| errors.GetTranscodeSessionsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## stop_transcode_session - -Stop a Transcode Session - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.sessions.stop_transcode_session(session_key="zz7llzqlx8w9vnrsbnwhbmep") - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `session_key` | *str* | :heavy_check_mark: | the Key of the transcode session to stop | zz7llzqlx8w9vnrsbnwhbmep | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.StopTranscodeSessionResponse](../../models/operations/stoptranscodesessionresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------------------- | --------------------------------------- | --------------------------------------- | -| errors.StopTranscodeSessionBadRequest | 400 | application/json | -| errors.StopTranscodeSessionUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/statistics/README.md b/docs/sdks/statistics/README.md deleted file mode 100644 index ae21e5c..0000000 --- a/docs/sdks/statistics/README.md +++ /dev/null @@ -1,142 +0,0 @@ -# Statistics -(*statistics*) - -## Overview - -API Calls that perform operations with Plex Media Server Statistics - - -### Available Operations - -* [get_statistics](#get_statistics) - Get Media Statistics -* [get_resources_statistics](#get_resources_statistics) - Get Resources Statistics -* [get_bandwidth_statistics](#get_bandwidth_statistics) - Get Bandwidth Statistics - -## get_statistics - -This will return the media statistics for the server - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.statistics.get_statistics(timespan=4) - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `timespan` | *Optional[int]* | :heavy_minus_sign: | The timespan to retrieve statistics for
the exact meaning of this parameter is not known
| 4 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.GetStatisticsResponse](../../models/operations/getstatisticsresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| -------------------------------- | -------------------------------- | -------------------------------- | -| errors.GetStatisticsBadRequest | 400 | application/json | -| errors.GetStatisticsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_resources_statistics - -This will return the resources for the server - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.statistics.get_resources_statistics(timespan=4) - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `timespan` | *Optional[int]* | :heavy_minus_sign: | The timespan to retrieve statistics for
the exact meaning of this parameter is not known
| 4 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.GetResourcesStatisticsResponse](../../models/operations/getresourcesstatisticsresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | -| errors.GetResourcesStatisticsBadRequest | 400 | application/json | -| errors.GetResourcesStatisticsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## get_bandwidth_statistics - -This will return the bandwidth statistics for the server - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.statistics.get_bandwidth_statistics(timespan=4) - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | -| `timespan` | *Optional[int]* | :heavy_minus_sign: | The timespan to retrieve statistics for
the exact meaning of this parameter is not known
| 4 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.GetBandwidthStatisticsResponse](../../models/operations/getbandwidthstatisticsresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ----------------------------------------- | ----------------------------------------- | ----------------------------------------- | -| errors.GetBandwidthStatisticsBadRequest | 400 | application/json | -| errors.GetBandwidthStatisticsUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/status/README.md b/docs/sdks/status/README.md new file mode 100644 index 0000000..f7befc6 --- /dev/null +++ b/docs/sdks/status/README.md @@ -0,0 +1,341 @@ +# Status +(*status*) + +## Overview + +The status endpoints give you information about current playbacks, play history, and even terminating sessions. + +### Available Operations + +* [list_sessions](#list_sessions) - List Sessions +* [get_background_tasks](#get_background_tasks) - Get background tasks +* [list_playback_history](#list_playback_history) - List Playback History +* [terminate_session](#terminate_session) - Terminate a session +* [delete_history](#delete_history) - Delete Single History Item +* [get_history_item](#get_history_item) - Get Single History Item + +## list_sessions + +List all current playbacks on this server + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI( + token="", +) as plex_api: + + res = plex_api.status.list_sessions() + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ListSessionsResponse](../../models/operations/listsessionsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_background_tasks + +Get the list of all background tasks + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI( + token="", +) as plex_api: + + res = plex_api.status.get_background_tasks() + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetBackgroundTasksResponse](../../models/operations/getbackgroundtasksresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## list_playback_history + +List all playback history (Admin can see all users, others can only see their own). +Pagination should be used on this endpoint. Additionally this endpoint supports `includeFields`, `excludeFields`, `includeElements`, and `excludeElements` parameters. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.status.list_playback_history(request={ + "sort": [ + "v", + "i", + "e", + "w", + "e", + "d", + "A", + "t", + ":", + "d", + "e", + "s", + "c", + ",", + "a", + "c", + "c", + "o", + "u", + "n", + "t", + "I", + "D", + ], + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `request` | [operations.ListPlaybackHistoryRequest](../../models/operations/listplaybackhistoryrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ListPlaybackHistoryResponse](../../models/operations/listplaybackhistoryresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## terminate_session + +Terminate a playback session kicking off the user + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.status.terminate_session(request={ + "session_id": "cdefghijklmnopqrstuvwxyz", + "reason": "Stop Playing", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.TerminateSessionRequest](../../models/operations/terminatesessionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.TerminateSessionResponse](../../models/operations/terminatesessionresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_history + +Delete a single history item by id + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.status.delete_history(request={ + "history_id": 953579, + }) + + assert res.media_container is not None + + # Handle response + print(res.media_container) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `request` | [operations.DeleteHistoryRequest](../../models/operations/deletehistoryrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeleteHistoryResponse](../../models/operations/deletehistoryresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_history_item + +Get a single history item by id + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.status.get_history_item(request={ + "history_id": 832213, + }) + + assert res.history_all_get_responses_200 is not None + + # Handle response + print(res.history_all_get_responses_200) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.GetHistoryItemRequest](../../models/operations/gethistoryitemrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetHistoryItemResponse](../../models/operations/gethistoryitemresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/subscriptions/README.md b/docs/sdks/subscriptions/README.md new file mode 100644 index 0000000..60cdc1d --- /dev/null +++ b/docs/sdks/subscriptions/README.md @@ -0,0 +1,550 @@ +# Subscriptions +(*subscriptions*) + +## Overview + +Subscriptions determine which media will be recorded and the criteria for selecting an airing when multiple are available + + +### Available Operations + +* [get_all_subscriptions](#get_all_subscriptions) - Get all subscriptions +* [create_subscription](#create_subscription) - Create a subscription +* [process_subscriptions](#process_subscriptions) - Process all subscriptions +* [get_scheduled_recordings](#get_scheduled_recordings) - Get all scheduled recordings +* [get_template](#get_template) - Get the subscription template +* [cancel_grab](#cancel_grab) - Cancel an existing grab +* [delete_subscription](#delete_subscription) - Delete a subscription +* [get_subscription](#get_subscription) - Get a single subscription +* [edit_subscription_preferences](#edit_subscription_preferences) - Edit a subscription +* [reorder_subscription](#reorder_subscription) - Re-order a subscription + +## get_all_subscriptions + +Get all subscriptions and potentially the grabs too + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.subscriptions.get_all_subscriptions(request=operations.GetAllSubscriptionsRequest( + include_grabs=components.BoolInt.ONE, + include_storage=components.BoolInt.ONE, + )) + + assert res.media_container_with_subscription is not None + + # Handle response + print(res.media_container_with_subscription) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `request` | [operations.GetAllSubscriptionsRequest](../../models/operations/getallsubscriptionsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetAllSubscriptionsResponse](../../models/operations/getallsubscriptionsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## create_subscription + +Create a subscription. The query parameters should be mostly derived from the [template](#tag/Subscriptions/operation/mediaSubscriptionsGetTemplate) + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.subscriptions.create_subscription(request={ + "target_library_section_id": 1, + "target_section_location_id": 3, + "type": 2, + "hints": {}, + "prefs": {}, + "params": {}, + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `request` | [operations.CreateSubscriptionRequest](../../models/operations/createsubscriptionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.CreateSubscriptionResponse](../../models/operations/createsubscriptionresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## process_subscriptions + +Process all subscriptions asynchronously + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI( + token="", +) as plex_api: + + res = plex_api.subscriptions.process_subscriptions() + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ProcessSubscriptionsResponse](../../models/operations/processsubscriptionsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_scheduled_recordings + +Get all scheduled recordings across all subscriptions + +### Example Usage + + +```python +from plex_api_client import PlexAPI + + +with PlexAPI( + token="", +) as plex_api: + + res = plex_api.subscriptions.get_scheduled_recordings() + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetScheduledRecordingsResponse](../../models/operations/getscheduledrecordingsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_template + +Get the templates for a piece of media which could include fetching one airing, season, the whole show, etc. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.subscriptions.get_template(request={ + "guid": "plex://episode/5fc70265c40548002d539d23", + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| `request` | [operations.GetTemplateRequest](../../models/operations/gettemplaterequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetTemplateResponse](../../models/operations/gettemplateresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## cancel_grab + +Cancels an existing media grab (recording). It can be used to resolve a conflict which exists for a rolling subscription. +Note: This cancellation does not persist across a server restart, but neither does a rolling subscription itself. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.subscriptions.cancel_grab(request={ + "operation_id": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `request` | [operations.CancelGrabRequest](../../models/operations/cancelgrabrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.CancelGrabResponse](../../models/operations/cancelgrabresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## delete_subscription + +Delete a subscription, cancelling all of its grabs as well + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.subscriptions.delete_subscription(request={ + "subscription_id": 974618, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `request` | [operations.DeleteSubscriptionRequest](../../models/operations/deletesubscriptionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.DeleteSubscriptionResponse](../../models/operations/deletesubscriptionresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_subscription + +Get a single subscription and potentially the grabs too + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.subscriptions.get_subscription(request=operations.GetSubscriptionRequest( + subscription_id=186713, + include_grabs=components.BoolInt.ONE, + include_storage=components.BoolInt.ONE, + )) + + assert res.media_container_with_subscription is not None + + # Handle response + print(res.media_container_with_subscription) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.GetSubscriptionRequest](../../models/operations/getsubscriptionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetSubscriptionResponse](../../models/operations/getsubscriptionresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## edit_subscription_preferences + +Edit a subscription's preferences + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.subscriptions.edit_subscription_preferences(request={ + "subscription_id": 673918, + "prefs": {}, + }) + + assert res.media_container_with_subscription is not None + + # Handle response + print(res.media_container_with_subscription) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | +| `request` | [operations.EditSubscriptionPreferencesRequest](../../models/operations/editsubscriptionpreferencesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.EditSubscriptionPreferencesResponse](../../models/operations/editsubscriptionpreferencesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## reorder_subscription + +Re-order a subscription to change its priority + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.subscriptions.reorder_subscription(request={ + "subscription_id": 440634, + }) + + assert res.media_container_with_subscription is not None + + # Handle response + print(res.media_container_with_subscription) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | +| `request` | [operations.ReorderSubscriptionRequest](../../models/operations/reordersubscriptionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ReorderSubscriptionResponse](../../models/operations/reordersubscriptionresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/timeline/README.md b/docs/sdks/timeline/README.md new file mode 100644 index 0000000..6943047 --- /dev/null +++ b/docs/sdks/timeline/README.md @@ -0,0 +1,194 @@ +# Timeline +(*timeline*) + +## Overview + +The actions feature within a media provider + +### Available Operations + +* [mark_played](#mark_played) - Mark an item as played +* [report](#report) - Report media timeline +* [unscrobble](#unscrobble) - Mark an item as unplayed + +## mark_played + +Mark an item as played. Note, this does not create any view history of this item but rather just sets the state as played. The client must provide either the `key` or `uri` query parameter +This API does respond to the GET verb but applications should use PUT + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.timeline.mark_played(request={ + "identifier": "", + "key": "59398", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `request` | [operations.MarkPlayedRequest](../../models/operations/markplayedrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.MarkPlayedResponse](../../models/operations/markplayedresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## report + +This endpoint is hit during media playback for an item. It must be hit whenever the play state changes, or in the absence of a play state change, in a regular fashion (generally this means every 10 seconds on a LAN/WAN, and every 20 seconds over cellular). + + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.timeline.report(request=operations.ReportRequest( + key="/foo", + rating_key="xyz", + state=operations.State.PLAYING, + play_queue_item_id="123", + time=0, + duration=10000, + continuing=components.BoolInt.ONE, + updated=14200000, + offline=components.BoolInt.ONE, + time_to_first_frame=1000, + time_stalled=1000, + bandwidth=100, + buffered_time=100, + buffered_size=1024, + )) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `request` | [operations.ReportRequest](../../models/operations/reportrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ReportResponse](../../models/operations/reportresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## unscrobble + +Mark an item as unplayed. The client must provide either the `key` or `uri` query parameter +This API does respond to the GET verb but applications should use PUT + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.timeline.unscrobble(request={ + "identifier": "", + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | +| `request` | [operations.UnscrobbleRequest](../../models/operations/unscrobblerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.UnscrobbleResponse](../../models/operations/unscrobbleresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/transcoder/README.md b/docs/sdks/transcoder/README.md new file mode 100644 index 0000000..42e8510 --- /dev/null +++ b/docs/sdks/transcoder/README.md @@ -0,0 +1,376 @@ +# Transcoder +(*transcoder*) + +## Overview + +API Operations against the Transcoder + +### Available Operations + +* [transcode_image](#transcode_image) - Transcode an image +* [make_decision](#make_decision) - Make a decision on media playback +* [trigger_fallback](#trigger_fallback) - Manually trigger a transcoder fallback +* [transcode_subtitles](#transcode_subtitles) - Transcode subtitles +* [start_transcode_session](#start_transcode_session) - Start A Transcoding Session + +## transcode_image + +Transcode an image, possibly changing format or size + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.transcoder.transcode_image(request=operations.TranscodeImageRequest( + url="/library/metadata/265/thumb/1715112705", + background="#ff5522", + upscale=components.BoolInt.ONE, + min_size=components.BoolInt.ONE, + rotate=components.BoolInt.ONE, + blend_color="#ff5522", + )) + + assert res.two_hundred_image_jpeg_response_stream is not None + + # Handle response + print(res.two_hundred_image_jpeg_response_stream) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | +| `request` | [operations.TranscodeImageRequest](../../models/operations/transcodeimagerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.TranscodeImageResponse](../../models/operations/transcodeimageresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## make_decision + +Make a decision on media playback based on client profile, and requested settings such as bandwidth and resolution. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.transcoder.make_decision(request=operations.MakeDecisionRequest( + transcode_type=components.TranscodeType.MUSIC, + advanced_subtitles=components.AdvancedSubtitles.BURN, + audio_boost=50, + audio_channel_count=5, + auto_adjust_quality=components.BoolInt.ONE, + auto_adjust_subtitle=components.BoolInt.ONE, + direct_play=components.BoolInt.ONE, + direct_stream=components.BoolInt.ONE, + direct_stream_audio=components.BoolInt.ONE, + disable_resolution_rotation=components.BoolInt.ONE, + has_mde=components.BoolInt.ONE, + location=operations.Location.WAN, + media_buffer_size=102400, + media_index=0, + music_bitrate=5000, + offset=90.5, + part_index=0, + path="/library/metadata/151671", + peak_bitrate=12000, + photo_resolution="1080x1080", + protocol=operations.Protocol.DASH, + seconds_per_segment=5, + subtitle_size=50, + video_bitrate=12000, + video_quality=50, + video_resolution="1080x1080", + x_plex_client_profile_extra="add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + x_plex_client_profile_name="generic", + )) + + assert res.media_container_with_decision is not None + + # Handle response + print(res.media_container_with_decision) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.MakeDecisionRequest](../../models/operations/makedecisionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.MakeDecisionResponse](../../models/operations/makedecisionresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## trigger_fallback + +Manually trigger a transcoder fallback ex: HEVC to h.264 or hw to sw + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.transcoder.trigger_fallback(request={ + "transcode_type": components.TranscodeType.AUDIO, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `request` | [operations.TriggerFallbackRequest](../../models/operations/triggerfallbackrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.TriggerFallbackResponse](../../models/operations/triggerfallbackresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## transcode_subtitles + +Only transcode subtitle streams. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.transcoder.transcode_subtitles(request=operations.TranscodeSubtitlesRequest( + transcode_type=components.TranscodeType.AUDIO, + advanced_subtitles=components.AdvancedSubtitles.BURN, + audio_boost=50, + audio_channel_count=5, + auto_adjust_quality=components.BoolInt.ONE, + auto_adjust_subtitle=components.BoolInt.ONE, + direct_play=components.BoolInt.ONE, + direct_stream=components.BoolInt.ONE, + direct_stream_audio=components.BoolInt.ONE, + disable_resolution_rotation=components.BoolInt.ONE, + has_mde=components.BoolInt.ONE, + location=operations.QueryParamLocation.WAN, + media_buffer_size=102400, + media_index=0, + music_bitrate=5000, + offset=90.5, + part_index=0, + path="/library/metadata/151671", + peak_bitrate=12000, + photo_resolution="1080x1080", + protocol=operations.QueryParamProtocol.DASH, + seconds_per_segment=5, + subtitle_size=50, + video_bitrate=12000, + video_quality=50, + video_resolution="1080x1080", + x_plex_client_profile_extra="add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + x_plex_client_profile_name="generic", + )) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | +| `request` | [operations.TranscodeSubtitlesRequest](../../models/operations/transcodesubtitlesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.TranscodeSubtitlesResponse](../../models/operations/transcodesubtitlesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## start_transcode_session + +Starts the transcoder and returns the corresponding streaming resource document. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.transcoder.start_transcode_session(request=operations.StartTranscodeSessionRequest( + transcode_type=components.TranscodeType.MUSIC, + extension=operations.Extension.MPD, + advanced_subtitles=components.AdvancedSubtitles.BURN, + audio_boost=50, + audio_channel_count=5, + auto_adjust_quality=components.BoolInt.ONE, + auto_adjust_subtitle=components.BoolInt.ONE, + direct_play=components.BoolInt.ONE, + direct_stream=components.BoolInt.ONE, + direct_stream_audio=components.BoolInt.ONE, + disable_resolution_rotation=components.BoolInt.ONE, + has_mde=components.BoolInt.ONE, + location=operations.StartTranscodeSessionQueryParamLocation.WAN, + media_buffer_size=102400, + media_index=0, + music_bitrate=5000, + offset=90.5, + part_index=0, + path="/library/metadata/151671", + peak_bitrate=12000, + photo_resolution="1080x1080", + protocol=operations.StartTranscodeSessionQueryParamProtocol.DASH, + seconds_per_segment=5, + subtitle_size=50, + video_bitrate=12000, + video_quality=50, + video_resolution="1080x1080", + x_plex_client_profile_extra="add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)", + x_plex_client_profile_name="generic", + )) + + assert res.response_stream is not None + + # Handle response + print(res.response_stream) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | +| `request` | [operations.StartTranscodeSessionRequest](../../models/operations/starttranscodesessionrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.StartTranscodeSessionResponse](../../models/operations/starttranscodesessionresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/ultrablur/README.md b/docs/sdks/ultrablur/README.md new file mode 100644 index 0000000..e249745 --- /dev/null +++ b/docs/sdks/ultrablur/README.md @@ -0,0 +1,127 @@ +# UltraBlur +(*ultra_blur*) + +## Overview + +Service provided to compute UltraBlur colors and images. + +### Available Operations + +* [get_colors](#get_colors) - Get UltraBlur Colors +* [get_image](#get_image) - Get UltraBlur Image + +## get_colors + +Retrieves the four colors extracted from an image for clients to use to generate an ultrablur image. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.ultra_blur.get_colors(request={ + "url": "/library/metadata/217745/art/1718931408", + }) + + assert res.object is not None + + # Handle response + print(res.object) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `request` | [operations.GetColorsRequest](../../models/operations/getcolorsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetColorsResponse](../../models/operations/getcolorsresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_image + +Retrieves a server-side generated UltraBlur image based on the provided color inputs. Clients should always call this via the photo transcoder endpoint. + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.ultra_blur.get_image(request={ + "top_left": "3f280a", + "top_right": "6b4713", + "bottom_right": "0f2a43", + "bottom_left": "1c425d", + "width": 1920, + "height": 1080, + "noise": components.BoolInt.ONE, + }) + + assert res.response_stream is not None + + # Handle response + print(res.response_stream) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | +| `request` | [operations.GetImageRequest](../../models/operations/getimagerequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.GetImageResponse](../../models/operations/getimageresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/updater/README.md b/docs/sdks/updater/README.md index 21f4b06..9f9200a 100644 --- a/docs/sdks/updater/README.md +++ b/docs/sdks/updater/README.md @@ -9,26 +9,137 @@ Updates to the status can be observed via the Event API. ### Available Operations -* [get_update_status](#get_update_status) - Querying status of updates -* [check_for_updates](#check_for_updates) - Checking for updates -* [apply_updates](#apply_updates) - Apply Updates +* [apply_updates](#apply_updates) - Applying updates +* [check_updates](#check_updates) - Checking for updates +* [get_updates_status](#get_updates_status) - Querying status of updates -## get_update_status +## apply_updates -Querying status of updates +Apply any downloaded updates. Note that the two parameters `tonight` and `skip` are effectively mutually exclusive. The `tonight` parameter takes precedence and `skip` will be ignored if `tonight` is also passed. ### Example Usage - + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components, operations + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.updater.apply_updates(request=operations.ApplyUpdatesRequest( + tonight=components.BoolInt.ONE, + skip=components.BoolInt.ONE, + )) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.ApplyUpdatesRequest](../../models/operations/applyupdatesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.ApplyUpdatesResponse](../../models/operations/applyupdatesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## check_updates + +Perform an update check and potentially download + +### Example Usage + + +```python +from plex_api_client import PlexAPI +from plex_api_client.models import components + + +with PlexAPI( + accepts=components.Accepts.APPLICATION_XML, + client_identifier="abc123", + product="Plex for Roku", + version="2.4.1", + platform="Roku", + platform_version="4.3 build 1057", + device="Roku 3", + model="4200X", + device_vendor="Roku", + device_name="Living Room TV", + marketplace="googlePlay", + token="", +) as plex_api: + + res = plex_api.updater.check_updates(request={ + "download": components.BoolInt.ONE, + }) + + assert res is not None + + # Handle response + print(res) + +``` + +### Parameters + +| Parameter | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `request` | [operations.CheckUpdatesRequest](../../models/operations/checkupdatesrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + +### Response + +**[operations.CheckUpdatesResponse](../../models/operations/checkupdatesresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | + +## get_updates_status + +Get the status of updating the server + +### Example Usage + + ```python from plex_api_client import PlexAPI with PlexAPI( - access_token="", + token="", ) as plex_api: - res = plex_api.updater.get_update_status() + res = plex_api.updater.get_updates_status() assert res.object is not None @@ -45,102 +156,10 @@ with PlexAPI( ### Response -**[operations.GetUpdateStatusResponse](../../models/operations/getupdatestatusresponse.md)** +**[operations.GetUpdatesStatusResponse](../../models/operations/getupdatesstatusresponse.md)** ### Errors -| Error Type | Status Code | Content Type | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | -| errors.GetUpdateStatusBadRequest | 400 | application/json | -| errors.GetUpdateStatusUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## check_for_updates - -Checking for updates - -### Example Usage - - -```python -from plex_api_client import PlexAPI -from plex_api_client.models import operations - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.updater.check_for_updates(download=operations.Download.ONE) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `download` | [Optional[operations.Download]](../../models/operations/download.md) | :heavy_minus_sign: | Indicate that you want to start download any updates found. | 1 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.CheckForUpdatesResponse](../../models/operations/checkforupdatesresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ---------------------------------- | ---------------------------------- | ---------------------------------- | -| errors.CheckForUpdatesBadRequest | 400 | application/json | -| errors.CheckForUpdatesUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## apply_updates - -Note that these two parameters are effectively mutually exclusive. The `tonight` parameter takes precedence and `skip` will be ignored if `tonight` is also passed - - -### Example Usage - - -```python -from plex_api_client import PlexAPI -from plex_api_client.models import operations - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.updater.apply_updates(tonight=operations.Tonight.ONE, skip=operations.Skip.ONE) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `tonight` | [Optional[operations.Tonight]](../../models/operations/tonight.md) | :heavy_minus_sign: | Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install | 1 | -| `skip` | [Optional[operations.Skip]](../../models/operations/skip.md) | :heavy_minus_sign: | Indicate that the latest version should be marked as skipped. The [Release] entry for this version will have the `state` set to `skipped`. | 1 | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | - -### Response - -**[operations.ApplyUpdatesResponse](../../models/operations/applyupdatesresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------- | ------------------------------- | ------------------------------- | -| errors.ApplyUpdatesBadRequest | 400 | application/json | -| errors.ApplyUpdatesUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file +| Error Type | Status Code | Content Type | +| --------------- | --------------- | --------------- | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/users/README.md b/docs/sdks/users/README.md deleted file mode 100644 index 2ad84bf..0000000 --- a/docs/sdks/users/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# Users -(*users*) - -## Overview - -### Available Operations - -* [get_users](#get_users) - Get list of all connected users - -## get_users - -Get list of all users that are friends and have library access with the provided Plex authentication token - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI() as plex_api: - - res = plex_api.users.get_users(request={ - "client_id": "3381b62b-9ab7-4e37-827b-203e9809eb58", - "client_name": "Plex for Roku", - "device_nickname": "Roku 3", - "device_name": "Chrome", - "device_screen_resolution": "1487x1165,2560x1440", - "client_version": "2.4.1", - "platform": "Roku", - "client_features": "external-media,indirect-media,hub-style-list", - "model": "4200X", - "x_plex_session_id": "97e136ef-4ddd-4ff3-89a7-a5820c96c2ca", - "x_plex_language": "en", - "platform_version": "4.3 build 1057", - "x_plex_token": "CV5xoxjTpFKUzBTShsaf", - }) - - assert res.body is not None - - # Handle response - print(res.body) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ | -| `request` | [operations.GetUsersRequest](../../models/operations/getusersrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | -| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[operations.GetUsersResponse](../../models/operations/getusersresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.GetUsersBadRequest | 400 | application/json | -| errors.GetUsersUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/video/README.md b/docs/sdks/video/README.md deleted file mode 100644 index cd17013..0000000 --- a/docs/sdks/video/README.md +++ /dev/null @@ -1,127 +0,0 @@ -# Video -(*video*) - -## Overview - -API Calls that perform operations with Plex Media Server Videos - - -### Available Operations - -* [get_timeline](#get_timeline) - Get the timeline for a media item -* [start_universal_transcode](#start_universal_transcode) - Start Universal Transcode - -## get_timeline - -Get the timeline for a media item - -### Example Usage - - -```python -from plex_api_client import PlexAPI -from plex_api_client.models import operations - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.video.get_timeline(request={ - "rating_key": 23409, - "key": "/library/metadata/23409", - "state": operations.State.PLAYING, - "has_mde": 1, - "time": 2000, - "duration": 10000, - "context": "home:hub.continueWatching", - "play_queue_item_id": 1, - "play_back_time": 2000, - "row": 1, - }) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | -| `request` | [operations.GetTimelineRequest](../../models/operations/gettimelinerequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.GetTimelineResponse](../../models/operations/gettimelineresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------ | ------------------------------ | ------------------------------ | -| errors.GetTimelineBadRequest | 400 | application/json | -| errors.GetTimelineUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | - -## start_universal_transcode - -Begin a Universal Transcode Session - -### Example Usage - - -```python -from plex_api_client import PlexAPI - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.video.start_universal_transcode(request={ - "has_mde": 1, - "path": "/library/metadata/23409", - "media_index": 0, - "part_index": 0, - "protocol": "hls", - "fast_seek": 0, - "direct_play": 0, - "direct_stream": 0, - "subtitle_size": 100, - "subtites": "burn", - "audio_boost": 100, - "location": "lan", - "media_buffer_size": 102400, - "session": "zvcage8b7rkioqcm8f4uns4c", - "add_debug_overlay": 0, - "auto_adjust_quality": 0, - }) - - assert res is not None - - # Handle response - print(res) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | -| `request` | [operations.StartUniversalTranscodeRequest](../../models/operations/startuniversaltranscoderequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | - -### Response - -**[operations.StartUniversalTranscodeResponse](../../models/operations/startuniversaltranscoderesponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------------------ | ------------------------------------------ | ------------------------------------------ | -| errors.StartUniversalTranscodeBadRequest | 400 | application/json | -| errors.StartUniversalTranscodeUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/watchlist/README.md b/docs/sdks/watchlist/README.md deleted file mode 100644 index c13363a..0000000 --- a/docs/sdks/watchlist/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# Watchlist -(*watchlist*) - -## Overview - -API Calls that perform operations with Plex Media Server Watchlists - - -### Available Operations - -* [get_watch_list](#get_watch_list) - Get User Watchlist - -## get_watch_list - -Get User Watchlist - -### Example Usage - - -```python -from plex_api_client import PlexAPI -from plex_api_client.models import operations - - -with PlexAPI( - access_token="", -) as plex_api: - - res = plex_api.watchlist.get_watch_list(request={ - "filter_": operations.Filter.RELEASED, - "x_plex_token": "CV5xoxjTpFKUzBTShsaf", - }) - - assert res.object is not None - - # Handle response - print(res.object) - -``` - -### Parameters - -| Parameter | Type | Required | Description | -| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| `request` | [operations.GetWatchListRequest](../../models/operations/getwatchlistrequest.md) | :heavy_check_mark: | The request object to use for the request. | -| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | -| `server_url` | *Optional[str]* | :heavy_minus_sign: | An optional server URL to use. | - -### Response - -**[operations.GetWatchListResponse](../../models/operations/getwatchlistresponse.md)** - -### Errors - -| Error Type | Status Code | Content Type | -| ------------------------------- | ------------------------------- | ------------------------------- | -| errors.GetWatchListBadRequest | 400 | application/json | -| errors.GetWatchListUnauthorized | 401 | application/json | -| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/pylintrc b/pylintrc index ce324e0..f24f982 100644 --- a/pylintrc +++ b/pylintrc @@ -188,10 +188,9 @@ good-names=i, Run, _, e, - at, + hd, id, - ip, - qr + v # Good variable names regexes, separated by a comma. If names match any regex, # they will always be accepted diff --git a/pyproject.toml b/pyproject.toml index 437cb49..7389777 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "plex-api-client" -version = "0.30.0" +version = "0.31.0" description = "Python Client SDK Generated by Speakeasy" authors = [{ name = "Speakeasy" },] readme = "README-PYPI.md" @@ -35,7 +35,6 @@ build-backend = "poetry.core.masonry.api" [tool.pytest.ini_options] asyncio_default_fixture_loop_scope = "function" -asyncio_mode = "auto" pythonpath = ["src"] [tool.mypy] diff --git a/src/plex_api_client/_version.py b/src/plex_api_client/_version.py index e9684f5..231e0ff 100644 --- a/src/plex_api_client/_version.py +++ b/src/plex_api_client/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "plex-api-client" -__version__: str = "0.30.0" -__openapi_doc_version__: str = "0.0.3" -__gen_version__: str = "2.698.4" -__user_agent__: str = "speakeasy-sdk/python 0.30.0 2.698.4 0.0.3 plex-api-client" +__version__: str = "0.31.0" +__openapi_doc_version__: str = "1.1.1" +__gen_version__: str = "2.723.11" +__user_agent__: str = "speakeasy-sdk/python 0.31.0 2.723.11 1.1.1 plex-api-client" try: if __package__ is not None: diff --git a/src/plex_api_client/activities.py b/src/plex_api_client/activities.py index bc043ff..93b8530 100644 --- a/src/plex_api_client/activities.py +++ b/src/plex_api_client/activities.py @@ -4,33 +4,31 @@ from .basesdk import BaseSDK from plex_api_client import utils from plex_api_client._hooks import HookContext from plex_api_client.models import errors, operations -from plex_api_client.types import OptionalNullable, UNSET +from plex_api_client.types import BaseModel, OptionalNullable, UNSET from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Mapping, Optional +from typing import Mapping, Optional, Union, cast class Activities(BaseSDK): - r"""Activities are awesome. They provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints. + r"""Activities provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints. + Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity. - Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. Other details: - - They can contain a `progress` (from 0 to 100) marking the percent completion of the activity. - - They must contain an `type` which is used by clients to distinguish the specific activity. - - They may contain a `Context` object with attributes which associate the activity with various specific entities (items, libraries, etc.) - - The may contain a `Response` object which attributes which represent the result of the asynchronous operation. + + Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. """ - def get_server_activities( + def list_activities( self, *, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetServerActivitiesResponse: - r"""Get Server Activities + ) -> operations.ListActivitiesResponse: + r"""Get all activities - Get Server Activities + List all activities on the server. Admins can see all activities but other users can only see their own :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -74,37 +72,24 @@ class Activities(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getServerActivities", - oauth2_scopes=[], + operation_id="listActivities", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return operations.GetServerActivitiesResponse( + return operations.ListActivitiesResponse( object=unmarshal_json_response( - Optional[operations.GetServerActivitiesResponseBody], http_res + Optional[operations.ListActivitiesResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerActivitiesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerActivitiesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerActivitiesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerActivitiesUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -114,17 +99,17 @@ class Activities(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - async def get_server_activities_async( + async def list_activities_async( self, *, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetServerActivitiesResponse: - r"""Get Server Activities + ) -> operations.ListActivitiesResponse: + r"""Get all activities - Get Server Activities + List all activities on the server. Admins can see all activities but other users can only see their own :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -168,37 +153,24 @@ class Activities(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getServerActivities", - oauth2_scopes=[], + operation_id="listActivities", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return operations.GetServerActivitiesResponse( + return operations.ListActivitiesResponse( object=unmarshal_json_response( - Optional[operations.GetServerActivitiesResponseBody], http_res + Optional[operations.ListActivitiesResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerActivitiesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerActivitiesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerActivitiesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerActivitiesUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -208,20 +180,22 @@ class Activities(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - def cancel_server_activities( + def cancel_activity( self, *, - activity_uuid: str, + request: Union[ + operations.CancelActivityRequest, operations.CancelActivityRequestTypedDict + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.CancelServerActivitiesResponse: - r"""Cancel Server Activities + ) -> operations.CancelActivityResponse: + r"""Cancel a running activity - Cancel Server Activities + Cancel a running activity. Admins can cancel all activities but other users can only cancel their own - :param activity_uuid: The UUID of the activity to cancel. + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -237,13 +211,13 @@ class Activities(BaseSDK): else: base_url = self._get_url(base_url, url_variables) - request = operations.CancelServerActivitiesRequest( - activity_uuid=activity_uuid, - ) + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CancelActivityRequest) + request = cast(operations.CancelActivityRequest, request) req = self._build_request( method="DELETE", - path="/activities/{activityUUID}", + path="/activities/{activityId}", base_url=base_url, url_variables=url_variables, request=request, @@ -251,8 +225,21 @@ class Activities(BaseSDK): request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, + _globals=operations.CancelActivityGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -269,35 +256,22 @@ class Activities(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="cancelServerActivities", - oauth2_scopes=[], + operation_id="cancelActivity", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["400", "404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "*"): - return operations.CancelServerActivitiesResponse( + return operations.CancelActivityResponse( status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.CancelServerActivitiesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.CancelServerActivitiesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.CancelServerActivitiesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.CancelServerActivitiesUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): @@ -306,20 +280,22 @@ class Activities(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - async def cancel_server_activities_async( + async def cancel_activity_async( self, *, - activity_uuid: str, + request: Union[ + operations.CancelActivityRequest, operations.CancelActivityRequestTypedDict + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.CancelServerActivitiesResponse: - r"""Cancel Server Activities + ) -> operations.CancelActivityResponse: + r"""Cancel a running activity - Cancel Server Activities + Cancel a running activity. Admins can cancel all activities but other users can only cancel their own - :param activity_uuid: The UUID of the activity to cancel. + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -335,13 +311,13 @@ class Activities(BaseSDK): else: base_url = self._get_url(base_url, url_variables) - request = operations.CancelServerActivitiesRequest( - activity_uuid=activity_uuid, - ) + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CancelActivityRequest) + request = cast(operations.CancelActivityRequest, request) req = self._build_request_async( method="DELETE", - path="/activities/{activityUUID}", + path="/activities/{activityId}", base_url=base_url, url_variables=url_variables, request=request, @@ -349,8 +325,21 @@ class Activities(BaseSDK): request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, + _globals=operations.CancelActivityGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -367,35 +356,22 @@ class Activities(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="cancelServerActivities", - oauth2_scopes=[], + operation_id="cancelActivity", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["400", "404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "*"): - return operations.CancelServerActivitiesResponse( + return operations.CancelActivityResponse( status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.CancelServerActivitiesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.CancelServerActivitiesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.CancelServerActivitiesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.CancelServerActivitiesUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): diff --git a/src/plex_api_client/authentication.py b/src/plex_api_client/authentication.py deleted file mode 100644 index 54f7a80..0000000 --- a/src/plex_api_client/authentication.py +++ /dev/null @@ -1,833 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from .basesdk import BaseSDK -from plex_api_client import utils -from plex_api_client._hooks import HookContext -from plex_api_client.models import errors, operations -from plex_api_client.types import BaseModel, OptionalNullable, UNSET -from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Mapping, Optional, Union, cast - - -class Authentication(BaseSDK): - r"""API Calls regarding authentication for Plex Media Server""" - - def get_transient_token( - self, - *, - type_: operations.GetTransientTokenQueryParamType, - scope: operations.Scope, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetTransientTokenResponse: - r"""Get a Transient Token - - This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted. - - - :param type: `delegation` - This is the only supported `type` parameter. - :param scope: `all` - This is the only supported `scope` parameter. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetTransientTokenRequest( - type=type_, - scope=scope, - ) - - req = self._build_request( - method="GET", - path="/security/token", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getTransientToken", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.GetTransientTokenResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetTransientTokenBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTransientTokenBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetTransientTokenUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTransientTokenUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_transient_token_async( - self, - *, - type_: operations.GetTransientTokenQueryParamType, - scope: operations.Scope, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetTransientTokenResponse: - r"""Get a Transient Token - - This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted. - - - :param type: `delegation` - This is the only supported `type` parameter. - :param scope: `all` - This is the only supported `scope` parameter. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetTransientTokenRequest( - type=type_, - scope=scope, - ) - - req = self._build_request_async( - method="GET", - path="/security/token", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getTransientToken", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.GetTransientTokenResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetTransientTokenBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTransientTokenBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetTransientTokenUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTransientTokenUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_source_connection_information( - self, - *, - source: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetSourceConnectionInformationResponse: - r"""Get Source Connection Information - - If a caller requires connection details and a transient token for a source that is known to the server, for example a cloud media provider or shared PMS, then this endpoint can be called. This endpoint is only accessible with either an admin token or a valid transient token generated from an admin token. - Note: requires Plex Media Server >= 1.15.4. - - - :param source: The source identifier with an included prefix. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetSourceConnectionInformationRequest( - source=source, - ) - - req = self._build_request( - method="GET", - path="/security/resources", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getSourceConnectionInformation", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.GetSourceConnectionInformationResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetSourceConnectionInformationBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSourceConnectionInformationBadRequest( - response_data, http_res - ) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetSourceConnectionInformationUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSourceConnectionInformationUnauthorized( - response_data, http_res - ) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_source_connection_information_async( - self, - *, - source: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetSourceConnectionInformationResponse: - r"""Get Source Connection Information - - If a caller requires connection details and a transient token for a source that is known to the server, for example a cloud media provider or shared PMS, then this endpoint can be called. This endpoint is only accessible with either an admin token or a valid transient token generated from an admin token. - Note: requires Plex Media Server >= 1.15.4. - - - :param source: The source identifier with an included prefix. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetSourceConnectionInformationRequest( - source=source, - ) - - req = self._build_request_async( - method="GET", - path="/security/resources", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getSourceConnectionInformation", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.GetSourceConnectionInformationResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetSourceConnectionInformationBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSourceConnectionInformationBadRequest( - response_data, http_res - ) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetSourceConnectionInformationUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSourceConnectionInformationUnauthorized( - response_data, http_res - ) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_token_details( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetTokenDetailsResponse: - r"""Get Token Details - - Get the User data from the provided X-Plex-Token - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_TOKEN_DETAILS_SERVERS[0] - req = self._build_request( - method="GET", - path="/user", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getTokenDetails", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetTokenDetailsResponse( - user_plex_account=unmarshal_json_response( - Optional[operations.GetTokenDetailsUserPlexAccount], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetTokenDetailsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTokenDetailsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetTokenDetailsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTokenDetailsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_token_details_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetTokenDetailsResponse: - r"""Get Token Details - - Get the User data from the provided X-Plex-Token - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_TOKEN_DETAILS_SERVERS[0] - req = self._build_request_async( - method="GET", - path="/user", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getTokenDetails", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetTokenDetailsResponse( - user_plex_account=unmarshal_json_response( - Optional[operations.GetTokenDetailsUserPlexAccount], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetTokenDetailsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTokenDetailsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetTokenDetailsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTokenDetailsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def post_users_sign_in_data( - self, - *, - request: Union[ - operations.PostUsersSignInDataRequest, - operations.PostUsersSignInDataRequestTypedDict, - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.PostUsersSignInDataResponse: - r"""Get User Sign In Data - - Sign in user with username and password and return user data with Plex authentication token - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.POST_USERS_SIGN_IN_DATA_SERVERS[0] - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.PostUsersSignInDataRequest) - request = cast(operations.PostUsersSignInDataRequest, request) - - req = self._build_request( - method="POST", - path="/users/signin", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=False, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, - False, - True, - "form", - Optional[operations.PostUsersSignInDataRequestBody], - ), - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="post-users-sign-in-data", - oauth2_scopes=[], - security_source=None, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "201", "application/json"): - return operations.PostUsersSignInDataResponse( - user_plex_account=unmarshal_json_response( - Optional[operations.PostUsersSignInDataUserPlexAccount], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.PostUsersSignInDataBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.PostUsersSignInDataBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.PostUsersSignInDataUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.PostUsersSignInDataUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def post_users_sign_in_data_async( - self, - *, - request: Union[ - operations.PostUsersSignInDataRequest, - operations.PostUsersSignInDataRequestTypedDict, - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.PostUsersSignInDataResponse: - r"""Get User Sign In Data - - Sign in user with username and password and return user data with Plex authentication token - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.POST_USERS_SIGN_IN_DATA_SERVERS[0] - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.PostUsersSignInDataRequest) - request = cast(operations.PostUsersSignInDataRequest, request) - - req = self._build_request_async( - method="POST", - path="/users/signin", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=False, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, - False, - True, - "form", - Optional[operations.PostUsersSignInDataRequestBody], - ), - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="post-users-sign-in-data", - oauth2_scopes=[], - security_source=None, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "201", "application/json"): - return operations.PostUsersSignInDataResponse( - user_plex_account=unmarshal_json_response( - Optional[operations.PostUsersSignInDataUserPlexAccount], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.PostUsersSignInDataBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.PostUsersSignInDataBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.PostUsersSignInDataUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.PostUsersSignInDataUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/butler.py b/src/plex_api_client/butler.py index 46bcfbc..050d411 100644 --- a/src/plex_api_client/butler.py +++ b/src/plex_api_client/butler.py @@ -4,25 +4,182 @@ from .basesdk import BaseSDK from plex_api_client import utils from plex_api_client._hooks import HookContext from plex_api_client.models import errors, operations -from plex_api_client.types import OptionalNullable, UNSET +from plex_api_client.types import BaseModel, OptionalNullable, UNSET from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Mapping, Optional +from typing import Mapping, Optional, Union, cast class Butler(BaseSDK): - r"""Butler is the task manager of the Plex Media Server Ecosystem.""" + r"""The butler is responsible for running periodic tasks. Some tasks run daily, others every few days, and some weekly. These includes database maintenance, metadata updating, thumbnail generation, media analysis, and other tasks.""" - def get_butler_tasks( + def stop_tasks( self, *, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetButlerTasksResponse: - r"""Get Butler tasks + ) -> operations.StopTasksResponse: + r"""Stop all Butler tasks + + This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue. + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="DELETE", + path="/butler", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="stopTasks", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.StopTasksResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def stop_tasks_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.StopTasksResponse: + r"""Stop all Butler tasks + + This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue. + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="DELETE", + path="/butler", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="stopTasks", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.StopTasksResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_tasks( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetTasksResponse: + r"""Get all Butler tasks + + Get the list of butler tasks and their scheduling - Returns a list of butler tasks :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -66,37 +223,24 @@ class Butler(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getButlerTasks", - oauth2_scopes=[], + operation_id="getTasks", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return operations.GetButlerTasksResponse( + return operations.GetTasksResponse( object=unmarshal_json_response( - Optional[operations.GetButlerTasksResponseBody], http_res + Optional[operations.GetTasksResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetButlerTasksBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetButlerTasksBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetButlerTasksUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetButlerTasksUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -106,17 +250,18 @@ class Butler(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - async def get_butler_tasks_async( + async def get_tasks_async( self, *, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetButlerTasksResponse: - r"""Get Butler tasks + ) -> operations.GetTasksResponse: + r"""Get all Butler tasks + + Get the list of butler tasks and their scheduling - Returns a list of butler tasks :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -160,37 +305,24 @@ class Butler(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getButlerTasks", - oauth2_scopes=[], + operation_id="getTasks", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return operations.GetButlerTasksResponse( + return operations.GetTasksResponse( object=unmarshal_json_response( - Optional[operations.GetButlerTasksResponseBody], http_res + Optional[operations.GetTasksResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetButlerTasksBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetButlerTasksBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetButlerTasksUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetButlerTasksUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -200,17 +332,18 @@ class Butler(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - def start_all_tasks( + def start_tasks( self, *, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.StartAllTasksResponse: + ) -> operations.StartTasksResponse: r"""Start all Butler tasks This endpoint will attempt to start all Butler tasks that are enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria: + 1. Any tasks not scheduled to run on the current day will be skipped. 2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately. 3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window. @@ -241,7 +374,7 @@ class Butler(BaseSDK): request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, security=self.sdk_configuration.security, timeout_ms=timeout_ms, @@ -259,34 +392,21 @@ class Butler(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="startAllTasks", - oauth2_scopes=[], + operation_id="startTasks", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "*"): - return operations.StartAllTasksResponse( + return operations.StartTasksResponse( status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.StartAllTasksBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.StartAllTasksBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.StartAllTasksUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.StartAllTasksUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -296,17 +416,18 @@ class Butler(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - async def start_all_tasks_async( + async def start_tasks_async( self, *, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.StartAllTasksResponse: + ) -> operations.StartTasksResponse: r"""Start all Butler tasks This endpoint will attempt to start all Butler tasks that are enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria: + 1. Any tasks not scheduled to run on the current day will be skipped. 2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately. 3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window. @@ -337,7 +458,7 @@ class Butler(BaseSDK): request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, security=self.sdk_configuration.security, timeout_ms=timeout_ms, @@ -355,424 +476,21 @@ class Butler(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="startAllTasks", - oauth2_scopes=[], + operation_id="startTasks", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "*"): - return operations.StartAllTasksResponse( + return operations.StartTasksResponse( status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.StartAllTasksBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.StartAllTasksBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.StartAllTasksUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.StartAllTasksUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def stop_all_tasks( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.StopAllTasksResponse: - r"""Stop all Butler tasks - - This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue. - - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request( - method="DELETE", - path="/butler", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="stopAllTasks", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.StopAllTasksResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.StopAllTasksBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.StopAllTasksBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.StopAllTasksUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.StopAllTasksUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def stop_all_tasks_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.StopAllTasksResponse: - r"""Stop all Butler tasks - - This endpoint will stop all currently running tasks and remove any scheduled tasks from the queue. - - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request_async( - method="DELETE", - path="/butler", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="stopAllTasks", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.StopAllTasksResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.StopAllTasksBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.StopAllTasksBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.StopAllTasksUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.StopAllTasksUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def start_task( - self, - *, - task_name: operations.TaskName, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.StartTaskResponse: - r"""Start a single Butler task - - This endpoint will attempt to start a single Butler task that is enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria: - 1. Any tasks not scheduled to run on the current day will be skipped. - 2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately. - 3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window. - 4. If we are outside the configured window, the task will start immediately. - - - :param task_name: the name of the task to be started. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.StartTaskRequest( - task_name=task_name, - ) - - req = self._build_request( - method="POST", - path="/butler/{taskName}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="startTask", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, ["200", "202"], "*"): - return operations.StartTaskResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.StartTaskBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.StartTaskBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.StartTaskUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.StartTaskUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def start_task_async( - self, - *, - task_name: operations.TaskName, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.StartTaskResponse: - r"""Start a single Butler task - - This endpoint will attempt to start a single Butler task that is enabled in the settings. Butler tasks normally run automatically during a time window configured on the server's Settings page but can be manually started using this endpoint. Tasks will run with the following criteria: - 1. Any tasks not scheduled to run on the current day will be skipped. - 2. If a task is configured to run at a random time during the configured window and we are outside that window, the task will start immediately. - 3. If a task is configured to run at a random time during the configured window and we are within that window, the task will be scheduled at a random time within the window. - 4. If we are outside the configured window, the task will start immediately. - - - :param task_name: the name of the task to be started. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.StartTaskRequest( - task_name=task_name, - ) - - req = self._build_request_async( - method="POST", - path="/butler/{taskName}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="startTask", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, ["200", "202"], "*"): - return operations.StartTaskResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.StartTaskBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.StartTaskBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.StartTaskUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.StartTaskUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -785,7 +503,7 @@ class Butler(BaseSDK): def stop_task( self, *, - task_name: operations.PathParamTaskName, + request: Union[operations.StopTaskRequest, operations.StopTaskRequestTypedDict], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -793,10 +511,10 @@ class Butler(BaseSDK): ) -> operations.StopTaskResponse: r"""Stop a single Butler task - This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists. See the section above for a list of task names for this endpoint. + This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists - :param task_name: The name of the task to be started. + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -812,13 +530,13 @@ class Butler(BaseSDK): else: base_url = self._get_url(base_url, url_variables) - request = operations.StopTaskRequest( - task_name=task_name, - ) + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.StopTaskRequest) + request = cast(operations.StopTaskRequest, request) req = self._build_request( method="DELETE", - path="/butler/{taskName}", + path="/butler/{task}", base_url=base_url, url_variables=url_variables, request=request, @@ -826,8 +544,21 @@ class Butler(BaseSDK): request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, + _globals=operations.StopTaskGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -845,33 +576,20 @@ class Butler(BaseSDK): config=self.sdk_configuration, base_url=base_url or "", operation_id="stopTask", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "5XX"], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "*"): return operations.StopTaskResponse( status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.StopTaskBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.StopTaskBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.StopTaskUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.StopTaskUnauthorized(response_data, http_res) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -884,7 +602,7 @@ class Butler(BaseSDK): async def stop_task_async( self, *, - task_name: operations.PathParamTaskName, + request: Union[operations.StopTaskRequest, operations.StopTaskRequestTypedDict], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -892,10 +610,10 @@ class Butler(BaseSDK): ) -> operations.StopTaskResponse: r"""Stop a single Butler task - This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists. See the section above for a list of task names for this endpoint. + This endpoint will stop a currently running task by name, or remove it from the list of scheduled tasks if it exists - :param task_name: The name of the task to be started. + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -911,13 +629,13 @@ class Butler(BaseSDK): else: base_url = self._get_url(base_url, url_variables) - request = operations.StopTaskRequest( - task_name=task_name, - ) + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.StopTaskRequest) + request = cast(operations.StopTaskRequest, request) req = self._build_request_async( method="DELETE", - path="/butler/{taskName}", + path="/butler/{task}", base_url=base_url, url_variables=url_variables, request=request, @@ -925,8 +643,21 @@ class Butler(BaseSDK): request_has_path_params=True, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, + _globals=operations.StopTaskGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -944,33 +675,222 @@ class Butler(BaseSDK): config=self.sdk_configuration, base_url=base_url or "", operation_id="stopTask", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "5XX"], + error_status_codes=["404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "*"): return operations.StopTaskResponse( status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.StopTaskBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.StopTaskBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.StopTaskUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.StopTaskUnauthorized(response_data, http_res) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def start_task( + self, + *, + request: Union[ + operations.StartTaskRequest, operations.StartTaskRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.StartTaskResponse: + r"""Start a single Butler task + + This endpoint will attempt to start a specific Butler task by name. + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.StartTaskRequest) + request = cast(operations.StartTaskRequest, request) + + req = self._build_request( + method="POST", + path="/butler/{task}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.StartTaskGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="startTask", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, ["200", "202"], "*"): + return operations.StartTaskResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def start_task_async( + self, + *, + request: Union[ + operations.StartTaskRequest, operations.StartTaskRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.StartTaskResponse: + r"""Start a single Butler task + + This endpoint will attempt to start a specific Butler task by name. + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.StartTaskRequest) + request = cast(operations.StartTaskRequest, request) + + req = self._build_request_async( + method="POST", + path="/butler/{task}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.StartTaskGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="startTask", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, ["200", "202"], "*"): + return operations.StartTaskResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) if utils.match_response(http_res, ["404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) diff --git a/src/plex_api_client/collections.py b/src/plex_api_client/collections.py new file mode 100644 index 0000000..6317e33 --- /dev/null +++ b/src/plex_api_client/collections.py @@ -0,0 +1,221 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import components, errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class Collections(BaseSDK): + r"""API Operations against the Collections""" + + def create_collection( + self, + *, + request: Union[ + operations.CreateCollectionRequest, + operations.CreateCollectionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CreateCollectionResponse: + r"""Create collection + + Create a collection in the library + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CreateCollectionRequest) + request = cast(operations.CreateCollectionRequest, request) + + req = self._build_request( + method="POST", + path="/library/collections", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.CreateCollectionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="createCollection", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.CreateCollectionResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def create_collection_async( + self, + *, + request: Union[ + operations.CreateCollectionRequest, + operations.CreateCollectionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CreateCollectionResponse: + r"""Create collection + + Create a collection in the library + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CreateCollectionRequest) + request = cast(operations.CreateCollectionRequest, request) + + req = self._build_request_async( + method="POST", + path="/library/collections", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.CreateCollectionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="createCollection", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.CreateCollectionResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/content.py b/src/plex_api_client/content.py new file mode 100644 index 0000000..ca74def --- /dev/null +++ b/src/plex_api_client/content.py @@ -0,0 +1,2699 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import components, errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class Content(BaseSDK): + r"""The actual content of the media provider""" + + def get_collection_items( + self, + *, + request: Union[ + operations.GetCollectionItemsRequest, + operations.GetCollectionItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetCollectionItemsResponse: + r"""Get items in a collection + + Get items in a collection. Note if this collection contains more than 100 items, paging must be used. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetCollectionItemsRequest) + request = cast(operations.GetCollectionItemsRequest, request) + + req = self._build_request( + method="GET", + path="/library/collections/{collectionId}/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetCollectionItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCollectionItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetCollectionItemsResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_collection_items_async( + self, + *, + request: Union[ + operations.GetCollectionItemsRequest, + operations.GetCollectionItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetCollectionItemsResponse: + r"""Get items in a collection + + Get items in a collection. Note if this collection contains more than 100 items, paging must be used. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetCollectionItemsRequest) + request = cast(operations.GetCollectionItemsRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/collections/{collectionId}/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetCollectionItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCollectionItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetCollectionItemsResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_metadata_item( + self, + *, + request: Union[ + operations.GetMetadataItemRequest, + operations.GetMetadataItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetMetadataItemResponse: + r"""Get a metadata item + + Get one or more metadata items. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetMetadataItemRequest) + request = cast(operations.GetMetadataItemRequest, request) + + req = self._build_request( + method="GET", + path="/library/metadata/{ids}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetMetadataItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getMetadataItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetMetadataItemResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_metadata_item_async( + self, + *, + request: Union[ + operations.GetMetadataItemRequest, + operations.GetMetadataItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetMetadataItemResponse: + r"""Get a metadata item + + Get one or more metadata items. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetMetadataItemRequest) + request = cast(operations.GetMetadataItemRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/metadata/{ids}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetMetadataItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getMetadataItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetMetadataItemResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_albums( + self, + *, + request: Union[ + operations.GetAlbumsRequest, operations.GetAlbumsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAlbumsResponse: + r"""Set section albums + + Get all albums in a music section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetAlbumsRequest) + request = cast(operations.GetAlbumsRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/albums", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetAlbumsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAlbums", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAlbumsResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_albums_async( + self, + *, + request: Union[ + operations.GetAlbumsRequest, operations.GetAlbumsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAlbumsResponse: + r"""Set section albums + + Get all albums in a music section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetAlbumsRequest) + request = cast(operations.GetAlbumsRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/albums", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetAlbumsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAlbums", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAlbumsResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def list_content( + self, + *, + request: Union[ + operations.ListContentRequest, operations.ListContentRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListContentResponse: + r"""Get items in the section + + Get the items in a section, potentially filtering them + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListContentRequest) + request = cast(operations.ListContentRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/all", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListContentGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listContent", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListContentResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def list_content_async( + self, + *, + request: Union[ + operations.ListContentRequest, operations.ListContentRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListContentResponse: + r"""Get items in the section + + Get the items in a section, potentially filtering them + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListContentRequest) + request = cast(operations.ListContentRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/all", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListContentGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listContent", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListContentResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_all_leaves( + self, + *, + request: Union[ + operations.GetAllLeavesRequest, operations.GetAllLeavesRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAllLeavesResponse: + r"""Set section leaves + + Get all leaves in a section (such as episodes in a show section) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetAllLeavesRequest) + request = cast(operations.GetAllLeavesRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/allLeaves", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetAllLeavesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAllLeaves", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAllLeavesResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_all_leaves_async( + self, + *, + request: Union[ + operations.GetAllLeavesRequest, operations.GetAllLeavesRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAllLeavesResponse: + r"""Set section leaves + + Get all leaves in a section (such as episodes in a show section) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetAllLeavesRequest) + request = cast(operations.GetAllLeavesRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/allLeaves", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetAllLeavesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAllLeaves", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAllLeavesResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_arts( + self, + *, + request: Union[operations.GetArtsRequest, operations.GetArtsRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetArtsResponse: + r"""Set section artwork + + Get artwork for a library section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetArtsRequest) + request = cast(operations.GetArtsRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/arts", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetArtsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getArts", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetArtsResponse( + media_container_with_artwork=unmarshal_json_response( + Optional[components.MediaContainerWithArtwork], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_arts_async( + self, + *, + request: Union[operations.GetArtsRequest, operations.GetArtsRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetArtsResponse: + r"""Set section artwork + + Get artwork for a library section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetArtsRequest) + request = cast(operations.GetArtsRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/arts", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetArtsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getArts", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetArtsResponse( + media_container_with_artwork=unmarshal_json_response( + Optional[components.MediaContainerWithArtwork], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_categories( + self, + *, + request: Union[ + operations.GetCategoriesRequest, operations.GetCategoriesRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetCategoriesResponse: + r"""Set section categories + + Get categories in a library section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetCategoriesRequest) + request = cast(operations.GetCategoriesRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/categories", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetCategoriesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCategories", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetCategoriesResponse( + media_container_with_artwork=unmarshal_json_response( + Optional[components.MediaContainerWithArtwork], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_categories_async( + self, + *, + request: Union[ + operations.GetCategoriesRequest, operations.GetCategoriesRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetCategoriesResponse: + r"""Set section categories + + Get categories in a library section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetCategoriesRequest) + request = cast(operations.GetCategoriesRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/categories", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetCategoriesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCategories", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetCategoriesResponse( + media_container_with_artwork=unmarshal_json_response( + Optional[components.MediaContainerWithArtwork], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_cluster( + self, + *, + request: Union[ + operations.GetClusterRequest, operations.GetClusterRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetClusterResponse: + r"""Set section clusters + + Get clusters in a library section (typically for photos) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetClusterRequest) + request = cast(operations.GetClusterRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/cluster", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetClusterGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCluster", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetClusterResponse( + media_container_with_artwork=unmarshal_json_response( + Optional[components.MediaContainerWithArtwork], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_cluster_async( + self, + *, + request: Union[ + operations.GetClusterRequest, operations.GetClusterRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetClusterResponse: + r"""Set section clusters + + Get clusters in a library section (typically for photos) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetClusterRequest) + request = cast(operations.GetClusterRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/cluster", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetClusterGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCluster", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetClusterResponse( + media_container_with_artwork=unmarshal_json_response( + Optional[components.MediaContainerWithArtwork], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_sonic_path( + self, + *, + request: Union[ + operations.GetSonicPathRequest, operations.GetSonicPathRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSonicPathResponse: + r"""Similar tracks to transition from one to another + + Get a list of audio tracks starting at one and ending at another which are similar across the path + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSonicPathRequest) + request = cast(operations.GetSonicPathRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/computePath", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetSonicPathGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSonicPath", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSonicPathResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_sonic_path_async( + self, + *, + request: Union[ + operations.GetSonicPathRequest, operations.GetSonicPathRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSonicPathResponse: + r"""Similar tracks to transition from one to another + + Get a list of audio tracks starting at one and ending at another which are similar across the path + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSonicPathRequest) + request = cast(operations.GetSonicPathRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/computePath", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetSonicPathGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSonicPath", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSonicPathResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_folders( + self, + *, + request: Union[ + operations.GetFoldersRequest, operations.GetFoldersRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetFoldersResponse: + r"""Get all folder locations + + Get all folder locations of the media in a section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetFoldersRequest) + request = cast(operations.GetFoldersRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/location", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetFoldersGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getFolders", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetFoldersResponse( + object=unmarshal_json_response( + Optional[operations.GetFoldersResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_folders_async( + self, + *, + request: Union[ + operations.GetFoldersRequest, operations.GetFoldersRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetFoldersResponse: + r"""Get all folder locations + + Get all folder locations of the media in a section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetFoldersRequest) + request = cast(operations.GetFoldersRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/location", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetFoldersGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getFolders", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetFoldersResponse( + object=unmarshal_json_response( + Optional[operations.GetFoldersResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def list_moments( + self, + *, + request: Union[ + operations.ListMomentsRequest, operations.ListMomentsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListMomentsResponse: + r"""Set section moments + + Get moments in a library section (typically for photos) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListMomentsRequest) + request = cast(operations.ListMomentsRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/moment", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListMomentsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listMoments", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListMomentsResponse( + media_container_with_artwork=unmarshal_json_response( + Optional[components.MediaContainerWithArtwork], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def list_moments_async( + self, + *, + request: Union[ + operations.ListMomentsRequest, operations.ListMomentsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListMomentsResponse: + r"""Set section moments + + Get moments in a library section (typically for photos) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListMomentsRequest) + request = cast(operations.ListMomentsRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/moment", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListMomentsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listMoments", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListMomentsResponse( + media_container_with_artwork=unmarshal_json_response( + Optional[components.MediaContainerWithArtwork], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_sonically_similar( + self, + *, + request: Union[ + operations.GetSonicallySimilarRequest, + operations.GetSonicallySimilarRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSonicallySimilarResponse: + r"""The nearest audio tracks + + Get the nearest audio tracks to a particular analysis + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSonicallySimilarRequest) + request = cast(operations.GetSonicallySimilarRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/nearest", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetSonicallySimilarGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSonicallySimilar", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSonicallySimilarResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_sonically_similar_async( + self, + *, + request: Union[ + operations.GetSonicallySimilarRequest, + operations.GetSonicallySimilarRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSonicallySimilarResponse: + r"""The nearest audio tracks + + Get the nearest audio tracks to a particular analysis + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSonicallySimilarRequest) + request = cast(operations.GetSonicallySimilarRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/nearest", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetSonicallySimilarGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSonicallySimilar", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSonicallySimilarResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_collection_image( + self, + *, + request: Union[ + operations.GetCollectionImageRequest, + operations.GetCollectionImageRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetCollectionImageResponse: + r"""Get a collection's image + + Get an image for the collection based on the items within + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetCollectionImageRequest) + request = cast(operations.GetCollectionImageRequest, request) + + req = self._build_request( + method="GET", + path="/library/collections/{collectionId}/composite/{updatedAt}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="image/jpeg", + http_headers=http_headers, + _globals=operations.GetCollectionImageGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCollectionImage", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "image/jpeg"): + return operations.GetCollectionImageResponse( + response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + async def get_collection_image_async( + self, + *, + request: Union[ + operations.GetCollectionImageRequest, + operations.GetCollectionImageRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetCollectionImageResponse: + r"""Get a collection's image + + Get an image for the collection based on the items within + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetCollectionImageRequest) + request = cast(operations.GetCollectionImageRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/collections/{collectionId}/composite/{updatedAt}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="image/jpeg", + http_headers=http_headers, + _globals=operations.GetCollectionImageGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCollectionImage", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "image/jpeg"): + return operations.GetCollectionImageResponse( + response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) diff --git a/src/plex_api_client/devices.py b/src/plex_api_client/devices.py new file mode 100644 index 0000000..21ab85a --- /dev/null +++ b/src/plex_api_client/devices.py @@ -0,0 +1,2646 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import components, errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class Devices(BaseSDK): + r"""Media grabbers provide ways for media to be obtained for a given protocol. The simplest ones are `stream` and `download`. More complex grabbers can have associated devices + + Network tuners can present themselves on the network using the Simple Service Discovery Protocol and Plex Media Server will discover them. The following XML is an example of the data returned from SSDP. The `deviceType`, `serviceType`, and `serviceId` values must remain as they are in the example in order for PMS to properly discover the device. Other less-obvious fields are described in the parameters section below. + + Example SSDP output + ``` + + + 1 + 0 + + + urn:plex-tv:device:Media:1 + Turing Hopper 3000 + Plex, Inc. + https://plex.tv/ + Turing Hopper 3000 Media Grabber + Plex Media Grabber + 1 + https://plex.tv + uuid:42fde8e4-93b6-41e5-8a63-12d848655811 + + + http://10.0.0.5:8088 + urn:plex-tv:service:MediaGrabber:1 + urn:plex-tv:serviceId:MediaGrabber + + + + + ``` + + - UDN: (string) A UUID for the device. This should be unique across models of a device at minimum. + - URLBase: (string) The base HTTP URL for the device from which all of the other endpoints are hosted. + + """ + + def get_available_grabbers( + self, + *, + request: Union[ + operations.GetAvailableGrabbersRequest, + operations.GetAvailableGrabbersRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAvailableGrabbersResponse: + r"""Get available grabbers + + Get available grabbers visible to the server + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetAvailableGrabbersRequest) + request = cast(operations.GetAvailableGrabbersRequest, request) + + req = self._build_request( + method="GET", + path="/media/grabbers", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetAvailableGrabbersGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAvailableGrabbers", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAvailableGrabbersResponse( + object=unmarshal_json_response( + Optional[operations.GetAvailableGrabbersResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_available_grabbers_async( + self, + *, + request: Union[ + operations.GetAvailableGrabbersRequest, + operations.GetAvailableGrabbersRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAvailableGrabbersResponse: + r"""Get available grabbers + + Get available grabbers visible to the server + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetAvailableGrabbersRequest) + request = cast(operations.GetAvailableGrabbersRequest, request) + + req = self._build_request_async( + method="GET", + path="/media/grabbers", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetAvailableGrabbersGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAvailableGrabbers", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAvailableGrabbersResponse( + object=unmarshal_json_response( + Optional[operations.GetAvailableGrabbersResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def list_devices( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListDevicesResponse: + r"""Get all devices + + Get the list of all devices present + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="GET", + path="/media/grabbers/devices", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listDevices", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListDevicesResponse( + media_container_with_device=unmarshal_json_response( + Optional[components.MediaContainerWithDevice], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def list_devices_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListDevicesResponse: + r"""Get all devices + + Get the list of all devices present + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="GET", + path="/media/grabbers/devices", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listDevices", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListDevicesResponse( + media_container_with_device=unmarshal_json_response( + Optional[components.MediaContainerWithDevice], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def add_device( + self, + *, + request: Union[ + operations.AddDeviceRequest, operations.AddDeviceRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddDeviceResponse: + r"""Add a device + + This endpoint adds a device to an existing grabber. The device is identified, and added to the correct grabber. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddDeviceRequest) + request = cast(operations.AddDeviceRequest, request) + + req = self._build_request( + method="POST", + path="/media/grabbers/devices", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.AddDeviceGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addDevice", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.AddDeviceResponse( + media_container_with_device=unmarshal_json_response( + Optional[components.MediaContainerWithDevice], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def add_device_async( + self, + *, + request: Union[ + operations.AddDeviceRequest, operations.AddDeviceRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddDeviceResponse: + r"""Add a device + + This endpoint adds a device to an existing grabber. The device is identified, and added to the correct grabber. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddDeviceRequest) + request = cast(operations.AddDeviceRequest, request) + + req = self._build_request_async( + method="POST", + path="/media/grabbers/devices", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.AddDeviceGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addDevice", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.AddDeviceResponse( + media_container_with_device=unmarshal_json_response( + Optional[components.MediaContainerWithDevice], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def discover_devices( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DiscoverDevicesResponse: + r"""Tell grabbers to discover devices + + Tell grabbers to discover devices + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="POST", + path="/media/grabbers/devices/discover", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="discoverDevices", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.DiscoverDevicesResponse( + media_container_with_device=unmarshal_json_response( + Optional[components.MediaContainerWithDevice], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def discover_devices_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DiscoverDevicesResponse: + r"""Tell grabbers to discover devices + + Tell grabbers to discover devices + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="POST", + path="/media/grabbers/devices/discover", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="discoverDevices", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.DiscoverDevicesResponse( + media_container_with_device=unmarshal_json_response( + Optional[components.MediaContainerWithDevice], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def remove_device( + self, + *, + request: Union[ + operations.RemoveDeviceRequest, operations.RemoveDeviceRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RemoveDeviceResponse: + r"""Remove a device + + Remove a devices by its id along with its channel mappings + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.RemoveDeviceRequest) + request = cast(operations.RemoveDeviceRequest, request) + + req = self._build_request( + method="DELETE", + path="/media/grabbers/devices/{deviceId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.RemoveDeviceGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="removeDevice", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.RemoveDeviceResponse( + object=unmarshal_json_response( + Optional[operations.RemoveDeviceResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def remove_device_async( + self, + *, + request: Union[ + operations.RemoveDeviceRequest, operations.RemoveDeviceRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RemoveDeviceResponse: + r"""Remove a device + + Remove a devices by its id along with its channel mappings + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.RemoveDeviceRequest) + request = cast(operations.RemoveDeviceRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/media/grabbers/devices/{deviceId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.RemoveDeviceGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="removeDevice", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.RemoveDeviceResponse( + object=unmarshal_json_response( + Optional[operations.RemoveDeviceResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_device_details( + self, + *, + request: Union[ + operations.GetDeviceDetailsRequest, + operations.GetDeviceDetailsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetDeviceDetailsResponse: + r"""Get device details + + Get a device's details by its id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetDeviceDetailsRequest) + request = cast(operations.GetDeviceDetailsRequest, request) + + req = self._build_request( + method="GET", + path="/media/grabbers/devices/{deviceId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetDeviceDetailsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getDeviceDetails", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetDeviceDetailsResponse( + media_container_with_device=unmarshal_json_response( + Optional[components.MediaContainerWithDevice], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_device_details_async( + self, + *, + request: Union[ + operations.GetDeviceDetailsRequest, + operations.GetDeviceDetailsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetDeviceDetailsResponse: + r"""Get device details + + Get a device's details by its id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetDeviceDetailsRequest) + request = cast(operations.GetDeviceDetailsRequest, request) + + req = self._build_request_async( + method="GET", + path="/media/grabbers/devices/{deviceId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetDeviceDetailsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getDeviceDetails", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetDeviceDetailsResponse( + media_container_with_device=unmarshal_json_response( + Optional[components.MediaContainerWithDevice], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def modify_device( + self, + *, + request: Union[ + operations.ModifyDeviceRequest, operations.ModifyDeviceRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ModifyDeviceResponse: + r"""Enable or disable a device + + Enable or disable a device by its id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ModifyDeviceRequest) + request = cast(operations.ModifyDeviceRequest, request) + + req = self._build_request( + method="PUT", + path="/media/grabbers/devices/{deviceId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ModifyDeviceGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="modifyDevice", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ModifyDeviceResponse( + object=unmarshal_json_response( + Optional[operations.ModifyDeviceResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def modify_device_async( + self, + *, + request: Union[ + operations.ModifyDeviceRequest, operations.ModifyDeviceRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ModifyDeviceResponse: + r"""Enable or disable a device + + Enable or disable a device by its id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ModifyDeviceRequest) + request = cast(operations.ModifyDeviceRequest, request) + + req = self._build_request_async( + method="PUT", + path="/media/grabbers/devices/{deviceId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ModifyDeviceGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="modifyDevice", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ModifyDeviceResponse( + object=unmarshal_json_response( + Optional[operations.ModifyDeviceResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def set_channelmap( + self, + *, + request: Union[ + operations.SetChannelmapRequest, operations.SetChannelmapRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetChannelmapResponse: + r"""Set a device's channel mapping + + Set a device's channel mapping + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetChannelmapRequest) + request = cast(operations.SetChannelmapRequest, request) + + req = self._build_request( + method="PUT", + path="/media/grabbers/devices/{deviceId}/channelmap", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.SetChannelmapGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setChannelmap", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.SetChannelmapResponse( + media_container_with_device=unmarshal_json_response( + Optional[components.MediaContainerWithDevice], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def set_channelmap_async( + self, + *, + request: Union[ + operations.SetChannelmapRequest, operations.SetChannelmapRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetChannelmapResponse: + r"""Set a device's channel mapping + + Set a device's channel mapping + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetChannelmapRequest) + request = cast(operations.SetChannelmapRequest, request) + + req = self._build_request_async( + method="PUT", + path="/media/grabbers/devices/{deviceId}/channelmap", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.SetChannelmapGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setChannelmap", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.SetChannelmapResponse( + media_container_with_device=unmarshal_json_response( + Optional[components.MediaContainerWithDevice], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_devices_channels( + self, + *, + request: Union[ + operations.GetDevicesChannelsRequest, + operations.GetDevicesChannelsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetDevicesChannelsResponse: + r"""Get a device's channels + + Get a device's channels by its id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetDevicesChannelsRequest) + request = cast(operations.GetDevicesChannelsRequest, request) + + req = self._build_request( + method="GET", + path="/media/grabbers/devices/{deviceId}/channels", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetDevicesChannelsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getDevicesChannels", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetDevicesChannelsResponse( + object=unmarshal_json_response( + Optional[operations.GetDevicesChannelsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_devices_channels_async( + self, + *, + request: Union[ + operations.GetDevicesChannelsRequest, + operations.GetDevicesChannelsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetDevicesChannelsResponse: + r"""Get a device's channels + + Get a device's channels by its id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetDevicesChannelsRequest) + request = cast(operations.GetDevicesChannelsRequest, request) + + req = self._build_request_async( + method="GET", + path="/media/grabbers/devices/{deviceId}/channels", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetDevicesChannelsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getDevicesChannels", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetDevicesChannelsResponse( + object=unmarshal_json_response( + Optional[operations.GetDevicesChannelsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def set_device_preferences( + self, + *, + request: Union[ + operations.SetDevicePreferencesRequest, + operations.SetDevicePreferencesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetDevicePreferencesResponse: + r"""Set device preferences + + Set device preferences by its id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetDevicePreferencesRequest) + request = cast(operations.SetDevicePreferencesRequest, request) + + req = self._build_request( + method="PUT", + path="/media/grabbers/devices/{deviceId}/prefs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SetDevicePreferencesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setDevicePreferences", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SetDevicePreferencesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def set_device_preferences_async( + self, + *, + request: Union[ + operations.SetDevicePreferencesRequest, + operations.SetDevicePreferencesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetDevicePreferencesResponse: + r"""Set device preferences + + Set device preferences by its id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetDevicePreferencesRequest) + request = cast(operations.SetDevicePreferencesRequest, request) + + req = self._build_request_async( + method="PUT", + path="/media/grabbers/devices/{deviceId}/prefs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SetDevicePreferencesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setDevicePreferences", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SetDevicePreferencesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def stop_scan( + self, + *, + request: Union[operations.StopScanRequest, operations.StopScanRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.StopScanResponse: + r"""Tell a device to stop scanning for channels + + Tell a device to stop scanning for channels + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.StopScanRequest) + request = cast(operations.StopScanRequest, request) + + req = self._build_request( + method="DELETE", + path="/media/grabbers/devices/{deviceId}/scan", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.StopScanGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="stopScan", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.StopScanResponse( + media_container_with_device=unmarshal_json_response( + Optional[components.MediaContainerWithDevice], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def stop_scan_async( + self, + *, + request: Union[operations.StopScanRequest, operations.StopScanRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.StopScanResponse: + r"""Tell a device to stop scanning for channels + + Tell a device to stop scanning for channels + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.StopScanRequest) + request = cast(operations.StopScanRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/media/grabbers/devices/{deviceId}/scan", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.StopScanGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="stopScan", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.StopScanResponse( + media_container_with_device=unmarshal_json_response( + Optional[components.MediaContainerWithDevice], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def scan( + self, + *, + request: Union[operations.ScanRequest, operations.ScanRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ScanResponse: + r"""Tell a device to scan for channels + + Tell a device to scan for channels + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ScanRequest) + request = cast(operations.ScanRequest, request) + + req = self._build_request( + method="POST", + path="/media/grabbers/devices/{deviceId}/scan", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ScanGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="scan", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ScanResponse( + media_container_with_device=unmarshal_json_response( + Optional[components.MediaContainerWithDevice], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def scan_async( + self, + *, + request: Union[operations.ScanRequest, operations.ScanRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ScanResponse: + r"""Tell a device to scan for channels + + Tell a device to scan for channels + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ScanRequest) + request = cast(operations.ScanRequest, request) + + req = self._build_request_async( + method="POST", + path="/media/grabbers/devices/{deviceId}/scan", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ScanGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="scan", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ScanResponse( + media_container_with_device=unmarshal_json_response( + Optional[components.MediaContainerWithDevice], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_thumb( + self, + *, + request: Union[operations.GetThumbRequest, operations.GetThumbRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetThumbResponse: + r"""Get device thumb + + Get a device's thumb for display to the user + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetThumbRequest) + request = cast(operations.GetThumbRequest, request) + + req = self._build_request( + method="GET", + path="/media/grabbers/devices/{deviceId}/thumb/{version}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetThumbGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getThumb", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GetThumbResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "301", "*"): + return operations.GetThumbResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_thumb_async( + self, + *, + request: Union[operations.GetThumbRequest, operations.GetThumbRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetThumbResponse: + r"""Get device thumb + + Get a device's thumb for display to the user + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetThumbRequest) + request = cast(operations.GetThumbRequest, request) + + req = self._build_request_async( + method="GET", + path="/media/grabbers/devices/{deviceId}/thumb/{version}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetThumbGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getThumb", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GetThumbResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "301", "*"): + return operations.GetThumbResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/download_queue.py b/src/plex_api_client/download_queue.py new file mode 100644 index 0000000..4646174 --- /dev/null +++ b/src/plex_api_client/download_queue.py @@ -0,0 +1,1885 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import components, errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class DownloadQueue(BaseSDK): + r"""API Operations against the Download Queue""" + + def create_download_queue( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CreateDownloadQueueResponse: + r"""Create download queue + + Available: 0.2.0 + + Creates a download queue for this client if one doesn't exist, or returns the existing queue for this client and user. + + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="POST", + path="/downloadQueue", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="createDownloadQueue", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.CreateDownloadQueueResponse( + object=unmarshal_json_response( + Optional[operations.CreateDownloadQueueResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def create_download_queue_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CreateDownloadQueueResponse: + r"""Create download queue + + Available: 0.2.0 + + Creates a download queue for this client if one doesn't exist, or returns the existing queue for this client and user. + + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="POST", + path="/downloadQueue", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="createDownloadQueue", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.CreateDownloadQueueResponse( + object=unmarshal_json_response( + Optional[operations.CreateDownloadQueueResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_download_queue( + self, + *, + request: Union[ + operations.GetDownloadQueueRequest, + operations.GetDownloadQueueRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetDownloadQueueResponse: + r"""Get a download queue + + Available: 0.2.0 + + Get a download queue by its id + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetDownloadQueueRequest) + request = cast(operations.GetDownloadQueueRequest, request) + + req = self._build_request( + method="GET", + path="/downloadQueue/{queueId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetDownloadQueueGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getDownloadQueue", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetDownloadQueueResponse( + object=unmarshal_json_response( + Optional[operations.GetDownloadQueueResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_download_queue_async( + self, + *, + request: Union[ + operations.GetDownloadQueueRequest, + operations.GetDownloadQueueRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetDownloadQueueResponse: + r"""Get a download queue + + Available: 0.2.0 + + Get a download queue by its id + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetDownloadQueueRequest) + request = cast(operations.GetDownloadQueueRequest, request) + + req = self._build_request_async( + method="GET", + path="/downloadQueue/{queueId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetDownloadQueueGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getDownloadQueue", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetDownloadQueueResponse( + object=unmarshal_json_response( + Optional[operations.GetDownloadQueueResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def add_download_queue_items( + self, + *, + request: Union[ + operations.AddDownloadQueueItemsRequest, + operations.AddDownloadQueueItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddDownloadQueueItemsResponse: + r"""Add to download queue + + Available: 0.2.0 + + Add items to the download queue + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddDownloadQueueItemsRequest) + request = cast(operations.AddDownloadQueueItemsRequest, request) + + req = self._build_request( + method="POST", + path="/downloadQueue/{queueId}/add", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.AddDownloadQueueItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addDownloadQueueItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.AddDownloadQueueItemsResponse( + object=unmarshal_json_response( + Optional[operations.AddDownloadQueueItemsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def add_download_queue_items_async( + self, + *, + request: Union[ + operations.AddDownloadQueueItemsRequest, + operations.AddDownloadQueueItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddDownloadQueueItemsResponse: + r"""Add to download queue + + Available: 0.2.0 + + Add items to the download queue + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddDownloadQueueItemsRequest) + request = cast(operations.AddDownloadQueueItemsRequest, request) + + req = self._build_request_async( + method="POST", + path="/downloadQueue/{queueId}/add", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.AddDownloadQueueItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addDownloadQueueItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.AddDownloadQueueItemsResponse( + object=unmarshal_json_response( + Optional[operations.AddDownloadQueueItemsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def list_download_queue_items( + self, + *, + request: Union[ + operations.ListDownloadQueueItemsRequest, + operations.ListDownloadQueueItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListDownloadQueueItemsResponse: + r"""Get download queue items + + Available: 0.2.0 + + Get items from a download queue + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListDownloadQueueItemsRequest) + request = cast(operations.ListDownloadQueueItemsRequest, request) + + req = self._build_request( + method="GET", + path="/downloadQueue/{queueId}/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListDownloadQueueItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listDownloadQueueItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListDownloadQueueItemsResponse( + object=unmarshal_json_response( + Optional[operations.ListDownloadQueueItemsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def list_download_queue_items_async( + self, + *, + request: Union[ + operations.ListDownloadQueueItemsRequest, + operations.ListDownloadQueueItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListDownloadQueueItemsResponse: + r"""Get download queue items + + Available: 0.2.0 + + Get items from a download queue + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListDownloadQueueItemsRequest) + request = cast(operations.ListDownloadQueueItemsRequest, request) + + req = self._build_request_async( + method="GET", + path="/downloadQueue/{queueId}/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListDownloadQueueItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listDownloadQueueItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListDownloadQueueItemsResponse( + object=unmarshal_json_response( + Optional[operations.ListDownloadQueueItemsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_item_decision( + self, + *, + request: Union[ + operations.GetItemDecisionRequest, + operations.GetItemDecisionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetItemDecisionResponse: + r"""Grab download queue item decision + + Available: 0.2.0 + + Grab the decision for a download queue item + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetItemDecisionRequest) + request = cast(operations.GetItemDecisionRequest, request) + + req = self._build_request( + method="GET", + path="/downloadQueue/{queueId}/item/{itemId}/decision", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetItemDecisionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getItemDecision", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetItemDecisionResponse( + media_container_with_decision=unmarshal_json_response( + Optional[components.MediaContainerWithDecision], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_item_decision_async( + self, + *, + request: Union[ + operations.GetItemDecisionRequest, + operations.GetItemDecisionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetItemDecisionResponse: + r"""Grab download queue item decision + + Available: 0.2.0 + + Grab the decision for a download queue item + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetItemDecisionRequest) + request = cast(operations.GetItemDecisionRequest, request) + + req = self._build_request_async( + method="GET", + path="/downloadQueue/{queueId}/item/{itemId}/decision", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetItemDecisionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getItemDecision", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetItemDecisionResponse( + media_container_with_decision=unmarshal_json_response( + Optional[components.MediaContainerWithDecision], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_download_queue_media( + self, + *, + request: Union[ + operations.GetDownloadQueueMediaRequest, + operations.GetDownloadQueueMediaRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetDownloadQueueMediaResponse: + r"""Grab download queue media + + Available: 0.2.0 + + Grab the media for a download queue item + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetDownloadQueueMediaRequest) + request = cast(operations.GetDownloadQueueMediaRequest, request) + + req = self._build_request( + method="GET", + path="/downloadQueue/{queueId}/item/{itemId}/media", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetDownloadQueueMediaGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getDownloadQueueMedia", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "503", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GetDownloadQueueMediaResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers={}, + ) + if utils.match_response(http_res, "503", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_download_queue_media_async( + self, + *, + request: Union[ + operations.GetDownloadQueueMediaRequest, + operations.GetDownloadQueueMediaRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetDownloadQueueMediaResponse: + r"""Grab download queue media + + Available: 0.2.0 + + Grab the media for a download queue item + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetDownloadQueueMediaRequest) + request = cast(operations.GetDownloadQueueMediaRequest, request) + + req = self._build_request_async( + method="GET", + path="/downloadQueue/{queueId}/item/{itemId}/media", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetDownloadQueueMediaGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getDownloadQueueMedia", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "503", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GetDownloadQueueMediaResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers={}, + ) + if utils.match_response(http_res, "503", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def remove_download_queue_items( + self, + *, + request: Union[ + operations.RemoveDownloadQueueItemsRequest, + operations.RemoveDownloadQueueItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RemoveDownloadQueueItemsResponse: + r"""Delete download queue items + + delete items from a download queue + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.RemoveDownloadQueueItemsRequest + ) + request = cast(operations.RemoveDownloadQueueItemsRequest, request) + + req = self._build_request( + method="DELETE", + path="/downloadQueue/{queueId}/items/{itemId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.RemoveDownloadQueueItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="removeDownloadQueueItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.RemoveDownloadQueueItemsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def remove_download_queue_items_async( + self, + *, + request: Union[ + operations.RemoveDownloadQueueItemsRequest, + operations.RemoveDownloadQueueItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RemoveDownloadQueueItemsResponse: + r"""Delete download queue items + + delete items from a download queue + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.RemoveDownloadQueueItemsRequest + ) + request = cast(operations.RemoveDownloadQueueItemsRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/downloadQueue/{queueId}/items/{itemId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.RemoveDownloadQueueItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="removeDownloadQueueItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.RemoveDownloadQueueItemsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_download_queue_items( + self, + *, + request: Union[ + operations.GetDownloadQueueItemsRequest, + operations.GetDownloadQueueItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetDownloadQueueItemsResponse: + r"""Get download queue items + + Available: 0.2.0 + + Get items from a download queue + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetDownloadQueueItemsRequest) + request = cast(operations.GetDownloadQueueItemsRequest, request) + + req = self._build_request( + method="GET", + path="/downloadQueue/{queueId}/items/{itemId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetDownloadQueueItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getDownloadQueueItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetDownloadQueueItemsResponse( + object=unmarshal_json_response( + Optional[operations.GetDownloadQueueItemsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_download_queue_items_async( + self, + *, + request: Union[ + operations.GetDownloadQueueItemsRequest, + operations.GetDownloadQueueItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetDownloadQueueItemsResponse: + r"""Get download queue items + + Available: 0.2.0 + + Get items from a download queue + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetDownloadQueueItemsRequest) + request = cast(operations.GetDownloadQueueItemsRequest, request) + + req = self._build_request_async( + method="GET", + path="/downloadQueue/{queueId}/items/{itemId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetDownloadQueueItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getDownloadQueueItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetDownloadQueueItemsResponse( + object=unmarshal_json_response( + Optional[operations.GetDownloadQueueItemsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def restart_processing_download_queue_items( + self, + *, + request: Union[ + operations.RestartProcessingDownloadQueueItemsRequest, + operations.RestartProcessingDownloadQueueItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RestartProcessingDownloadQueueItemsResponse: + r"""Restart processing of items from the decision + + Available: 0.2.0 + + Reprocess download queue items with previous decision parameters + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.RestartProcessingDownloadQueueItemsRequest + ) + request = cast(operations.RestartProcessingDownloadQueueItemsRequest, request) + + req = self._build_request( + method="POST", + path="/downloadQueue/{queueId}/items/{itemId}/restart", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.RestartProcessingDownloadQueueItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="restartProcessingDownloadQueueItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.RestartProcessingDownloadQueueItemsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def restart_processing_download_queue_items_async( + self, + *, + request: Union[ + operations.RestartProcessingDownloadQueueItemsRequest, + operations.RestartProcessingDownloadQueueItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RestartProcessingDownloadQueueItemsResponse: + r"""Restart processing of items from the decision + + Available: 0.2.0 + + Reprocess download queue items with previous decision parameters + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.RestartProcessingDownloadQueueItemsRequest + ) + request = cast(operations.RestartProcessingDownloadQueueItemsRequest, request) + + req = self._build_request_async( + method="POST", + path="/downloadQueue/{queueId}/items/{itemId}/restart", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.RestartProcessingDownloadQueueItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="restartProcessingDownloadQueueItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.RestartProcessingDownloadQueueItemsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/dvrs.py b/src/plex_api_client/dvrs.py new file mode 100644 index 0000000..a60421f --- /dev/null +++ b/src/plex_api_client/dvrs.py @@ -0,0 +1,2443 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import components, errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class DVRs(BaseSDK): + r"""The DVR provides means to watch and record live TV. This section of endpoints describes how to setup the DVR itself""" + + def list_dv_rs( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListDVRsResponse: + r"""Get DVRs + + Get the list of all available DVRs + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="GET", + path="/livetv/dvrs", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listDVRs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListDVRsResponse( + object=unmarshal_json_response( + Optional[operations.ListDVRsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def list_dv_rs_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListDVRsResponse: + r"""Get DVRs + + Get the list of all available DVRs + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="GET", + path="/livetv/dvrs", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listDVRs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListDVRsResponse( + object=unmarshal_json_response( + Optional[operations.ListDVRsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def create_dvr( + self, + *, + request: Union[ + operations.CreateDVRRequest, operations.CreateDVRRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CreateDVRResponse: + r"""Create a DVR + + Creation of a DVR, after creation of a devcie and a lineup is selected + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CreateDVRRequest) + request = cast(operations.CreateDVRRequest, request) + + req = self._build_request( + method="POST", + path="/livetv/dvrs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.CreateDVRGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="createDVR", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.CreateDVRResponse( + dvr_request_handler_slash_get_responses_200=unmarshal_json_response( + Optional[components.DvrRequestHandlerSlashGetResponses200], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def create_dvr_async( + self, + *, + request: Union[ + operations.CreateDVRRequest, operations.CreateDVRRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CreateDVRResponse: + r"""Create a DVR + + Creation of a DVR, after creation of a devcie and a lineup is selected + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CreateDVRRequest) + request = cast(operations.CreateDVRRequest, request) + + req = self._build_request_async( + method="POST", + path="/livetv/dvrs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.CreateDVRGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="createDVR", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.CreateDVRResponse( + dvr_request_handler_slash_get_responses_200=unmarshal_json_response( + Optional[components.DvrRequestHandlerSlashGetResponses200], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_dvr( + self, + *, + request: Union[ + operations.DeleteDVRRequest, operations.DeleteDVRRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteDVRResponse: + r"""Delete a single DVR + + Delete a single DVR by its id (key) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteDVRRequest) + request = cast(operations.DeleteDVRRequest, request) + + req = self._build_request( + method="DELETE", + path="/livetv/dvrs/{dvrId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteDVRGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteDVR", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteDVRResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_dvr_async( + self, + *, + request: Union[ + operations.DeleteDVRRequest, operations.DeleteDVRRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteDVRResponse: + r"""Delete a single DVR + + Delete a single DVR by its id (key) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteDVRRequest) + request = cast(operations.DeleteDVRRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/livetv/dvrs/{dvrId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteDVRGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteDVR", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteDVRResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_dvr( + self, + *, + request: Union[operations.GetDVRRequest, operations.GetDVRRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetDVRResponse: + r"""Get a single DVR + + Get a single DVR by its id (key) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetDVRRequest) + request = cast(operations.GetDVRRequest, request) + + req = self._build_request( + method="GET", + path="/livetv/dvrs/{dvrId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetDVRGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getDVR", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetDVRResponse( + object=unmarshal_json_response( + Optional[operations.GetDVRResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_dvr_async( + self, + *, + request: Union[operations.GetDVRRequest, operations.GetDVRRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetDVRResponse: + r"""Get a single DVR + + Get a single DVR by its id (key) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetDVRRequest) + request = cast(operations.GetDVRRequest, request) + + req = self._build_request_async( + method="GET", + path="/livetv/dvrs/{dvrId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetDVRGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getDVR", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetDVRResponse( + object=unmarshal_json_response( + Optional[operations.GetDVRResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_lineup( + self, + *, + request: Union[ + operations.DeleteLineupRequest, operations.DeleteLineupRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteLineupResponse: + r"""Delete a DVR Lineup + + Deletes a DVR device's lineup. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteLineupRequest) + request = cast(operations.DeleteLineupRequest, request) + + req = self._build_request( + method="DELETE", + path="/livetv/dvrs/{dvrId}/lineups", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.DeleteLineupGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteLineup", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.DeleteLineupResponse( + object=unmarshal_json_response( + Optional[operations.DeleteLineupResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_lineup_async( + self, + *, + request: Union[ + operations.DeleteLineupRequest, operations.DeleteLineupRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteLineupResponse: + r"""Delete a DVR Lineup + + Deletes a DVR device's lineup. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteLineupRequest) + request = cast(operations.DeleteLineupRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/livetv/dvrs/{dvrId}/lineups", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.DeleteLineupGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteLineup", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.DeleteLineupResponse( + object=unmarshal_json_response( + Optional[operations.DeleteLineupResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def add_lineup( + self, + *, + request: Union[ + operations.AddLineupRequest, operations.AddLineupRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddLineupResponse: + r"""Add a DVR Lineup + + Add a lineup to a DVR device's set of lineups. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddLineupRequest) + request = cast(operations.AddLineupRequest, request) + + req = self._build_request( + method="PUT", + path="/livetv/dvrs/{dvrId}/lineups", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.AddLineupGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addLineup", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.AddLineupResponse( + object=unmarshal_json_response( + Optional[operations.AddLineupResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def add_lineup_async( + self, + *, + request: Union[ + operations.AddLineupRequest, operations.AddLineupRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddLineupResponse: + r"""Add a DVR Lineup + + Add a lineup to a DVR device's set of lineups. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddLineupRequest) + request = cast(operations.AddLineupRequest, request) + + req = self._build_request_async( + method="PUT", + path="/livetv/dvrs/{dvrId}/lineups", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.AddLineupGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addLineup", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.AddLineupResponse( + object=unmarshal_json_response( + Optional[operations.AddLineupResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def set_dvr_preferences( + self, + *, + request: Union[ + operations.SetDVRPreferencesRequest, + operations.SetDVRPreferencesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetDVRPreferencesResponse: + r"""Set DVR preferences + + Set DVR preferences by name avd value + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetDVRPreferencesRequest) + request = cast(operations.SetDVRPreferencesRequest, request) + + req = self._build_request( + method="PUT", + path="/livetv/dvrs/{dvrId}/prefs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.SetDVRPreferencesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setDVRPreferences", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.SetDVRPreferencesResponse( + object=unmarshal_json_response( + Optional[operations.SetDVRPreferencesResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def set_dvr_preferences_async( + self, + *, + request: Union[ + operations.SetDVRPreferencesRequest, + operations.SetDVRPreferencesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetDVRPreferencesResponse: + r"""Set DVR preferences + + Set DVR preferences by name avd value + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetDVRPreferencesRequest) + request = cast(operations.SetDVRPreferencesRequest, request) + + req = self._build_request_async( + method="PUT", + path="/livetv/dvrs/{dvrId}/prefs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.SetDVRPreferencesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setDVRPreferences", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.SetDVRPreferencesResponse( + object=unmarshal_json_response( + Optional[operations.SetDVRPreferencesResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def stop_dvr_reload( + self, + *, + request: Union[ + operations.StopDVRReloadRequest, operations.StopDVRReloadRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.StopDVRReloadResponse: + r"""Tell a DVR to stop reloading program guide + + Tell a DVR to stop reloading program guide + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.StopDVRReloadRequest) + request = cast(operations.StopDVRReloadRequest, request) + + req = self._build_request( + method="DELETE", + path="/livetv/dvrs/{dvrId}/reloadGuide", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.StopDVRReloadGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="stopDVRReload", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.StopDVRReloadResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def stop_dvr_reload_async( + self, + *, + request: Union[ + operations.StopDVRReloadRequest, operations.StopDVRReloadRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.StopDVRReloadResponse: + r"""Tell a DVR to stop reloading program guide + + Tell a DVR to stop reloading program guide + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.StopDVRReloadRequest) + request = cast(operations.StopDVRReloadRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/livetv/dvrs/{dvrId}/reloadGuide", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.StopDVRReloadGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="stopDVRReload", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.StopDVRReloadResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def reload_guide( + self, + *, + request: Union[ + operations.ReloadGuideRequest, operations.ReloadGuideRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ReloadGuideResponse: + r"""Tell a DVR to reload program guide + + Tell a DVR to reload program guide + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ReloadGuideRequest) + request = cast(operations.ReloadGuideRequest, request) + + req = self._build_request( + method="POST", + path="/livetv/dvrs/{dvrId}/reloadGuide", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.ReloadGuideGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="reloadGuide", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.ReloadGuideResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def reload_guide_async( + self, + *, + request: Union[ + operations.ReloadGuideRequest, operations.ReloadGuideRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ReloadGuideResponse: + r"""Tell a DVR to reload program guide + + Tell a DVR to reload program guide + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ReloadGuideRequest) + request = cast(operations.ReloadGuideRequest, request) + + req = self._build_request_async( + method="POST", + path="/livetv/dvrs/{dvrId}/reloadGuide", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.ReloadGuideGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="reloadGuide", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.ReloadGuideResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def tune_channel( + self, + *, + request: Union[ + operations.TuneChannelRequest, operations.TuneChannelRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.TuneChannelResponse: + r"""Tune a channel on a DVR + + Tune a channel on a DVR to the provided channel + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.TuneChannelRequest) + request = cast(operations.TuneChannelRequest, request) + + req = self._build_request( + method="POST", + path="/livetv/dvrs/{dvrId}/channels/{channel}/tune", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.TuneChannelGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="tuneChannel", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "500", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.TuneChannelResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def tune_channel_async( + self, + *, + request: Union[ + operations.TuneChannelRequest, operations.TuneChannelRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.TuneChannelResponse: + r"""Tune a channel on a DVR + + Tune a channel on a DVR to the provided channel + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.TuneChannelRequest) + request = cast(operations.TuneChannelRequest, request) + + req = self._build_request_async( + method="POST", + path="/livetv/dvrs/{dvrId}/channels/{channel}/tune", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.TuneChannelGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="tuneChannel", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "500", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.TuneChannelResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def remove_device_from_dvr( + self, + *, + request: Union[ + operations.RemoveDeviceFromDVRRequest, + operations.RemoveDeviceFromDVRRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RemoveDeviceFromDVRResponse: + r"""Remove a device from an existing DVR + + Remove a device from an existing DVR + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.RemoveDeviceFromDVRRequest) + request = cast(operations.RemoveDeviceFromDVRRequest, request) + + req = self._build_request( + method="DELETE", + path="/livetv/dvrs/{dvrId}/devices/{deviceId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.RemoveDeviceFromDVRGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="removeDeviceFromDVR", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.RemoveDeviceFromDVRResponse( + object=unmarshal_json_response( + Optional[operations.RemoveDeviceFromDVRResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def remove_device_from_dvr_async( + self, + *, + request: Union[ + operations.RemoveDeviceFromDVRRequest, + operations.RemoveDeviceFromDVRRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RemoveDeviceFromDVRResponse: + r"""Remove a device from an existing DVR + + Remove a device from an existing DVR + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.RemoveDeviceFromDVRRequest) + request = cast(operations.RemoveDeviceFromDVRRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/livetv/dvrs/{dvrId}/devices/{deviceId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.RemoveDeviceFromDVRGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="removeDeviceFromDVR", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.RemoveDeviceFromDVRResponse( + object=unmarshal_json_response( + Optional[operations.RemoveDeviceFromDVRResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def add_device_to_dvr( + self, + *, + request: Union[ + operations.AddDeviceToDVRRequest, operations.AddDeviceToDVRRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddDeviceToDVRResponse: + r"""Add a device to an existing DVR + + Add a device to an existing DVR + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddDeviceToDVRRequest) + request = cast(operations.AddDeviceToDVRRequest, request) + + req = self._build_request( + method="PUT", + path="/livetv/dvrs/{dvrId}/devices/{deviceId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.AddDeviceToDVRGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addDeviceToDVR", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.AddDeviceToDVRResponse( + object=unmarshal_json_response( + Optional[operations.AddDeviceToDVRResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def add_device_to_dvr_async( + self, + *, + request: Union[ + operations.AddDeviceToDVRRequest, operations.AddDeviceToDVRRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddDeviceToDVRResponse: + r"""Add a device to an existing DVR + + Add a device to an existing DVR + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddDeviceToDVRRequest) + request = cast(operations.AddDeviceToDVRRequest, request) + + req = self._build_request_async( + method="PUT", + path="/livetv/dvrs/{dvrId}/devices/{deviceId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.AddDeviceToDVRGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addDeviceToDVR", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.AddDeviceToDVRResponse( + object=unmarshal_json_response( + Optional[operations.AddDeviceToDVRResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/epg.py b/src/plex_api_client/epg.py new file mode 100644 index 0000000..227fc34 --- /dev/null +++ b/src/plex_api_client/epg.py @@ -0,0 +1,1795 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import components, errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class Epg(BaseSDK): + r"""The EPG (Electronic Program Guide) is responsible for obtaining metadata for what is airing on each channel and when""" + + def compute_channel_map( + self, + *, + request: Union[ + operations.ComputeChannelMapRequest, + operations.ComputeChannelMapRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ComputeChannelMapResponse: + r"""Compute the best channel map + + Compute the best channel map, given device and lineup + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ComputeChannelMapRequest) + request = cast(operations.ComputeChannelMapRequest, request) + + req = self._build_request( + method="GET", + path="/livetv/epg/channelmap", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ComputeChannelMapGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="computeChannelMap", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "500", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ComputeChannelMapResponse( + object=unmarshal_json_response( + Optional[operations.ComputeChannelMapResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def compute_channel_map_async( + self, + *, + request: Union[ + operations.ComputeChannelMapRequest, + operations.ComputeChannelMapRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ComputeChannelMapResponse: + r"""Compute the best channel map + + Compute the best channel map, given device and lineup + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ComputeChannelMapRequest) + request = cast(operations.ComputeChannelMapRequest, request) + + req = self._build_request_async( + method="GET", + path="/livetv/epg/channelmap", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ComputeChannelMapGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="computeChannelMap", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "500", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ComputeChannelMapResponse( + object=unmarshal_json_response( + Optional[operations.ComputeChannelMapResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_channels( + self, + *, + request: Union[ + operations.GetChannelsRequest, operations.GetChannelsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetChannelsResponse: + r"""Get channels for a lineup + + Get channels for a lineup within an EPG provider + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetChannelsRequest) + request = cast(operations.GetChannelsRequest, request) + + req = self._build_request( + method="GET", + path="/livetv/epg/channels", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetChannelsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getChannels", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetChannelsResponse( + object=unmarshal_json_response( + Optional[operations.GetChannelsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_channels_async( + self, + *, + request: Union[ + operations.GetChannelsRequest, operations.GetChannelsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetChannelsResponse: + r"""Get channels for a lineup + + Get channels for a lineup within an EPG provider + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetChannelsRequest) + request = cast(operations.GetChannelsRequest, request) + + req = self._build_request_async( + method="GET", + path="/livetv/epg/channels", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetChannelsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getChannels", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetChannelsResponse( + object=unmarshal_json_response( + Optional[operations.GetChannelsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_countries( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetCountriesResponse: + r"""Get all countries + + This endpoint returns a list of countries which EPG data is available for. There are three flavors, as specfied by the `flavor` attribute + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="GET", + path="/livetv/epg/countries", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCountries", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetCountriesResponse( + object=unmarshal_json_response( + Optional[operations.GetCountriesResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_countries_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetCountriesResponse: + r"""Get all countries + + This endpoint returns a list of countries which EPG data is available for. There are three flavors, as specfied by the `flavor` attribute + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="GET", + path="/livetv/epg/countries", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCountries", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetCountriesResponse( + object=unmarshal_json_response( + Optional[operations.GetCountriesResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_all_languages( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAllLanguagesResponse: + r"""Get all languages + + Returns a list of all possible languages for EPG data. + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="GET", + path="/livetv/epg/languages", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAllLanguages", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAllLanguagesResponse( + object=unmarshal_json_response( + Optional[operations.GetAllLanguagesResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_all_languages_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAllLanguagesResponse: + r"""Get all languages + + Returns a list of all possible languages for EPG data. + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="GET", + path="/livetv/epg/languages", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAllLanguages", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAllLanguagesResponse( + object=unmarshal_json_response( + Optional[operations.GetAllLanguagesResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_lineup( + self, + *, + request: Union[ + operations.GetLineupRequest, operations.GetLineupRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetLineupResponse: + r"""Compute the best lineup + + Compute the best lineup, given lineup group and device + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetLineupRequest) + request = cast(operations.GetLineupRequest, request) + + req = self._build_request( + method="GET", + path="/livetv/epg/lineup", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetLineupGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getLineup", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "500", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GetLineupResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_lineup_async( + self, + *, + request: Union[ + operations.GetLineupRequest, operations.GetLineupRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetLineupResponse: + r"""Compute the best lineup + + Compute the best lineup, given lineup group and device + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetLineupRequest) + request = cast(operations.GetLineupRequest, request) + + req = self._build_request_async( + method="GET", + path="/livetv/epg/lineup", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetLineupGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getLineup", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "500", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GetLineupResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_lineup_channels( + self, + *, + request: Union[ + operations.GetLineupChannelsRequest, + operations.GetLineupChannelsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetLineupChannelsResponse: + r"""Get the channels for mulitple lineups + + Get the channels across multiple lineups + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetLineupChannelsRequest) + request = cast(operations.GetLineupChannelsRequest, request) + + req = self._build_request( + method="GET", + path="/livetv/epg/lineupchannels", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetLineupChannelsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getLineupChannels", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetLineupChannelsResponse( + object=unmarshal_json_response( + Optional[operations.GetLineupChannelsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_lineup_channels_async( + self, + *, + request: Union[ + operations.GetLineupChannelsRequest, + operations.GetLineupChannelsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetLineupChannelsResponse: + r"""Get the channels for mulitple lineups + + Get the channels across multiple lineups + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetLineupChannelsRequest) + request = cast(operations.GetLineupChannelsRequest, request) + + req = self._build_request_async( + method="GET", + path="/livetv/epg/lineupchannels", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetLineupChannelsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getLineupChannels", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetLineupChannelsResponse( + object=unmarshal_json_response( + Optional[operations.GetLineupChannelsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_countries_lineups( + self, + *, + request: Union[ + operations.GetCountriesLineupsRequest, + operations.GetCountriesLineupsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetCountriesLineupsResponse: + r"""Get lineups for a country via postal code + + Returns a list of lineups for a given country, EPG provider and postal code + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetCountriesLineupsRequest) + request = cast(operations.GetCountriesLineupsRequest, request) + + req = self._build_request( + method="GET", + path="/livetv/epg/countries/{country}/{epgId}/lineups", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetCountriesLineupsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCountriesLineups", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetCountriesLineupsResponse( + media_container_with_lineup=unmarshal_json_response( + Optional[components.MediaContainerWithLineup], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_countries_lineups_async( + self, + *, + request: Union[ + operations.GetCountriesLineupsRequest, + operations.GetCountriesLineupsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetCountriesLineupsResponse: + r"""Get lineups for a country via postal code + + Returns a list of lineups for a given country, EPG provider and postal code + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetCountriesLineupsRequest) + request = cast(operations.GetCountriesLineupsRequest, request) + + req = self._build_request_async( + method="GET", + path="/livetv/epg/countries/{country}/{epgId}/lineups", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetCountriesLineupsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCountriesLineups", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetCountriesLineupsResponse( + media_container_with_lineup=unmarshal_json_response( + Optional[components.MediaContainerWithLineup], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_country_regions( + self, + *, + request: Union[ + operations.GetCountryRegionsRequest, + operations.GetCountryRegionsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetCountryRegionsResponse: + r"""Get regions for a country + + Get regions for a country within an EPG provider + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetCountryRegionsRequest) + request = cast(operations.GetCountryRegionsRequest, request) + + req = self._build_request( + method="GET", + path="/livetv/epg/countries/{country}/{epgId}/regions", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetCountryRegionsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCountryRegions", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetCountryRegionsResponse( + object=unmarshal_json_response( + Optional[operations.GetCountryRegionsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_country_regions_async( + self, + *, + request: Union[ + operations.GetCountryRegionsRequest, + operations.GetCountryRegionsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetCountryRegionsResponse: + r"""Get regions for a country + + Get regions for a country within an EPG provider + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetCountryRegionsRequest) + request = cast(operations.GetCountryRegionsRequest, request) + + req = self._build_request_async( + method="GET", + path="/livetv/epg/countries/{country}/{epgId}/regions", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetCountryRegionsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCountryRegions", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetCountryRegionsResponse( + object=unmarshal_json_response( + Optional[operations.GetCountryRegionsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def list_lineups( + self, + *, + request: Union[ + operations.ListLineupsRequest, operations.ListLineupsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListLineupsResponse: + r"""Get lineups for a region + + Get lineups for a region within an EPG provider + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListLineupsRequest) + request = cast(operations.ListLineupsRequest, request) + + req = self._build_request( + method="GET", + path="/livetv/epg/countries/{country}/{epgId}/regions/{region}/lineups", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListLineupsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listLineups", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListLineupsResponse( + media_container_with_lineup=unmarshal_json_response( + Optional[components.MediaContainerWithLineup], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def list_lineups_async( + self, + *, + request: Union[ + operations.ListLineupsRequest, operations.ListLineupsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListLineupsResponse: + r"""Get lineups for a region + + Get lineups for a region within an EPG provider + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListLineupsRequest) + request = cast(operations.ListLineupsRequest, request) + + req = self._build_request_async( + method="GET", + path="/livetv/epg/countries/{country}/{epgId}/regions/{region}/lineups", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListLineupsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listLineups", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListLineupsResponse( + media_container_with_lineup=unmarshal_json_response( + Optional[components.MediaContainerWithLineup], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/events.py b/src/plex_api_client/events.py new file mode 100644 index 0000000..27963be --- /dev/null +++ b/src/plex_api_client/events.py @@ -0,0 +1,432 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from typing import Mapping, Optional, Union, cast + + +class Events(BaseSDK): + r"""The server can notify clients in real-time of a wide range of events, from library scanning, to preferences being modified, to changes to media, and many other things. This is also the mechanism by which activity progress is reported. + + Two protocols for receiving the events are available: EventSource (also known as SSE), and WebSocket. + + """ + + def get_notifications( + self, + *, + request: Union[ + operations.GetNotificationsRequest, + operations.GetNotificationsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetNotificationsResponse: + r"""Connect to Eventsource + + Connect to the event source to get a stream of events + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetNotificationsRequest) + request = cast(operations.GetNotificationsRequest, request) + + req = self._build_request( + method="GET", + path="/:/eventsource/notifications", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/octet-stream", + http_headers=http_headers, + _globals=operations.GetNotificationsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getNotifications", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/octet-stream"): + return operations.GetNotificationsResponse( + response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + async def get_notifications_async( + self, + *, + request: Union[ + operations.GetNotificationsRequest, + operations.GetNotificationsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetNotificationsResponse: + r"""Connect to Eventsource + + Connect to the event source to get a stream of events + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetNotificationsRequest) + request = cast(operations.GetNotificationsRequest, request) + + req = self._build_request_async( + method="GET", + path="/:/eventsource/notifications", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/octet-stream", + http_headers=http_headers, + _globals=operations.GetNotificationsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getNotifications", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/octet-stream"): + return operations.GetNotificationsResponse( + response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + def connect_web_socket( + self, + *, + request: Union[ + operations.ConnectWebSocketRequest, + operations.ConnectWebSocketRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ConnectWebSocketResponse: + r"""Connect to WebSocket + + Connect to the web socket to get a stream of events + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ConnectWebSocketRequest) + request = cast(operations.ConnectWebSocketRequest, request) + + req = self._build_request( + method="GET", + path="/:/websocket/notifications", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/octet-stream", + http_headers=http_headers, + _globals=operations.ConnectWebSocketGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="connectWebSocket", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/octet-stream"): + return operations.ConnectWebSocketResponse( + response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + async def connect_web_socket_async( + self, + *, + request: Union[ + operations.ConnectWebSocketRequest, + operations.ConnectWebSocketRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ConnectWebSocketResponse: + r"""Connect to WebSocket + + Connect to the web socket to get a stream of events + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ConnectWebSocketRequest) + request = cast(operations.ConnectWebSocketRequest, request) + + req = self._build_request_async( + method="GET", + path="/:/websocket/notifications", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/octet-stream", + http_headers=http_headers, + _globals=operations.ConnectWebSocketGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="connectWebSocket", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/octet-stream"): + return operations.ConnectWebSocketResponse( + response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) diff --git a/src/plex_api_client/general.py b/src/plex_api_client/general.py new file mode 100644 index 0000000..9c3e06e --- /dev/null +++ b/src/plex_api_client/general.py @@ -0,0 +1,803 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import components, errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class General(BaseSDK): + r"""General endpoints for basic PMS operation not specific to any media provider""" + + def get_server_info( + self, + *, + request: Union[ + operations.GetServerInfoRequest, operations.GetServerInfoRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetServerInfoResponse: + r"""Get PMS info + + Information about this PMS setup and configuration + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetServerInfoRequest) + request = cast(operations.GetServerInfoRequest, request) + + req = self._build_request( + method="GET", + path="/", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetServerInfoGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getServerInfo", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetServerInfoResponse( + media_container_with_directory=unmarshal_json_response( + Optional[components.MediaContainerWithDirectory], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_server_info_async( + self, + *, + request: Union[ + operations.GetServerInfoRequest, operations.GetServerInfoRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetServerInfoResponse: + r"""Get PMS info + + Information about this PMS setup and configuration + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetServerInfoRequest) + request = cast(operations.GetServerInfoRequest, request) + + req = self._build_request_async( + method="GET", + path="/", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetServerInfoGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getServerInfo", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetServerInfoResponse( + media_container_with_directory=unmarshal_json_response( + Optional[components.MediaContainerWithDirectory], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_identity( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetIdentityResponse: + r"""Get PMS identity + + Get details about this PMS's identity + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="GET", + path="/identity", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=False, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getIdentity", + oauth2_scopes=None, + security_source=None, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetIdentityResponse( + object=unmarshal_json_response( + Optional[operations.GetIdentityResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_identity_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetIdentityResponse: + r"""Get PMS identity + + Get details about this PMS's identity + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="GET", + path="/identity", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=False, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getIdentity", + oauth2_scopes=None, + security_source=None, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetIdentityResponse( + object=unmarshal_json_response( + Optional[operations.GetIdentityResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_source_connection_information( + self, + *, + request: Union[ + operations.GetSourceConnectionInformationRequest, + operations.GetSourceConnectionInformationRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSourceConnectionInformationResponse: + r"""Get Source Connection Information + + If a caller requires connection details and a transient token for a source that is known to the server, for example a cloud media provider or shared PMS, then this endpoint can be called. This endpoint is only accessible with either an admin token or a valid transient token generated from an admin token. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.GetSourceConnectionInformationRequest + ) + request = cast(operations.GetSourceConnectionInformationRequest, request) + + req = self._build_request( + method="GET", + path="/security/resources", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetSourceConnectionInformationGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSourceConnectionInformation", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSourceConnectionInformationResponse( + object=unmarshal_json_response( + Optional[operations.GetSourceConnectionInformationResponseBody], + http_res, + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_source_connection_information_async( + self, + *, + request: Union[ + operations.GetSourceConnectionInformationRequest, + operations.GetSourceConnectionInformationRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSourceConnectionInformationResponse: + r"""Get Source Connection Information + + If a caller requires connection details and a transient token for a source that is known to the server, for example a cloud media provider or shared PMS, then this endpoint can be called. This endpoint is only accessible with either an admin token or a valid transient token generated from an admin token. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.GetSourceConnectionInformationRequest + ) + request = cast(operations.GetSourceConnectionInformationRequest, request) + + req = self._build_request_async( + method="GET", + path="/security/resources", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetSourceConnectionInformationGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSourceConnectionInformation", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSourceConnectionInformationResponse( + object=unmarshal_json_response( + Optional[operations.GetSourceConnectionInformationResponseBody], + http_res, + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_transient_token( + self, + *, + request: Union[ + operations.GetTransientTokenRequest, + operations.GetTransientTokenRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetTransientTokenResponse: + r"""Get Transient Tokens + + This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted. + Note: This endpoint responds to all HTTP verbs but POST in preferred + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetTransientTokenRequest) + request = cast(operations.GetTransientTokenRequest, request) + + req = self._build_request( + method="POST", + path="/security/token", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetTransientTokenGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getTransientToken", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetTransientTokenResponse( + object=unmarshal_json_response( + Optional[operations.GetTransientTokenResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_transient_token_async( + self, + *, + request: Union[ + operations.GetTransientTokenRequest, + operations.GetTransientTokenRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetTransientTokenResponse: + r"""Get Transient Tokens + + This endpoint provides the caller with a temporary token with the same access level as the caller's token. These tokens are valid for up to 48 hours and are destroyed if the server instance is restarted. + Note: This endpoint responds to all HTTP verbs but POST in preferred + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetTransientTokenRequest) + request = cast(operations.GetTransientTokenRequest, request) + + req = self._build_request_async( + method="POST", + path="/security/token", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetTransientTokenGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getTransientToken", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetTransientTokenResponse( + object=unmarshal_json_response( + Optional[operations.GetTransientTokenResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/httpclient.py b/src/plex_api_client/httpclient.py index 47b052c..89560b5 100644 --- a/src/plex_api_client/httpclient.py +++ b/src/plex_api_client/httpclient.py @@ -107,7 +107,6 @@ def close_clients( # to them from the owning SDK instance and they can be reaped. owner.client = None owner.async_client = None - if sync_client is not None and not sync_client_supplied: try: sync_client.close() diff --git a/src/plex_api_client/hubs.py b/src/plex_api_client/hubs.py index af7828a..7c8f158 100644 --- a/src/plex_api_client/hubs.py +++ b/src/plex_api_client/hubs.py @@ -3,239 +3,29 @@ from .basesdk import BaseSDK from plex_api_client import utils from plex_api_client._hooks import HookContext -from plex_api_client.models import errors, operations +from plex_api_client.models import components, errors, operations from plex_api_client.types import BaseModel, OptionalNullable, UNSET from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Mapping, Optional, Union, cast +from typing import Mapping, Optional, Union, cast class Hubs(BaseSDK): - r"""Hubs are a structured two-dimensional container for media, generally represented by multiple horizontal rows.""" + r"""The hubs within a media provider""" - def get_global_hubs( - self, - *, - count: Optional[float] = None, - only_transient: Optional[operations.OnlyTransient] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetGlobalHubsResponse: - r"""Get Global Hubs - - Get Global Hubs filtered by the parameters provided. - - :param count: The number of items to return with each hub. - :param only_transient: Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetGlobalHubsRequest( - count=count, - only_transient=only_transient, - ) - - req = self._build_request( - method="GET", - path="/hubs", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getGlobalHubs", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetGlobalHubsResponse( - object=unmarshal_json_response( - Optional[operations.GetGlobalHubsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetGlobalHubsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetGlobalHubsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetGlobalHubsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetGlobalHubsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_global_hubs_async( - self, - *, - count: Optional[float] = None, - only_transient: Optional[operations.OnlyTransient] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetGlobalHubsResponse: - r"""Get Global Hubs - - Get Global Hubs filtered by the parameters provided. - - :param count: The number of items to return with each hub. - :param only_transient: Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetGlobalHubsRequest( - count=count, - only_transient=only_transient, - ) - - req = self._build_request_async( - method="GET", - path="/hubs", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getGlobalHubs", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetGlobalHubsResponse( - object=unmarshal_json_response( - Optional[operations.GetGlobalHubsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetGlobalHubsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetGlobalHubsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetGlobalHubsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetGlobalHubsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_recently_added( + def get_all_hubs( self, *, request: Union[ - operations.GetRecentlyAddedRequest, - operations.GetRecentlyAddedRequestTypedDict, + operations.GetAllHubsRequest, operations.GetAllHubsRequestTypedDict ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetRecentlyAddedResponse: - r"""Get Recently Added - - This endpoint will return the recently added content. + ) -> operations.GetAllHubsResponse: + r"""Get global hubs + Get the global hubs in this PMS :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -254,12 +44,12 @@ class Hubs(BaseSDK): base_url = self._get_url(base_url, url_variables) if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetRecentlyAddedRequest) - request = cast(operations.GetRecentlyAddedRequest, request) + request = utils.unmarshal(request, operations.GetAllHubsRequest) + request = cast(operations.GetAllHubsRequest, request) req = self._build_request( method="GET", - path="/hubs/home/recentlyAdded", + path="/hubs", base_url=base_url, url_variables=url_variables, request=request, @@ -269,6 +59,19 @@ class Hubs(BaseSDK): user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, + _globals=operations.GetAllHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -285,25 +88,26 @@ class Hubs(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="get-recently-added", - oauth2_scopes=[], + operation_id="getAllHubs", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) if utils.match_response(http_res, "200", "application/json"): - return operations.GetRecentlyAddedResponse( + return operations.GetAllHubsResponse( object=unmarshal_json_response( - Optional[operations.GetRecentlyAddedResponseBody], http_res + Optional[operations.GetAllHubsResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), ) - if utils.match_response(http_res, ["400", "401", "4XX"], "*"): + if utils.match_response(http_res, "4XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): @@ -312,22 +116,20 @@ class Hubs(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - async def get_recently_added_async( + async def get_all_hubs_async( self, *, request: Union[ - operations.GetRecentlyAddedRequest, - operations.GetRecentlyAddedRequestTypedDict, + operations.GetAllHubsRequest, operations.GetAllHubsRequestTypedDict ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetRecentlyAddedResponse: - r"""Get Recently Added - - This endpoint will return the recently added content. + ) -> operations.GetAllHubsResponse: + r"""Get global hubs + Get the global hubs in this PMS :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -346,12 +148,12 @@ class Hubs(BaseSDK): base_url = self._get_url(base_url, url_variables) if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetRecentlyAddedRequest) - request = cast(operations.GetRecentlyAddedRequest, request) + request = utils.unmarshal(request, operations.GetAllHubsRequest) + request = cast(operations.GetAllHubsRequest, request) req = self._build_request_async( method="GET", - path="/hubs/home/recentlyAdded", + path="/hubs", base_url=base_url, url_variables=url_variables, request=request, @@ -361,6 +163,19 @@ class Hubs(BaseSDK): user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, + _globals=operations.GetAllHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -377,25 +192,26 @@ class Hubs(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="get-recently-added", - oauth2_scopes=[], + operation_id="getAllHubs", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) if utils.match_response(http_res, "200", "application/json"): - return operations.GetRecentlyAddedResponse( + return operations.GetAllHubsResponse( object=unmarshal_json_response( - Optional[operations.GetRecentlyAddedResponseBody], http_res + Optional[operations.GetAllHubsResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), ) - if utils.match_response(http_res, ["400", "401", "4XX"], "*"): + if utils.match_response(http_res, "4XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): @@ -404,25 +220,23 @@ class Hubs(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - def get_library_hubs( + def get_continue_watching( self, *, - section_id: float, - count: Optional[float] = None, - only_transient: Optional[operations.QueryParamOnlyTransient] = None, + request: Union[ + operations.GetContinueWatchingRequest, + operations.GetContinueWatchingRequestTypedDict, + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetLibraryHubsResponse: - r"""Get library specific hubs + ) -> operations.GetContinueWatchingResponse: + r"""Get the continue watching hub - This endpoint will return a list of library specific hubs + Get the global continue watching hub - - :param section_id: the Id of the library to query - :param count: The number of items to return with each hub. - :param only_transient: Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -438,24 +252,35 @@ class Hubs(BaseSDK): else: base_url = self._get_url(base_url, url_variables) - request = operations.GetLibraryHubsRequest( - section_id=section_id, - count=count, - only_transient=only_transient, - ) + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetContinueWatchingRequest) + request = cast(operations.GetContinueWatchingRequest, request) req = self._build_request( method="GET", - path="/hubs/sections/{sectionId}", + path="/hubs/continueWatching", base_url=base_url, url_variables=url_variables, request=request, request_body_required=False, - request_has_path_params=True, + request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, + _globals=operations.GetContinueWatchingGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -472,37 +297,25 @@ class Hubs(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getLibraryHubs", - oauth2_scopes=[], + operation_id="getContinueWatching", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return operations.GetLibraryHubsResponse( + return operations.GetContinueWatchingResponse( object=unmarshal_json_response( - Optional[operations.GetLibraryHubsResponseBody], http_res + Optional[operations.GetContinueWatchingResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetLibraryHubsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetLibraryHubsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetLibraryHubsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetLibraryHubsUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -512,25 +325,23 @@ class Hubs(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - async def get_library_hubs_async( + async def get_continue_watching_async( self, *, - section_id: float, - count: Optional[float] = None, - only_transient: Optional[operations.QueryParamOnlyTransient] = None, + request: Union[ + operations.GetContinueWatchingRequest, + operations.GetContinueWatchingRequestTypedDict, + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetLibraryHubsResponse: - r"""Get library specific hubs + ) -> operations.GetContinueWatchingResponse: + r"""Get the continue watching hub - This endpoint will return a list of library specific hubs + Get the global continue watching hub - - :param section_id: the Id of the library to query - :param count: The number of items to return with each hub. - :param only_transient: Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added). + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -546,24 +357,35 @@ class Hubs(BaseSDK): else: base_url = self._get_url(base_url, url_variables) - request = operations.GetLibraryHubsRequest( - section_id=section_id, - count=count, - only_transient=only_transient, - ) + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetContinueWatchingRequest) + request = cast(operations.GetContinueWatchingRequest, request) req = self._build_request_async( method="GET", - path="/hubs/sections/{sectionId}", + path="/hubs/continueWatching", base_url=base_url, url_variables=url_variables, request=request, request_body_required=False, - request_has_path_params=True, + request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, + _globals=operations.GetContinueWatchingGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -580,37 +402,25 @@ class Hubs(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getLibraryHubs", - oauth2_scopes=[], + operation_id="getContinueWatching", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return operations.GetLibraryHubsResponse( + return operations.GetContinueWatchingResponse( object=unmarshal_json_response( - Optional[operations.GetLibraryHubsResponseBody], http_res + Optional[operations.GetContinueWatchingResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetLibraryHubsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetLibraryHubsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetLibraryHubsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetLibraryHubsUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -619,3 +429,2473 @@ class Hubs(BaseSDK): raise errors.SDKError("API error occurred", http_res, http_res_text) raise errors.SDKError("Unexpected response received", http_res) + + def get_hub_items( + self, + *, + request: Union[ + operations.GetHubItemsRequest, operations.GetHubItemsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetHubItemsResponse: + r"""Get a hub's items + + Get the items within a single hub specified by identifier + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetHubItemsRequest) + request = cast(operations.GetHubItemsRequest, request) + + req = self._build_request( + method="GET", + path="/hubs/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetHubItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getHubItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetHubItemsResponse( + object=unmarshal_json_response( + Optional[operations.GetHubItemsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_hub_items_async( + self, + *, + request: Union[ + operations.GetHubItemsRequest, operations.GetHubItemsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetHubItemsResponse: + r"""Get a hub's items + + Get the items within a single hub specified by identifier + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetHubItemsRequest) + request = cast(operations.GetHubItemsRequest, request) + + req = self._build_request_async( + method="GET", + path="/hubs/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetHubItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getHubItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetHubItemsResponse( + object=unmarshal_json_response( + Optional[operations.GetHubItemsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_promoted_hubs( + self, + *, + request: Union[ + operations.GetPromotedHubsRequest, + operations.GetPromotedHubsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPromotedHubsResponse: + r"""Get the hubs which are promoted + + Get the global hubs which are promoted (should be displayed on the home screen) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPromotedHubsRequest) + request = cast(operations.GetPromotedHubsRequest, request) + + req = self._build_request( + method="GET", + path="/hubs/promoted", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPromotedHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPromotedHubs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPromotedHubsResponse( + object=unmarshal_json_response( + Optional[operations.GetPromotedHubsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_promoted_hubs_async( + self, + *, + request: Union[ + operations.GetPromotedHubsRequest, + operations.GetPromotedHubsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPromotedHubsResponse: + r"""Get the hubs which are promoted + + Get the global hubs which are promoted (should be displayed on the home screen) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPromotedHubsRequest) + request = cast(operations.GetPromotedHubsRequest, request) + + req = self._build_request_async( + method="GET", + path="/hubs/promoted", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPromotedHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPromotedHubs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPromotedHubsResponse( + object=unmarshal_json_response( + Optional[operations.GetPromotedHubsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_metadata_hubs( + self, + *, + request: Union[ + operations.GetMetadataHubsRequest, + operations.GetMetadataHubsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetMetadataHubsResponse: + r"""Get hubs for section by metadata item + + Get the hubs for a section by metadata item. Currently only for music sections + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetMetadataHubsRequest) + request = cast(operations.GetMetadataHubsRequest, request) + + req = self._build_request( + method="GET", + path="/hubs/metadata/{metadataId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetMetadataHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getMetadataHubs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetMetadataHubsResponse( + media_container_with_hubs=unmarshal_json_response( + Optional[components.MediaContainerWithHubs], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_metadata_hubs_async( + self, + *, + request: Union[ + operations.GetMetadataHubsRequest, + operations.GetMetadataHubsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetMetadataHubsResponse: + r"""Get hubs for section by metadata item + + Get the hubs for a section by metadata item. Currently only for music sections + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetMetadataHubsRequest) + request = cast(operations.GetMetadataHubsRequest, request) + + req = self._build_request_async( + method="GET", + path="/hubs/metadata/{metadataId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetMetadataHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getMetadataHubs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetMetadataHubsResponse( + media_container_with_hubs=unmarshal_json_response( + Optional[components.MediaContainerWithHubs], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_postplay_hubs( + self, + *, + request: Union[ + operations.GetPostplayHubsRequest, + operations.GetPostplayHubsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPostplayHubsResponse: + r"""Get postplay hubs + + Get the hubs for a metadata to be displayed in post play + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPostplayHubsRequest) + request = cast(operations.GetPostplayHubsRequest, request) + + req = self._build_request( + method="GET", + path="/hubs/metadata/{metadataId}/postplay", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPostplayHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPostplayHubs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPostplayHubsResponse( + media_container_with_hubs=unmarshal_json_response( + Optional[components.MediaContainerWithHubs], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_postplay_hubs_async( + self, + *, + request: Union[ + operations.GetPostplayHubsRequest, + operations.GetPostplayHubsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPostplayHubsResponse: + r"""Get postplay hubs + + Get the hubs for a metadata to be displayed in post play + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPostplayHubsRequest) + request = cast(operations.GetPostplayHubsRequest, request) + + req = self._build_request_async( + method="GET", + path="/hubs/metadata/{metadataId}/postplay", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPostplayHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPostplayHubs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPostplayHubsResponse( + media_container_with_hubs=unmarshal_json_response( + Optional[components.MediaContainerWithHubs], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_related_hubs( + self, + *, + request: Union[ + operations.GetRelatedHubsRequest, operations.GetRelatedHubsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetRelatedHubsResponse: + r"""Get related hubs + + Get the hubs for a metadata related to the provided metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetRelatedHubsRequest) + request = cast(operations.GetRelatedHubsRequest, request) + + req = self._build_request( + method="GET", + path="/hubs/metadata/{metadataId}/related", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetRelatedHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getRelatedHubs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetRelatedHubsResponse( + media_container_with_hubs=unmarshal_json_response( + Optional[components.MediaContainerWithHubs], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_related_hubs_async( + self, + *, + request: Union[ + operations.GetRelatedHubsRequest, operations.GetRelatedHubsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetRelatedHubsResponse: + r"""Get related hubs + + Get the hubs for a metadata related to the provided metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetRelatedHubsRequest) + request = cast(operations.GetRelatedHubsRequest, request) + + req = self._build_request_async( + method="GET", + path="/hubs/metadata/{metadataId}/related", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetRelatedHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getRelatedHubs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetRelatedHubsResponse( + media_container_with_hubs=unmarshal_json_response( + Optional[components.MediaContainerWithHubs], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_section_hubs( + self, + *, + request: Union[ + operations.GetSectionHubsRequest, operations.GetSectionHubsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSectionHubsResponse: + r"""Get section hubs + + Get the hubs for a single section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSectionHubsRequest) + request = cast(operations.GetSectionHubsRequest, request) + + req = self._build_request( + method="GET", + path="/hubs/sections/{sectionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetSectionHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSectionHubs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSectionHubsResponse( + object=unmarshal_json_response( + Optional[operations.GetSectionHubsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_section_hubs_async( + self, + *, + request: Union[ + operations.GetSectionHubsRequest, operations.GetSectionHubsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSectionHubsResponse: + r"""Get section hubs + + Get the hubs for a single section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSectionHubsRequest) + request = cast(operations.GetSectionHubsRequest, request) + + req = self._build_request_async( + method="GET", + path="/hubs/sections/{sectionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetSectionHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSectionHubs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSectionHubsResponse( + object=unmarshal_json_response( + Optional[operations.GetSectionHubsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def reset_section_defaults( + self, + *, + request: Union[ + operations.ResetSectionDefaultsRequest, + operations.ResetSectionDefaultsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ResetSectionDefaultsResponse: + r"""Reset hubs to defaults + + Reset hubs for this section to defaults and delete custom hubs + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ResetSectionDefaultsRequest) + request = cast(operations.ResetSectionDefaultsRequest, request) + + req = self._build_request( + method="DELETE", + path="/hubs/sections/{sectionId}/manage", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.ResetSectionDefaultsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="resetSectionDefaults", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.ResetSectionDefaultsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def reset_section_defaults_async( + self, + *, + request: Union[ + operations.ResetSectionDefaultsRequest, + operations.ResetSectionDefaultsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ResetSectionDefaultsResponse: + r"""Reset hubs to defaults + + Reset hubs for this section to defaults and delete custom hubs + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ResetSectionDefaultsRequest) + request = cast(operations.ResetSectionDefaultsRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/hubs/sections/{sectionId}/manage", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.ResetSectionDefaultsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="resetSectionDefaults", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.ResetSectionDefaultsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def list_hubs( + self, + *, + request: Union[operations.ListHubsRequest, operations.ListHubsRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListHubsResponse: + r"""Get hubs + + Get the list of hubs including both built-in and custom + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListHubsRequest) + request = cast(operations.ListHubsRequest, request) + + req = self._build_request( + method="GET", + path="/hubs/sections/{sectionId}/manage", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listHubs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListHubsResponse( + object=unmarshal_json_response( + Optional[operations.ListHubsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def list_hubs_async( + self, + *, + request: Union[operations.ListHubsRequest, operations.ListHubsRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListHubsResponse: + r"""Get hubs + + Get the list of hubs including both built-in and custom + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListHubsRequest) + request = cast(operations.ListHubsRequest, request) + + req = self._build_request_async( + method="GET", + path="/hubs/sections/{sectionId}/manage", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listHubs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListHubsResponse( + object=unmarshal_json_response( + Optional[operations.ListHubsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def create_custom_hub( + self, + *, + request: Union[ + operations.CreateCustomHubRequest, + operations.CreateCustomHubRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CreateCustomHubResponse: + r"""Create a custom hub + + Create a custom hub based on a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CreateCustomHubRequest) + request = cast(operations.CreateCustomHubRequest, request) + + req = self._build_request( + method="POST", + path="/hubs/sections/{sectionId}/manage", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.CreateCustomHubGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="createCustomHub", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.CreateCustomHubResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def create_custom_hub_async( + self, + *, + request: Union[ + operations.CreateCustomHubRequest, + operations.CreateCustomHubRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CreateCustomHubResponse: + r"""Create a custom hub + + Create a custom hub based on a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CreateCustomHubRequest) + request = cast(operations.CreateCustomHubRequest, request) + + req = self._build_request_async( + method="POST", + path="/hubs/sections/{sectionId}/manage", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.CreateCustomHubGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="createCustomHub", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.CreateCustomHubResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def move_hub( + self, + *, + request: Union[operations.MoveHubRequest, operations.MoveHubRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.MoveHubResponse: + r"""Move Hub + + Changed the ordering of a hub among others hubs + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.MoveHubRequest) + request = cast(operations.MoveHubRequest, request) + + req = self._build_request( + method="PUT", + path="/hubs/sections/{sectionId}/manage/move", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.MoveHubGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="moveHub", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.MoveHubResponse( + get_responses_200=unmarshal_json_response( + Optional[components.GetResponses200], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def move_hub_async( + self, + *, + request: Union[operations.MoveHubRequest, operations.MoveHubRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.MoveHubResponse: + r"""Move Hub + + Changed the ordering of a hub among others hubs + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.MoveHubRequest) + request = cast(operations.MoveHubRequest, request) + + req = self._build_request_async( + method="PUT", + path="/hubs/sections/{sectionId}/manage/move", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.MoveHubGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="moveHub", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.MoveHubResponse( + get_responses_200=unmarshal_json_response( + Optional[components.GetResponses200], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_custom_hub( + self, + *, + request: Union[ + operations.DeleteCustomHubRequest, + operations.DeleteCustomHubRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteCustomHubResponse: + r"""Delete a custom hub + + Delete a custom hub from the server + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteCustomHubRequest) + request = cast(operations.DeleteCustomHubRequest, request) + + req = self._build_request( + method="DELETE", + path="/hubs/sections/{sectionId}/manage/{identifier}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteCustomHubGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteCustomHub", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteCustomHubResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_custom_hub_async( + self, + *, + request: Union[ + operations.DeleteCustomHubRequest, + operations.DeleteCustomHubRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteCustomHubResponse: + r"""Delete a custom hub + + Delete a custom hub from the server + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteCustomHubRequest) + request = cast(operations.DeleteCustomHubRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/hubs/sections/{sectionId}/manage/{identifier}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteCustomHubGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteCustomHub", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteCustomHubResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def update_hub_visibility( + self, + *, + request: Union[ + operations.UpdateHubVisibilityRequest, + operations.UpdateHubVisibilityRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.UpdateHubVisibilityResponse: + r"""Change hub visibility + + Changed the visibility of a hub for both the admin and shared users + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UpdateHubVisibilityRequest) + request = cast(operations.UpdateHubVisibilityRequest, request) + + req = self._build_request( + method="PUT", + path="/hubs/sections/{sectionId}/manage/{identifier}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.UpdateHubVisibilityGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="updateHubVisibility", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.UpdateHubVisibilityResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def update_hub_visibility_async( + self, + *, + request: Union[ + operations.UpdateHubVisibilityRequest, + operations.UpdateHubVisibilityRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.UpdateHubVisibilityResponse: + r"""Change hub visibility + + Changed the visibility of a hub for both the admin and shared users + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UpdateHubVisibilityRequest) + request = cast(operations.UpdateHubVisibilityRequest, request) + + req = self._build_request_async( + method="PUT", + path="/hubs/sections/{sectionId}/manage/{identifier}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.UpdateHubVisibilityGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="updateHubVisibility", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.UpdateHubVisibilityResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/library.py b/src/plex_api_client/library.py index c567f76..0d26082 100644 --- a/src/plex_api_client/library.py +++ b/src/plex_api_client/library.py @@ -1,1119 +1,27 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .basesdk import BaseSDK -import io +from enum import Enum from plex_api_client import utils from plex_api_client._hooks import HookContext -from plex_api_client.models import errors, operations +from plex_api_client.models import components, errors, operations from plex_api_client.types import BaseModel, OptionalNullable, UNSET from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, IO, Mapping, Optional, Union, cast +from typing import Mapping, Optional, Union, cast + + +class GetFileAcceptEnum(str, Enum): + AUDIO_MPEG3 = "audio/mpeg3" + IMAGE_JPEG = "image/jpeg" + + +class GetItemArtworkAcceptEnum(str, Enum): + AUDIO_MPEG3 = "audio/mpeg3" + IMAGE_JPEG = "image/jpeg" class Library(BaseSDK): - r"""API Calls interacting with Plex Media Server Libraries""" - - def get_file_hash( - self, - *, - url: str, - type_: Optional[float] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetFileHashResponse: - r"""Get Hash Value - - This resource returns hash values for local files - - :param url: This is the path to the local file, must be prefixed by `file://` - :param type: Item type - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetFileHashRequest( - url=url, - type=type_, - ) - - req = self._build_request( - method="GET", - path="/library/hashes", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getFileHash", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.GetFileHashResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetFileHashBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetFileHashBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetFileHashUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetFileHashUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_file_hash_async( - self, - *, - url: str, - type_: Optional[float] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetFileHashResponse: - r"""Get Hash Value - - This resource returns hash values for local files - - :param url: This is the path to the local file, must be prefixed by `file://` - :param type: Item type - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetFileHashRequest( - url=url, - type=type_, - ) - - req = self._build_request_async( - method="GET", - path="/library/hashes", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getFileHash", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.GetFileHashResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetFileHashBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetFileHashBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetFileHashUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetFileHashUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_recently_added_library( - self, - *, - request: Union[ - operations.GetRecentlyAddedLibraryRequest, - operations.GetRecentlyAddedLibraryRequestTypedDict, - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetRecentlyAddedLibraryResponse: - r"""Get Recently Added - - This endpoint will return the recently added content. - - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal( - request, operations.GetRecentlyAddedLibraryRequest - ) - request = cast(operations.GetRecentlyAddedLibraryRequest, request) - - req = self._build_request( - method="GET", - path="/library/recentlyAdded", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-recently-added-library", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetRecentlyAddedLibraryResponse( - object=unmarshal_json_response( - Optional[operations.GetRecentlyAddedLibraryResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetRecentlyAddedLibraryBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetRecentlyAddedLibraryBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetRecentlyAddedLibraryUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetRecentlyAddedLibraryUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_recently_added_library_async( - self, - *, - request: Union[ - operations.GetRecentlyAddedLibraryRequest, - operations.GetRecentlyAddedLibraryRequestTypedDict, - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetRecentlyAddedLibraryResponse: - r"""Get Recently Added - - This endpoint will return the recently added content. - - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal( - request, operations.GetRecentlyAddedLibraryRequest - ) - request = cast(operations.GetRecentlyAddedLibraryRequest, request) - - req = self._build_request_async( - method="GET", - path="/library/recentlyAdded", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-recently-added-library", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetRecentlyAddedLibraryResponse( - object=unmarshal_json_response( - Optional[operations.GetRecentlyAddedLibraryResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetRecentlyAddedLibraryBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetRecentlyAddedLibraryBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetRecentlyAddedLibraryUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetRecentlyAddedLibraryUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_all_libraries( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetAllLibrariesResponse: - r"""Get All Libraries - - A library section (commonly referred to as just a library) is a collection of media. - Libraries are typed, and depending on their type provide either a flat or a hierarchical view of the media. - For example, a music library has an artist > albums > tracks structure, whereas a movie library is flat. - - Libraries have features beyond just being a collection of media; for starters, they include information about supported types, filters and sorts. - This allows a client to provide a rich interface around the media (e.g. allow sorting movies by release year). - - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request( - method="GET", - path="/library/sections", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-all-libraries", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetAllLibrariesResponse( - object=unmarshal_json_response( - Optional[operations.GetAllLibrariesResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetAllLibrariesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetAllLibrariesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetAllLibrariesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetAllLibrariesUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_all_libraries_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetAllLibrariesResponse: - r"""Get All Libraries - - A library section (commonly referred to as just a library) is a collection of media. - Libraries are typed, and depending on their type provide either a flat or a hierarchical view of the media. - For example, a music library has an artist > albums > tracks structure, whereas a movie library is flat. - - Libraries have features beyond just being a collection of media; for starters, they include information about supported types, filters and sorts. - This allows a client to provide a rich interface around the media (e.g. allow sorting movies by release year). - - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request_async( - method="GET", - path="/library/sections", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-all-libraries", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetAllLibrariesResponse( - object=unmarshal_json_response( - Optional[operations.GetAllLibrariesResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetAllLibrariesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetAllLibrariesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetAllLibrariesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetAllLibrariesUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_library_details( - self, - *, - section_key: int, - include_details: Optional[ - operations.IncludeDetails - ] = operations.IncludeDetails.ZERO, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetLibraryDetailsResponse: - r"""Get Library Details - - ## Library Details Endpoint - - This endpoint provides comprehensive details about the library, focusing on organizational aspects rather than the content itself. - - The details include: - - ### Directories - Organized into three categories: - - - **Primary Directories**: - - Used in some clients for quick access to media subsets (e.g., \"All\", \"On Deck\"). - - Most can be replicated via media queries. - - Customizable by users. - - - **Secondary Directories**: - - Marked with `secondary=\"1\"`. - - Used in older clients for structured navigation. - - - **Special Directories**: - - Includes a \"By Folder\" entry for filesystem-based browsing. - - Contains an obsolete `search=\"1\"` entry for on-the-fly search dialog creation. - - ### Types - Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls: - - - **Type Object Attributes**: - - `key`: Endpoint for the media list of this type. - - `type`: Metadata type (if standard Plex type). - - `title`: Title for this content type (e.g., \"Movies\"). - - - **Filter Objects**: - - Subset of the media query language. - - Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`. - - - **Sort Objects**: - - Description of sort fields. - - Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`. - - > **Note**: Filters and sorts are optional; without them, no filtering controls are rendered. - - - :param section_key: The unique key of the Plex library. Note: This is unique in the context of the Plex server. - :param include_details: Whether or not to include details for a section (types, filters, and sorts). Only exists for backwards compatibility, media providers other than the server libraries have it on always. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetLibraryDetailsRequest( - include_details=include_details, - section_key=section_key, - ) - - req = self._build_request( - method="GET", - path="/library/sections/{sectionKey}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-library-details", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetLibraryDetailsResponse( - object=unmarshal_json_response( - Optional[operations.GetLibraryDetailsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetLibraryDetailsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetLibraryDetailsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetLibraryDetailsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetLibraryDetailsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_library_details_async( - self, - *, - section_key: int, - include_details: Optional[ - operations.IncludeDetails - ] = operations.IncludeDetails.ZERO, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetLibraryDetailsResponse: - r"""Get Library Details - - ## Library Details Endpoint - - This endpoint provides comprehensive details about the library, focusing on organizational aspects rather than the content itself. - - The details include: - - ### Directories - Organized into three categories: - - - **Primary Directories**: - - Used in some clients for quick access to media subsets (e.g., \"All\", \"On Deck\"). - - Most can be replicated via media queries. - - Customizable by users. - - - **Secondary Directories**: - - Marked with `secondary=\"1\"`. - - Used in older clients for structured navigation. - - - **Special Directories**: - - Includes a \"By Folder\" entry for filesystem-based browsing. - - Contains an obsolete `search=\"1\"` entry for on-the-fly search dialog creation. - - ### Types - Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls: - - - **Type Object Attributes**: - - `key`: Endpoint for the media list of this type. - - `type`: Metadata type (if standard Plex type). - - `title`: Title for this content type (e.g., \"Movies\"). - - - **Filter Objects**: - - Subset of the media query language. - - Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`. - - - **Sort Objects**: - - Description of sort fields. - - Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`. - - > **Note**: Filters and sorts are optional; without them, no filtering controls are rendered. - - - :param section_key: The unique key of the Plex library. Note: This is unique in the context of the Plex server. - :param include_details: Whether or not to include details for a section (types, filters, and sorts). Only exists for backwards compatibility, media providers other than the server libraries have it on always. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetLibraryDetailsRequest( - include_details=include_details, - section_key=section_key, - ) - - req = self._build_request_async( - method="GET", - path="/library/sections/{sectionKey}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-library-details", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetLibraryDetailsResponse( - object=unmarshal_json_response( - Optional[operations.GetLibraryDetailsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetLibraryDetailsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetLibraryDetailsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetLibraryDetailsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetLibraryDetailsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def delete_library( - self, - *, - section_key: int, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.DeleteLibraryResponse: - r"""Delete Library Section - - Delete a library using a specific section id - - :param section_key: The unique key of the Plex library. Note: This is unique in the context of the Plex server. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.DeleteLibraryRequest( - section_key=section_key, - ) - - req = self._build_request( - method="DELETE", - path="/library/sections/{sectionKey}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="deleteLibrary", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.DeleteLibraryResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.DeleteLibraryBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.DeleteLibraryBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.DeleteLibraryUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.DeleteLibraryUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def delete_library_async( - self, - *, - section_key: int, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.DeleteLibraryResponse: - r"""Delete Library Section - - Delete a library using a specific section id - - :param section_key: The unique key of the Plex library. Note: This is unique in the context of the Plex server. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.DeleteLibraryRequest( - section_key=section_key, - ) - - req = self._build_request_async( - method="DELETE", - path="/library/sections/{sectionKey}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="deleteLibrary", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.DeleteLibraryResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.DeleteLibraryBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.DeleteLibraryBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.DeleteLibraryUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.DeleteLibraryUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) + r"""Library endpoints which are outside of the Media Provider API. Typically this is manipulation of the library (adding/removing sections, modifying preferences, etc).""" def get_library_items( self, @@ -1127,30 +35,9 @@ class Library(BaseSDK): timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ) -> operations.GetLibraryItemsResponse: - r"""Get Library Items - - Fetches details from a specific section of the library identified by a section key and a tag. The tag parameter accepts the following values: - - `all`: All items in the section. - - `unwatched`: Items that have not been played. - - `newest`: Items that are recently released. - - `recentlyAdded`: Items that are recently added to the library. - - `recentlyViewed`: Items that were recently viewed. - - `onDeck`: Items to continue watching. - - `collection`: Items categorized by collection. - - `edition`: Items categorized by edition. - - `genre`: Items categorized by genre. - - `year`: Items categorized by year of release. - - `decade`: Items categorized by decade. - - `director`: Items categorized by director. - - `actor`: Items categorized by starring actor. - - `country`: Items categorized by country of origin. - - `contentRating`: Items categorized by content rating. - - `rating`: Items categorized by rating. - - `resolution`: Items categorized by resolution. - - `firstCharacter`: Items categorized by the first letter. - - `folder`: Items categorized by folder. - - `albums`: Items categorized by album. + r"""Get all items in library + Request all metadata items according to a query. :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -1174,16 +61,29 @@ class Library(BaseSDK): req = self._build_request( method="GET", - path="/library/sections/{sectionKey}/{tag}", + path="/library/all", base_url=base_url, url_variables=url_variables, request=request, request_body_required=False, - request_has_path_params=True, + request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, + _globals=operations.GetLibraryItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -1200,37 +100,25 @@ class Library(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="get-library-items", - oauth2_scopes=[], + operation_id="getLibraryItems", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return operations.GetLibraryItemsResponse( - object=unmarshal_json_response( - Optional[operations.GetLibraryItemsResponseBody], http_res + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetLibraryItemsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetLibraryItemsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetLibraryItemsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetLibraryItemsUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -1252,30 +140,9 @@ class Library(BaseSDK): timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ) -> operations.GetLibraryItemsResponse: - r"""Get Library Items - - Fetches details from a specific section of the library identified by a section key and a tag. The tag parameter accepts the following values: - - `all`: All items in the section. - - `unwatched`: Items that have not been played. - - `newest`: Items that are recently released. - - `recentlyAdded`: Items that are recently added to the library. - - `recentlyViewed`: Items that were recently viewed. - - `onDeck`: Items to continue watching. - - `collection`: Items categorized by collection. - - `edition`: Items categorized by edition. - - `genre`: Items categorized by genre. - - `year`: Items categorized by year of release. - - `decade`: Items categorized by decade. - - `director`: Items categorized by director. - - `actor`: Items categorized by starring actor. - - `country`: Items categorized by country of origin. - - `contentRating`: Items categorized by content rating. - - `rating`: Items categorized by rating. - - `resolution`: Items categorized by resolution. - - `firstCharacter`: Items categorized by the first letter. - - `folder`: Items categorized by folder. - - `albums`: Items categorized by album. + r"""Get all items in library + Request all metadata items according to a query. :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -1299,16 +166,29 @@ class Library(BaseSDK): req = self._build_request_async( method="GET", - path="/library/sections/{sectionKey}/{tag}", + path="/library/all", base_url=base_url, url_variables=url_variables, request=request, request_body_required=False, - request_has_path_params=True, + request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, + _globals=operations.GetLibraryItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -1325,37 +205,25 @@ class Library(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="get-library-items", - oauth2_scopes=[], + operation_id="getLibraryItems", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): return operations.GetLibraryItemsResponse( - object=unmarshal_json_response( - Optional[operations.GetLibraryItemsResponseBody], http_res + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetLibraryItemsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetLibraryItemsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetLibraryItemsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetLibraryItemsUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -1365,24 +233,18 @@ class Library(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - def get_library_sections_all( + def delete_caches( self, *, - request: Union[ - operations.GetLibrarySectionsAllRequest, - operations.GetLibrarySectionsAllRequestTypedDict, - ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetLibrarySectionsAllResponse: - r"""Get Library section media by tag ALL + ) -> operations.DeleteCachesResponse: + r"""Delete library caches - Retrieves a list of all general media data for this library. + Delete the hub caches so they are recomputed on next request - - :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -1397,22 +259,17 @@ class Library(BaseSDK): base_url = server_url else: base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetLibrarySectionsAllRequest) - request = cast(operations.GetLibrarySectionsAllRequest, request) - req = self._build_request( - method="GET", - path="/library/sections/{sectionKey}/all", + method="DELETE", + path="/library/caches", base_url=base_url, url_variables=url_variables, - request=request, + request=None, request_body_required=False, - request_has_path_params=True, + request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, security=self.sdk_configuration.security, timeout_ms=timeout_ms, @@ -1430,244 +287,21 @@ class Library(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="get-library-sections-all", - oauth2_scopes=[], + operation_id="deleteCaches", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetLibrarySectionsAllResponse( - object=unmarshal_json_response( - Optional[operations.GetLibrarySectionsAllResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetLibrarySectionsAllBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetLibrarySectionsAllBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetLibrarySectionsAllUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetLibrarySectionsAllUnauthorized(response_data, http_res) - if utils.match_response(http_res, ["404", "4XX"], "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_library_sections_all_async( - self, - *, - request: Union[ - operations.GetLibrarySectionsAllRequest, - operations.GetLibrarySectionsAllRequestTypedDict, - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetLibrarySectionsAllResponse: - r"""Get Library section media by tag ALL - - Retrieves a list of all general media data for this library. - - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetLibrarySectionsAllRequest) - request = cast(operations.GetLibrarySectionsAllRequest, request) - - req = self._build_request_async( - method="GET", - path="/library/sections/{sectionKey}/all", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-library-sections-all", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "404", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetLibrarySectionsAllResponse( - object=unmarshal_json_response( - Optional[operations.GetLibrarySectionsAllResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetLibrarySectionsAllBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetLibrarySectionsAllBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetLibrarySectionsAllUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetLibrarySectionsAllUnauthorized(response_data, http_res) - if utils.match_response(http_res, ["404", "4XX"], "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_refresh_library_metadata( - self, - *, - section_key: int, - force: Optional[operations.Force] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetRefreshLibraryMetadataResponse: - r"""Refresh Metadata Of The Library - - This endpoint Refreshes all the Metadata of the library. - - - :param section_key: The unique key of the Plex library. Note: This is unique in the context of the Plex server. - :param force: Force the refresh even if the library is already being refreshed. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetRefreshLibraryMetadataRequest( - force=force, - section_key=section_key, - ) - - req = self._build_request( - method="GET", - path="/library/sections/{sectionKey}/refresh", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-refresh-library-metadata", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None if utils.match_response(http_res, "200", "*"): - return operations.GetRefreshLibraryMetadataResponse( + return operations.DeleteCachesResponse( status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetRefreshLibraryMetadataBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetRefreshLibraryMetadataBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetRefreshLibraryMetadataUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetRefreshLibraryMetadataUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -1677,23 +311,18 @@ class Library(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - async def get_refresh_library_metadata_async( + async def delete_caches_async( self, *, - section_key: int, - force: Optional[operations.Force] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetRefreshLibraryMetadataResponse: - r"""Refresh Metadata Of The Library + ) -> operations.DeleteCachesResponse: + r"""Delete library caches - This endpoint Refreshes all the Metadata of the library. + Delete the hub caches so they are recomputed on next request - - :param section_key: The unique key of the Plex library. Note: This is unique in the context of the Plex server. - :param force: Force the refresh even if the library is already being refreshed. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -1708,23 +337,17 @@ class Library(BaseSDK): base_url = server_url else: base_url = self._get_url(base_url, url_variables) - - request = operations.GetRefreshLibraryMetadataRequest( - force=force, - section_key=section_key, - ) - req = self._build_request_async( - method="GET", - path="/library/sections/{sectionKey}/refresh", + method="DELETE", + path="/library/caches", base_url=base_url, url_variables=url_variables, - request=request, + request=None, request_body_required=False, - request_has_path_params=True, + request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, security=self.sdk_configuration.security, timeout_ms=timeout_ms, @@ -1742,34 +365,21 @@ class Library(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="get-refresh-library-metadata", - oauth2_scopes=[], + operation_id="deleteCaches", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "*"): - return operations.GetRefreshLibraryMetadataResponse( + return operations.DeleteCachesResponse( status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetRefreshLibraryMetadataBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetRefreshLibraryMetadataBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetRefreshLibraryMetadataUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetRefreshLibraryMetadataUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -1779,40 +389,18 @@ class Library(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - def get_search_library( + def clean_bundles( self, *, - section_key: int, - type_: operations.GetSearchLibraryQueryParamType, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetSearchLibraryResponse: - r"""Search Library + ) -> operations.CleanBundlesResponse: + r"""Clean bundles - Search for content within a specific section of the library. + Clean out any now unused bundles. Bundles can become unused when media is deleted - ### Types - Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls: - - - **Type Object Attributes**: - - `type`: Metadata type (if standard Plex type). - - `title`: Title for this content type (e.g., \"Movies\"). - - - **Filter Objects**: - - Subset of the media query language. - - Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`. - - - **Sort Objects**: - - Description of sort fields. - - Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`. - - > **Note**: Filters and sorts are optional; without them, no filtering controls are rendered. - - - :param section_key: The unique key of the Plex library. Note: This is unique in the context of the Plex server. - :param type: The type of media to retrieve or filter by. 1 = movie 2 = show 3 = season 4 = episode E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -1827,23 +415,17 @@ class Library(BaseSDK): base_url = server_url else: base_url = self._get_url(base_url, url_variables) - - request = operations.GetSearchLibraryRequest( - section_key=section_key, - type=type_, - ) - req = self._build_request( - method="GET", - path="/library/sections/{sectionKey}/search", + method="PUT", + path="/library/clean/bundles", base_url=base_url, url_variables=url_variables, - request=request, + request=None, request_body_required=False, - request_has_path_params=True, + request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, security=self.sdk_configuration.security, timeout_ms=timeout_ms, @@ -1861,37 +443,21 @@ class Library(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="get-search-library", - oauth2_scopes=[], + operation_id="cleanBundles", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetSearchLibraryResponse( - object=unmarshal_json_response( - Optional[operations.GetSearchLibraryResponseBody], http_res - ), + if utils.match_response(http_res, "200", "*"): + return operations.CleanBundlesResponse( status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetSearchLibraryBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSearchLibraryBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetSearchLibraryUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSearchLibraryUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -1901,40 +467,18 @@ class Library(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - async def get_search_library_async( + async def clean_bundles_async( self, *, - section_key: int, - type_: operations.GetSearchLibraryQueryParamType, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetSearchLibraryResponse: - r"""Search Library + ) -> operations.CleanBundlesResponse: + r"""Clean bundles - Search for content within a specific section of the library. + Clean out any now unused bundles. Bundles can become unused when media is deleted - ### Types - Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls: - - - **Type Object Attributes**: - - `type`: Metadata type (if standard Plex type). - - `title`: Title for this content type (e.g., \"Movies\"). - - - **Filter Objects**: - - Subset of the media query language. - - Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`. - - - **Sort Objects**: - - Description of sort fields. - - Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`. - - > **Note**: Filters and sorts are optional; without them, no filtering controls are rendered. - - - :param section_key: The unique key of the Plex library. Note: This is unique in the context of the Plex server. - :param type: The type of media to retrieve or filter by. 1 = movie 2 = show 3 = season 4 = episode E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -1949,23 +493,17 @@ class Library(BaseSDK): base_url = server_url else: base_url = self._get_url(base_url, url_variables) - - request = operations.GetSearchLibraryRequest( - section_key=section_key, - type=type_, - ) - req = self._build_request_async( - method="GET", - path="/library/sections/{sectionKey}/search", + method="PUT", + path="/library/clean/bundles", base_url=base_url, url_variables=url_variables, - request=request, + request=None, request_body_required=False, - request_has_path_params=True, + request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, security=self.sdk_configuration.security, timeout_ms=timeout_ms, @@ -1983,37 +521,21 @@ class Library(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="get-search-library", - oauth2_scopes=[], + operation_id="cleanBundles", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetSearchLibraryResponse( - object=unmarshal_json_response( - Optional[operations.GetSearchLibraryResponseBody], http_res - ), + if utils.match_response(http_res, "200", "*"): + return operations.CleanBundlesResponse( status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetSearchLibraryBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSearchLibraryBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetSearchLibraryUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSearchLibraryUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -2023,651 +545,655 @@ class Library(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - def get_genres_library( - self, - *, - section_key: int, - type_: operations.GetGenresLibraryQueryParamType, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetGenresLibraryResponse: - r"""Get Genres of library media - - Retrieves a list of all the genres that are found for the media in this library. - - - :param section_key: The unique key of the Plex library. Note: This is unique in the context of the Plex server. - :param type: The type of media to retrieve or filter by. 1 = movie 2 = show 3 = season 4 = episode E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetGenresLibraryRequest( - section_key=section_key, - type=type_, - ) - - req = self._build_request( - method="GET", - path="/library/sections/{sectionKey}/genre", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-genres-library", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "404", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetGenresLibraryResponse( - object=unmarshal_json_response( - Optional[operations.GetGenresLibraryResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetGenresLibraryBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetGenresLibraryBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetGenresLibraryUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetGenresLibraryUnauthorized(response_data, http_res) - if utils.match_response(http_res, ["404", "4XX"], "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_genres_library_async( - self, - *, - section_key: int, - type_: operations.GetGenresLibraryQueryParamType, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetGenresLibraryResponse: - r"""Get Genres of library media - - Retrieves a list of all the genres that are found for the media in this library. - - - :param section_key: The unique key of the Plex library. Note: This is unique in the context of the Plex server. - :param type: The type of media to retrieve or filter by. 1 = movie 2 = show 3 = season 4 = episode E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetGenresLibraryRequest( - section_key=section_key, - type=type_, - ) - - req = self._build_request_async( - method="GET", - path="/library/sections/{sectionKey}/genre", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-genres-library", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "404", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetGenresLibraryResponse( - object=unmarshal_json_response( - Optional[operations.GetGenresLibraryResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetGenresLibraryBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetGenresLibraryBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetGenresLibraryUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetGenresLibraryUnauthorized(response_data, http_res) - if utils.match_response(http_res, ["404", "4XX"], "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_countries_library( - self, - *, - section_key: int, - type_: operations.GetCountriesLibraryQueryParamType, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetCountriesLibraryResponse: - r"""Get Countries of library media - - Retrieves a list of all the countries that are found for the media in this library. - - - :param section_key: The unique key of the Plex library. Note: This is unique in the context of the Plex server. - :param type: The type of media to retrieve or filter by. 1 = movie 2 = show 3 = season 4 = episode E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetCountriesLibraryRequest( - section_key=section_key, - type=type_, - ) - - req = self._build_request( - method="GET", - path="/library/sections/{sectionKey}/country", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-countries-library", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "404", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetCountriesLibraryResponse( - object=unmarshal_json_response( - Optional[operations.GetCountriesLibraryResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetCountriesLibraryBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetCountriesLibraryBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetCountriesLibraryUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetCountriesLibraryUnauthorized(response_data, http_res) - if utils.match_response(http_res, ["404", "4XX"], "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_countries_library_async( - self, - *, - section_key: int, - type_: operations.GetCountriesLibraryQueryParamType, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetCountriesLibraryResponse: - r"""Get Countries of library media - - Retrieves a list of all the countries that are found for the media in this library. - - - :param section_key: The unique key of the Plex library. Note: This is unique in the context of the Plex server. - :param type: The type of media to retrieve or filter by. 1 = movie 2 = show 3 = season 4 = episode E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetCountriesLibraryRequest( - section_key=section_key, - type=type_, - ) - - req = self._build_request_async( - method="GET", - path="/library/sections/{sectionKey}/country", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-countries-library", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "404", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetCountriesLibraryResponse( - object=unmarshal_json_response( - Optional[operations.GetCountriesLibraryResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetCountriesLibraryBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetCountriesLibraryBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetCountriesLibraryUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetCountriesLibraryUnauthorized(response_data, http_res) - if utils.match_response(http_res, ["404", "4XX"], "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_actors_library( - self, - *, - section_key: int, - type_: operations.GetActorsLibraryQueryParamType, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetActorsLibraryResponse: - r"""Get Actors of library media - - Retrieves a list of all the actors that are found for the media in this library. - - - :param section_key: The unique key of the Plex library. Note: This is unique in the context of the Plex server. - :param type: The type of media to retrieve or filter by. 1 = movie 2 = show 3 = season 4 = episode E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetActorsLibraryRequest( - section_key=section_key, - type=type_, - ) - - req = self._build_request( - method="GET", - path="/library/sections/{sectionKey}/actor", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-actors-library", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "404", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetActorsLibraryResponse( - object=unmarshal_json_response( - Optional[operations.GetActorsLibraryResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetActorsLibraryBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetActorsLibraryBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetActorsLibraryUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetActorsLibraryUnauthorized(response_data, http_res) - if utils.match_response(http_res, ["404", "4XX"], "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_actors_library_async( - self, - *, - section_key: int, - type_: operations.GetActorsLibraryQueryParamType, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetActorsLibraryResponse: - r"""Get Actors of library media - - Retrieves a list of all the actors that are found for the media in this library. - - - :param section_key: The unique key of the Plex library. Note: This is unique in the context of the Plex server. - :param type: The type of media to retrieve or filter by. 1 = movie 2 = show 3 = season 4 = episode E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetActorsLibraryRequest( - section_key=section_key, - type=type_, - ) - - req = self._build_request_async( - method="GET", - path="/library/sections/{sectionKey}/actor", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-actors-library", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "404", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetActorsLibraryResponse( - object=unmarshal_json_response( - Optional[operations.GetActorsLibraryResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetActorsLibraryBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetActorsLibraryBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetActorsLibraryUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetActorsLibraryUnauthorized(response_data, http_res) - if utils.match_response(http_res, ["404", "4XX"], "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_search_all_libraries( + def ingest_transient_item( self, *, request: Union[ - operations.GetSearchAllLibrariesRequest, - operations.GetSearchAllLibrariesRequestTypedDict, + operations.IngestTransientItemRequest, + operations.IngestTransientItemRequestTypedDict, ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetSearchAllLibrariesResponse: - r"""Search All Libraries + ) -> operations.IngestTransientItemResponse: + r"""Ingest a transient item - Search the provided query across all library sections, or a single section, and return matches as hubs, split up by type. + This endpoint takes a file path specified in the `url` parameter, matches it using the scanner's match mechanism, downloads rich metadata, and then ingests the item as a transient item (without a library section). In the case where the file represents an episode, the entire tree (show, season, and episode) is added as transient items. At this time, movies and episodes are the only supported types, which are gleaned automatically from the file path. + Note that any of the parameters passed to the metadata details endpoint (e.g. `includeExtras=1`) work here. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.IngestTransientItemRequest) + request = cast(operations.IngestTransientItemRequest, request) + + req = self._build_request( + method="POST", + path="/library/file", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.IngestTransientItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="ingestTransientItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.IngestTransientItemResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def ingest_transient_item_async( + self, + *, + request: Union[ + operations.IngestTransientItemRequest, + operations.IngestTransientItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.IngestTransientItemResponse: + r"""Ingest a transient item + + This endpoint takes a file path specified in the `url` parameter, matches it using the scanner's match mechanism, downloads rich metadata, and then ingests the item as a transient item (without a library section). In the case where the file represents an episode, the entire tree (show, season, and episode) is added as transient items. At this time, movies and episodes are the only supported types, which are gleaned automatically from the file path. + Note that any of the parameters passed to the metadata details endpoint (e.g. `includeExtras=1`) work here. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.IngestTransientItemRequest) + request = cast(operations.IngestTransientItemRequest, request) + + req = self._build_request_async( + method="POST", + path="/library/file", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.IngestTransientItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="ingestTransientItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.IngestTransientItemResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_library_matches( + self, + *, + request: Union[ + operations.GetLibraryMatchesRequest, + operations.GetLibraryMatchesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetLibraryMatchesResponse: + r"""Get library matches + + The matches endpoint is used to match content external to the library with content inside the library. This is done by passing a series of semantic \"hints\" about the content (its type, name, or release year). Each type (e.g. movie) has a canonical set of minimal required hints. + This ability to match content is useful in a variety of scenarios. For example, in the DVR, the EPG uses the endpoint to match recording rules against airing content. And in the cloud, the UMP uses the endpoint to match up a piece of media with rich metadata. + The endpoint response can including multiple matches, if there is ambiguity, each one containing a `score` from 0 to 100. For somewhat historical reasons, anything over 85 is considered a positive match (we prefer false negatives over false positives in general for matching). + The `guid` hint is somewhat special, in that it generally represents a unique identity for a piece of media (e.g. the IMDB `ttXXX`) identifier, in contrast with other hints which can be much more ambiguous (e.g. a title of `Jane Eyre`, which could refer to the 1943 or the 2011 version). + Episodes require either a season/episode pair, or an air date (or both). Either the path must be sent, or the show title + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetLibraryMatchesRequest) + request = cast(operations.GetLibraryMatchesRequest, request) + + req = self._build_request( + method="GET", + path="/library/matches", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetLibraryMatchesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getLibraryMatches", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetLibraryMatchesResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_library_matches_async( + self, + *, + request: Union[ + operations.GetLibraryMatchesRequest, + operations.GetLibraryMatchesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetLibraryMatchesResponse: + r"""Get library matches + + The matches endpoint is used to match content external to the library with content inside the library. This is done by passing a series of semantic \"hints\" about the content (its type, name, or release year). Each type (e.g. movie) has a canonical set of minimal required hints. + This ability to match content is useful in a variety of scenarios. For example, in the DVR, the EPG uses the endpoint to match recording rules against airing content. And in the cloud, the UMP uses the endpoint to match up a piece of media with rich metadata. + The endpoint response can including multiple matches, if there is ambiguity, each one containing a `score` from 0 to 100. For somewhat historical reasons, anything over 85 is considered a positive match (we prefer false negatives over false positives in general for matching). + The `guid` hint is somewhat special, in that it generally represents a unique identity for a piece of media (e.g. the IMDB `ttXXX`) identifier, in contrast with other hints which can be much more ambiguous (e.g. a title of `Jane Eyre`, which could refer to the 1943 or the 2011 version). + Episodes require either a season/episode pair, or an air date (or both). Either the path must be sent, or the show title + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetLibraryMatchesRequest) + request = cast(operations.GetLibraryMatchesRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/matches", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetLibraryMatchesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getLibraryMatches", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetLibraryMatchesResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def optimize_database( + self, + *, + request: Union[ + operations.OptimizeDatabaseRequest, + operations.OptimizeDatabaseRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.OptimizeDatabaseResponse: + r"""Optimize the Database + + Initiate optimize on the database. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.OptimizeDatabaseRequest) + request = cast(operations.OptimizeDatabaseRequest, request) + + req = self._build_request( + method="PUT", + path="/library/optimize", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.OptimizeDatabaseGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="optimizeDatabase", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.OptimizeDatabaseResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def optimize_database_async( + self, + *, + request: Union[ + operations.OptimizeDatabaseRequest, + operations.OptimizeDatabaseRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.OptimizeDatabaseResponse: + r"""Optimize the Database + + Initiate optimize on the database. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.OptimizeDatabaseRequest) + request = cast(operations.OptimizeDatabaseRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/optimize", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.OptimizeDatabaseGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="optimizeDatabase", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.OptimizeDatabaseResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_random_artwork( + self, + *, + request: Union[ + operations.GetRandomArtworkRequest, + operations.GetRandomArtworkRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetRandomArtworkResponse: + r"""Get random artwork + + Get random artwork across sections. This is commonly used for a screensaver. + + This retrieves 100 random artwork paths in the specified sections and returns them. Restrictions are put in place to not return artwork for items the user is not allowed to access. Artwork will be for Movies, Shows, and Artists only. :param request: The request object to send. @@ -2687,12 +1213,12 @@ class Library(BaseSDK): base_url = self._get_url(base_url, url_variables) if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetSearchAllLibrariesRequest) - request = cast(operations.GetSearchAllLibrariesRequest, request) + request = utils.unmarshal(request, operations.GetRandomArtworkRequest) + request = cast(operations.GetRandomArtworkRequest, request) req = self._build_request( method="GET", - path="/library/search", + path="/library/randomArtwork", base_url=base_url, url_variables=url_variables, request=request, @@ -2702,6 +1228,208 @@ class Library(BaseSDK): user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, + _globals=operations.GetRandomArtworkGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getRandomArtwork", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetRandomArtworkResponse( + media_container_with_artwork=unmarshal_json_response( + Optional[components.MediaContainerWithArtwork], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_random_artwork_async( + self, + *, + request: Union[ + operations.GetRandomArtworkRequest, + operations.GetRandomArtworkRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetRandomArtworkResponse: + r"""Get random artwork + + Get random artwork across sections. This is commonly used for a screensaver. + + This retrieves 100 random artwork paths in the specified sections and returns them. Restrictions are put in place to not return artwork for items the user is not allowed to access. Artwork will be for Movies, Shows, and Artists only. + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetRandomArtworkRequest) + request = cast(operations.GetRandomArtworkRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/randomArtwork", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetRandomArtworkGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getRandomArtwork", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetRandomArtworkResponse( + media_container_with_artwork=unmarshal_json_response( + Optional[components.MediaContainerWithArtwork], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_sections( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSectionsResponse: + r"""Get library sections (main Media Provider Only) + + A library section (commonly referred to as just a library) is a collection of media. Libraries are typed, and depending on their type provide either a flat or a hierarchical view of the media. For example, a music library has an artist > albums > tracks structure, whereas a movie library is flat. + Libraries have features beyond just being a collection of media; for starters, they include information about supported types, filters and sorts. This allows a client to provide a rich interface around the media (e.g. allow sorting movies by release year). + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="GET", + path="/library/sections/all", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -2718,37 +1446,25 @@ class Library(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="get-search-all-libraries", - oauth2_scopes=[], + operation_id="getSections", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return operations.GetSearchAllLibrariesResponse( + return operations.GetSectionsResponse( object=unmarshal_json_response( - Optional[operations.GetSearchAllLibrariesResponseBody], http_res + Optional[operations.GetSectionsResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetSearchAllLibrariesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSearchAllLibrariesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetSearchAllLibrariesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSearchAllLibrariesUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -2758,24 +1474,19 @@ class Library(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - async def get_search_all_libraries_async( + async def get_sections_async( self, *, - request: Union[ - operations.GetSearchAllLibrariesRequest, - operations.GetSearchAllLibrariesRequestTypedDict, - ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetSearchAllLibrariesResponse: - r"""Search All Libraries + ) -> operations.GetSectionsResponse: + r"""Get library sections (main Media Provider Only) - Search the provided query across all library sections, or a single section, and return matches as hubs, split up by type. + A library section (commonly referred to as just a library) is a collection of media. Libraries are typed, and depending on their type provide either a flat or a hierarchical view of the media. For example, a music library has an artist > albums > tracks structure, whereas a movie library is flat. + Libraries have features beyond just being a collection of media; for starters, they include information about supported types, filters and sorts. This allows a client to provide a rich interface around the media (e.g. allow sorting movies by release year). - - :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -2790,17 +1501,12 @@ class Library(BaseSDK): base_url = server_url else: base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetSearchAllLibrariesRequest) - request = cast(operations.GetSearchAllLibrariesRequest, request) - req = self._build_request_async( method="GET", - path="/library/search", + path="/library/sections/all", base_url=base_url, url_variables=url_variables, - request=request, + request=None, request_body_required=False, request_has_path_params=False, request_has_query_params=True, @@ -2823,37 +1529,25 @@ class Library(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="get-search-all-libraries", - oauth2_scopes=[], + operation_id="getSections", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return operations.GetSearchAllLibrariesResponse( + return operations.GetSectionsResponse( object=unmarshal_json_response( - Optional[operations.GetSearchAllLibrariesResponseBody], http_res + Optional[operations.GetSectionsResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetSearchAllLibrariesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSearchAllLibrariesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetSearchAllLibrariesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSearchAllLibrariesUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -2863,23 +1557,20 @@ class Library(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - def get_media_meta_data( + def add_section( self, *, request: Union[ - operations.GetMediaMetaDataRequest, - operations.GetMediaMetaDataRequestTypedDict, + operations.AddSectionRequest, operations.AddSectionRequestTypedDict ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetMediaMetaDataResponse: - r"""Get Media Metadata - - This endpoint will return all the (meta)data of one or more library items specified by the ratingKey. - Multiple rating keys can be provided as a comma-separated list (e.g., \"21119,21617\"). + ) -> operations.AddSectionResponse: + r"""Add a library section + Add a new library section to the server :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -2898,21 +1589,34 @@ class Library(BaseSDK): base_url = self._get_url(base_url, url_variables) if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetMediaMetaDataRequest) - request = cast(operations.GetMediaMetaDataRequest, request) + request = utils.unmarshal(request, operations.AddSectionRequest) + request = cast(operations.AddSectionRequest, request) req = self._build_request( - method="GET", - path="/library/metadata/{ratingKey}", + method="POST", + path="/library/sections/all", base_url=base_url, url_variables=url_variables, request=request, request_body_required=False, - request_has_path_params=True, + request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, + _globals=operations.AddSectionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -2929,38 +1633,25 @@ class Library(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="get-media-meta-data", - oauth2_scopes=[], + operation_id="addSection", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "404", "4XX", "5XX"], + error_status_codes=["400", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return operations.GetMediaMetaDataResponse( - object=unmarshal_json_response( - Optional[operations.GetMediaMetaDataResponseBody], http_res + return operations.AddSectionResponse( + slash_get_responses_200=unmarshal_json_response( + Optional[components.SlashGetResponses200], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetMediaMetaDataBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetMediaMetaDataBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetMediaMetaDataUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetMediaMetaDataUnauthorized(response_data, http_res) - if utils.match_response(http_res, ["404", "4XX"], "*"): + if utils.match_response(http_res, ["400", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): @@ -2969,23 +1660,20 @@ class Library(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - async def get_media_meta_data_async( + async def add_section_async( self, *, request: Union[ - operations.GetMediaMetaDataRequest, - operations.GetMediaMetaDataRequestTypedDict, + operations.AddSectionRequest, operations.AddSectionRequestTypedDict ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetMediaMetaDataResponse: - r"""Get Media Metadata - - This endpoint will return all the (meta)data of one or more library items specified by the ratingKey. - Multiple rating keys can be provided as a comma-separated list (e.g., \"21119,21617\"). + ) -> operations.AddSectionResponse: + r"""Add a library section + Add a new library section to the server :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -3004,582 +1692,34 @@ class Library(BaseSDK): base_url = self._get_url(base_url, url_variables) if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetMediaMetaDataRequest) - request = cast(operations.GetMediaMetaDataRequest, request) - - req = self._build_request_async( - method="GET", - path="/library/metadata/{ratingKey}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-media-meta-data", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "404", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetMediaMetaDataResponse( - object=unmarshal_json_response( - Optional[operations.GetMediaMetaDataResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetMediaMetaDataBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetMediaMetaDataBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetMediaMetaDataUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetMediaMetaDataUnauthorized(response_data, http_res) - if utils.match_response(http_res, ["404", "4XX"], "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_media_arts( - self, - *, - rating_key: int, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetMediaArtsResponse: - r"""Get Media Background Artwork - - Returns the background artwork for a library item. - - :param rating_key: the id of the library item to return the artwork of. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetMediaArtsRequest( - rating_key=rating_key, - ) - - req = self._build_request( - method="GET", - path="/library/metadata/{ratingKey}/arts", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-media-arts", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["404", "4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return operations.GetMediaArtsResponse( - object=unmarshal_json_response( - Optional[operations.GetMediaArtsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, ["404", "4XX"], "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_media_arts_async( - self, - *, - rating_key: int, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetMediaArtsResponse: - r"""Get Media Background Artwork - - Returns the background artwork for a library item. - - :param rating_key: the id of the library item to return the artwork of. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetMediaArtsRequest( - rating_key=rating_key, - ) - - req = self._build_request_async( - method="GET", - path="/library/metadata/{ratingKey}/arts", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-media-arts", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["404", "4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return operations.GetMediaArtsResponse( - object=unmarshal_json_response( - Optional[operations.GetMediaArtsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, ["404", "4XX"], "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def post_media_arts( - self, - *, - rating_key: int, - url: Optional[str] = None, - request_body: Optional[Union[bytes, IO[bytes], io.BufferedReader]] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.PostMediaArtsResponse: - r"""Upload Media Background Artwork - - Uploads an image to use as the background artwork for a library item, either from a local file or a remote URL - - :param rating_key: the id of the library item to return the posters of. - :param url: The URL of the image, if uploading a remote image - :param request_body: The contents of the image, if uploading a local file - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.PostMediaArtsRequest( - rating_key=rating_key, - url=url, - request_body=request_body, - ) - - req = self._build_request( - method="POST", - path="/library/metadata/{ratingKey}/arts", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="*/*", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, - False, - True, - "raw", - Optional[Union[bytes, IO[bytes], io.BufferedReader]], - ), - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="post-media-arts", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["404", "4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "*"): - return operations.PostMediaArtsResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, ["404", "4XX"], "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def post_media_arts_async( - self, - *, - rating_key: int, - url: Optional[str] = None, - request_body: Optional[Union[bytes, IO[bytes], io.BufferedReader]] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.PostMediaArtsResponse: - r"""Upload Media Background Artwork - - Uploads an image to use as the background artwork for a library item, either from a local file or a remote URL - - :param rating_key: the id of the library item to return the posters of. - :param url: The URL of the image, if uploading a remote image - :param request_body: The contents of the image, if uploading a local file - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.PostMediaArtsRequest( - rating_key=rating_key, - url=url, - request_body=request_body, - ) + request = utils.unmarshal(request, operations.AddSectionRequest) + request = cast(operations.AddSectionRequest, request) req = self._build_request_async( method="POST", - path="/library/metadata/{ratingKey}/arts", + path="/library/sections/all", base_url=base_url, url_variables=url_variables, request=request, request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="*/*", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, - False, - True, - "raw", - Optional[Union[bytes, IO[bytes], io.BufferedReader]], - ), - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="post-media-arts", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["404", "4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "*"): - return operations.PostMediaArtsResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, ["404", "4XX"], "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_media_posters( - self, - *, - rating_key: int, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetMediaPostersResponse: - r"""Get Media Posters - - Returns the available posters for a library item. - - :param rating_key: the id of the library item to return the posters of. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetMediaPostersRequest( - rating_key=rating_key, - ) - - req = self._build_request( - method="GET", - path="/library/metadata/{ratingKey}/posters", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, + request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-media-posters", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, + _globals=operations.AddSectionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, ), - request=req, - error_status_codes=["404", "4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "application/json"): - return operations.GetMediaPostersResponse( - object=unmarshal_json_response( - Optional[operations.GetMediaPostersResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, ["404", "4XX"], "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_media_posters_async( - self, - *, - rating_key: int, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetMediaPostersResponse: - r"""Get Media Posters - - Returns the available posters for a library item. - - :param rating_key: the id of the library item to return the posters of. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetMediaPostersRequest( - rating_key=rating_key, - ) - - req = self._build_request_async( - method="GET", - path="/library/metadata/{ratingKey}/posters", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -3596,25 +1736,25 @@ class Library(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="get-media-posters", - oauth2_scopes=[], + operation_id="addSection", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["404", "4XX", "5XX"], + error_status_codes=["400", "4XX", "5XX"], retry_config=retry_config, ) if utils.match_response(http_res, "200", "application/json"): - return operations.GetMediaPostersResponse( - object=unmarshal_json_response( - Optional[operations.GetMediaPostersResponseBody], http_res + return operations.AddSectionResponse( + slash_get_responses_200=unmarshal_json_response( + Optional[components.SlashGetResponses200], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, ["404", "4XX"], "*"): + if utils.match_response(http_res, ["400", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): @@ -3623,24 +1763,18 @@ class Library(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - def post_media_poster( + def stop_all_refreshes( self, *, - rating_key: int, - url: Optional[str] = None, - request_body: Optional[Union[bytes, IO[bytes], io.BufferedReader]] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.PostMediaPosterResponse: - r"""Upload Media Poster + ) -> operations.StopAllRefreshesResponse: + r"""Stop refresh - Uploads a poster to a library item, either from a local file or a remote URL + Stop all refreshes across all sections - :param rating_key: the id of the library item to return the posters of. - :param url: The URL of the image, if uploading a remote image - :param request_body: The contents of the image, if uploading a local file :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -3655,425 +1789,12 @@ class Library(BaseSDK): base_url = server_url else: base_url = self._get_url(base_url, url_variables) - - request = operations.PostMediaPosterRequest( - rating_key=rating_key, - url=url, - request_body=request_body, - ) - req = self._build_request( - method="POST", - path="/library/metadata/{ratingKey}/posters", + method="DELETE", + path="/library/sections/all/refresh", base_url=base_url, url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="*/*", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, - False, - True, - "raw", - Optional[Union[bytes, IO[bytes], io.BufferedReader]], - ), - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="post-media-poster", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["404", "4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "*"): - return operations.PostMediaPosterResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, ["404", "4XX"], "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def post_media_poster_async( - self, - *, - rating_key: int, - url: Optional[str] = None, - request_body: Optional[Union[bytes, IO[bytes], io.BufferedReader]] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.PostMediaPosterResponse: - r"""Upload Media Poster - - Uploads a poster to a library item, either from a local file or a remote URL - - :param rating_key: the id of the library item to return the posters of. - :param url: The URL of the image, if uploading a remote image - :param request_body: The contents of the image, if uploading a local file - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.PostMediaPosterRequest( - rating_key=rating_key, - url=url, - request_body=request_body, - ) - - req = self._build_request_async( - method="POST", - path="/library/metadata/{ratingKey}/posters", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="*/*", - http_headers=http_headers, - security=self.sdk_configuration.security, - get_serialized_body=lambda: utils.serialize_request_body( - request.request_body, - False, - True, - "raw", - Optional[Union[bytes, IO[bytes], io.BufferedReader]], - ), - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="post-media-poster", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["404", "4XX", "5XX"], - retry_config=retry_config, - ) - - if utils.match_response(http_res, "200", "*"): - return operations.PostMediaPosterResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, ["404", "4XX"], "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_metadata_children( - self, - *, - rating_key: float, - include_elements: Optional[str] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetMetadataChildrenResponse: - r"""Get Items Children - - This endpoint will return the children of of a library item specified with the ratingKey. - - - :param rating_key: the id of the library item to return the children of. - :param include_elements: Adds additional elements to the response. Supported types are (Stream) - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetMetadataChildrenRequest( - rating_key=rating_key, - include_elements=include_elements, - ) - - req = self._build_request( - method="GET", - path="/library/metadata/{ratingKey}/children", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getMetadataChildren", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetMetadataChildrenResponse( - object=unmarshal_json_response( - Optional[operations.GetMetadataChildrenResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetMetadataChildrenBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetMetadataChildrenBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetMetadataChildrenUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetMetadataChildrenUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_metadata_children_async( - self, - *, - rating_key: float, - include_elements: Optional[str] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetMetadataChildrenResponse: - r"""Get Items Children - - This endpoint will return the children of of a library item specified with the ratingKey. - - - :param rating_key: the id of the library item to return the children of. - :param include_elements: Adds additional elements to the response. Supported types are (Stream) - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetMetadataChildrenRequest( - rating_key=rating_key, - include_elements=include_elements, - ) - - req = self._build_request_async( - method="GET", - path="/library/metadata/{ratingKey}/children", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getMetadataChildren", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetMetadataChildrenResponse( - object=unmarshal_json_response( - Optional[operations.GetMetadataChildrenResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetMetadataChildrenBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetMetadataChildrenBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetMetadataChildrenUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetMetadataChildrenUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_top_watched_content( - self, - *, - type_: operations.GetTopWatchedContentQueryParamType, - include_guids: Optional[ - operations.GetTopWatchedContentQueryParamIncludeGuids - ] = operations.GetTopWatchedContentQueryParamIncludeGuids.DISABLE, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetTopWatchedContentResponse: - r"""Get Top Watched Content - - This endpoint will return the top watched content from libraries of a certain type - - - :param type: The type of media to retrieve or filter by. 1 = movie 2 = show 3 = season 4 = episode E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - :param include_guids: Adds the Guid object to the response - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetTopWatchedContentRequest( - type=type_, - include_guids=include_guids, - ) - - req = self._build_request( - method="GET", - path="/library/all/top", - base_url=base_url, - url_variables=url_variables, - request=request, + request=None, request_body_required=False, request_has_path_params=False, request_has_query_params=True, @@ -4096,37 +1817,24 @@ class Library(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getTopWatchedContent", - oauth2_scopes=[], + operation_id="stopAllRefreshes", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return operations.GetTopWatchedContentResponse( - object=unmarshal_json_response( - Optional[operations.GetTopWatchedContentResponseBody], http_res + return operations.StopAllRefreshesResponse( + request_handler_slash_get_responses_200=unmarshal_json_response( + Optional[components.RequestHandlerSlashGetResponses200], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetTopWatchedContentBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTopWatchedContentBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetTopWatchedContentUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTopWatchedContentUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -4136,25 +1844,18 @@ class Library(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - async def get_top_watched_content_async( + async def stop_all_refreshes_async( self, *, - type_: operations.GetTopWatchedContentQueryParamType, - include_guids: Optional[ - operations.GetTopWatchedContentQueryParamIncludeGuids - ] = operations.GetTopWatchedContentQueryParamIncludeGuids.DISABLE, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetTopWatchedContentResponse: - r"""Get Top Watched Content + ) -> operations.StopAllRefreshesResponse: + r"""Stop refresh - This endpoint will return the top watched content from libraries of a certain type + Stop all refreshes across all sections - - :param type: The type of media to retrieve or filter by. 1 = movie 2 = show 3 = season 4 = episode E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - :param include_guids: Adds the Guid object to the response :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -4169,18 +1870,12 @@ class Library(BaseSDK): base_url = server_url else: base_url = self._get_url(base_url, url_variables) - - request = operations.GetTopWatchedContentRequest( - type=type_, - include_guids=include_guids, - ) - req = self._build_request_async( - method="GET", - path="/library/all/top", + method="DELETE", + path="/library/sections/all/refresh", base_url=base_url, url_variables=url_variables, - request=request, + request=None, request_body_required=False, request_has_path_params=False, request_has_query_params=True, @@ -4203,37 +1898,24 @@ class Library(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="getTopWatchedContent", - oauth2_scopes=[], + operation_id="stopAllRefreshes", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return operations.GetTopWatchedContentResponse( - object=unmarshal_json_response( - Optional[operations.GetTopWatchedContentResponseBody], http_res + return operations.StopAllRefreshesResponse( + request_handler_slash_get_responses_200=unmarshal_json_response( + Optional[components.RequestHandlerSlashGetResponses200], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetTopWatchedContentBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTopWatchedContentBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetTopWatchedContentUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTopWatchedContentUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) @@ -4242,3 +1924,14185 @@ class Library(BaseSDK): raise errors.SDKError("API error occurred", http_res, http_res_text) raise errors.SDKError("Unexpected response received", http_res) + + def get_sections_prefs( + self, + *, + request: Union[ + operations.GetSectionsPrefsRequest, + operations.GetSectionsPrefsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSectionsPrefsResponse: + r"""Get section prefs + + Get a section's preferences for a metadata type + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSectionsPrefsRequest) + request = cast(operations.GetSectionsPrefsRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/prefs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetSectionsPrefsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSectionsPrefs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSectionsPrefsResponse( + request_handler_slash_get_responses_200=unmarshal_json_response( + Optional[components.RequestHandlerSlashGetResponses200], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_sections_prefs_async( + self, + *, + request: Union[ + operations.GetSectionsPrefsRequest, + operations.GetSectionsPrefsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSectionsPrefsResponse: + r"""Get section prefs + + Get a section's preferences for a metadata type + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSectionsPrefsRequest) + request = cast(operations.GetSectionsPrefsRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/prefs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetSectionsPrefsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSectionsPrefs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSectionsPrefsResponse( + request_handler_slash_get_responses_200=unmarshal_json_response( + Optional[components.RequestHandlerSlashGetResponses200], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def refresh_sections_metadata( + self, + *, + request: Union[ + operations.RefreshSectionsMetadataRequest, + operations.RefreshSectionsMetadataRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RefreshSectionsMetadataResponse: + r"""Refresh all sections + + Tell PMS to refresh all section metadata + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.RefreshSectionsMetadataRequest + ) + request = cast(operations.RefreshSectionsMetadataRequest, request) + + req = self._build_request( + method="POST", + path="/library/sections/refresh", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.RefreshSectionsMetadataGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="refreshSectionsMetadata", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "503", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.RefreshSectionsMetadataResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["503", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def refresh_sections_metadata_async( + self, + *, + request: Union[ + operations.RefreshSectionsMetadataRequest, + operations.RefreshSectionsMetadataRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RefreshSectionsMetadataResponse: + r"""Refresh all sections + + Tell PMS to refresh all section metadata + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.RefreshSectionsMetadataRequest + ) + request = cast(operations.RefreshSectionsMetadataRequest, request) + + req = self._build_request_async( + method="POST", + path="/library/sections/refresh", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.RefreshSectionsMetadataGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="refreshSectionsMetadata", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "503", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.RefreshSectionsMetadataResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["503", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_tags( + self, + *, + request: Union[operations.GetTagsRequest, operations.GetTagsRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetTagsResponse: + r"""Get all library tags of a type + + Get all library tags of a type + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetTagsRequest) + request = cast(operations.GetTagsRequest, request) + + req = self._build_request( + method="GET", + path="/library/tags", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetTagsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getTags", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetTagsResponse( + object=unmarshal_json_response( + Optional[operations.GetTagsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_tags_async( + self, + *, + request: Union[operations.GetTagsRequest, operations.GetTagsRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetTagsResponse: + r"""Get all library tags of a type + + Get all library tags of a type + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetTagsRequest) + request = cast(operations.GetTagsRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/tags", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetTagsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getTags", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetTagsResponse( + object=unmarshal_json_response( + Optional[operations.GetTagsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_metadata_item( + self, + *, + request: Union[ + operations.DeleteMetadataItemRequest, + operations.DeleteMetadataItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteMetadataItemResponse: + r"""Delete a metadata item + + Delete a single metadata item from the library, deleting media as well + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteMetadataItemRequest) + request = cast(operations.DeleteMetadataItemRequest, request) + + req = self._build_request( + method="DELETE", + path="/library/metadata/{ids}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteMetadataItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteMetadataItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteMetadataItemResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_metadata_item_async( + self, + *, + request: Union[ + operations.DeleteMetadataItemRequest, + operations.DeleteMetadataItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteMetadataItemResponse: + r"""Delete a metadata item + + Delete a single metadata item from the library, deleting media as well + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteMetadataItemRequest) + request = cast(operations.DeleteMetadataItemRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/library/metadata/{ids}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteMetadataItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteMetadataItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteMetadataItemResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def edit_metadata_item( + self, + *, + request: Union[ + operations.EditMetadataItemRequest, + operations.EditMetadataItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.EditMetadataItemResponse: + r"""Edit a metadata item + + Edit metadata items setting fields + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.EditMetadataItemRequest) + request = cast(operations.EditMetadataItemRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.EditMetadataItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="editMetadataItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.EditMetadataItemResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def edit_metadata_item_async( + self, + *, + request: Union[ + operations.EditMetadataItemRequest, + operations.EditMetadataItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.EditMetadataItemResponse: + r"""Edit a metadata item + + Edit metadata items setting fields + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.EditMetadataItemRequest) + request = cast(operations.EditMetadataItemRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.EditMetadataItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="editMetadataItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.EditMetadataItemResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def detect_ads( + self, + *, + request: Union[ + operations.DetectAdsRequest, operations.DetectAdsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DetectAdsResponse: + r"""Ad-detect an item + + Start the detection of ads in a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DetectAdsRequest) + request = cast(operations.DetectAdsRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}/addetect", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DetectAdsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="detectAds", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DetectAdsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def detect_ads_async( + self, + *, + request: Union[ + operations.DetectAdsRequest, operations.DetectAdsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DetectAdsResponse: + r"""Ad-detect an item + + Start the detection of ads in a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DetectAdsRequest) + request = cast(operations.DetectAdsRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}/addetect", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DetectAdsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="detectAds", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DetectAdsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_all_item_leaves( + self, + *, + request: Union[ + operations.GetAllItemLeavesRequest, + operations.GetAllItemLeavesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAllItemLeavesResponse: + r"""Get the leaves of an item + + Get the leaves for a metadata item such as the episodes in a show + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetAllItemLeavesRequest) + request = cast(operations.GetAllItemLeavesRequest, request) + + req = self._build_request( + method="GET", + path="/library/metadata/{ids}/allLeaves", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetAllItemLeavesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAllItemLeaves", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAllItemLeavesResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_all_item_leaves_async( + self, + *, + request: Union[ + operations.GetAllItemLeavesRequest, + operations.GetAllItemLeavesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAllItemLeavesResponse: + r"""Get the leaves of an item + + Get the leaves for a metadata item such as the episodes in a show + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetAllItemLeavesRequest) + request = cast(operations.GetAllItemLeavesRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/metadata/{ids}/allLeaves", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetAllItemLeavesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAllItemLeaves", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAllItemLeavesResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def analyze_metadata( + self, + *, + request: Union[ + operations.AnalyzeMetadataRequest, + operations.AnalyzeMetadataRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AnalyzeMetadataResponse: + r"""Analyze an item + + Start the analysis of a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AnalyzeMetadataRequest) + request = cast(operations.AnalyzeMetadataRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}/analyze", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.AnalyzeMetadataGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="analyzeMetadata", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.AnalyzeMetadataResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def analyze_metadata_async( + self, + *, + request: Union[ + operations.AnalyzeMetadataRequest, + operations.AnalyzeMetadataRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AnalyzeMetadataResponse: + r"""Analyze an item + + Start the analysis of a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AnalyzeMetadataRequest) + request = cast(operations.AnalyzeMetadataRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}/analyze", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.AnalyzeMetadataGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="analyzeMetadata", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.AnalyzeMetadataResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def generate_thumbs( + self, + *, + request: Union[ + operations.GenerateThumbsRequest, operations.GenerateThumbsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GenerateThumbsResponse: + r"""Generate thumbs of chapters for an item + + Start the chapter thumb generation for an item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GenerateThumbsRequest) + request = cast(operations.GenerateThumbsRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}/chapterThumbs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GenerateThumbsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="generateThumbs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GenerateThumbsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def generate_thumbs_async( + self, + *, + request: Union[ + operations.GenerateThumbsRequest, operations.GenerateThumbsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GenerateThumbsResponse: + r"""Generate thumbs of chapters for an item + + Start the chapter thumb generation for an item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GenerateThumbsRequest) + request = cast(operations.GenerateThumbsRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}/chapterThumbs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GenerateThumbsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="generateThumbs", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GenerateThumbsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def detect_credits( + self, + *, + request: Union[ + operations.DetectCreditsRequest, operations.DetectCreditsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DetectCreditsResponse: + r"""Credit detect a metadata item + + Start credit detection on a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DetectCreditsRequest) + request = cast(operations.DetectCreditsRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}/credits", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DetectCreditsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="detectCredits", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DetectCreditsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def detect_credits_async( + self, + *, + request: Union[ + operations.DetectCreditsRequest, operations.DetectCreditsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DetectCreditsResponse: + r"""Credit detect a metadata item + + Start credit detection on a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DetectCreditsRequest) + request = cast(operations.DetectCreditsRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}/credits", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DetectCreditsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="detectCredits", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DetectCreditsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_extras( + self, + *, + request: Union[ + operations.GetExtrasRequest, operations.GetExtrasRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetExtrasResponse: + r"""Get an item's extras + + Get the extras for a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetExtrasRequest) + request = cast(operations.GetExtrasRequest, request) + + req = self._build_request( + method="GET", + path="/library/metadata/{ids}/extras", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetExtrasGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getExtras", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetExtrasResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_extras_async( + self, + *, + request: Union[ + operations.GetExtrasRequest, operations.GetExtrasRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetExtrasResponse: + r"""Get an item's extras + + Get the extras for a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetExtrasRequest) + request = cast(operations.GetExtrasRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/metadata/{ids}/extras", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetExtrasGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getExtras", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetExtrasResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def add_extras( + self, + *, + request: Union[ + operations.AddExtrasRequest, operations.AddExtrasRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddExtrasResponse: + r"""Add to an item's extras + + Add an extra to a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddExtrasRequest) + request = cast(operations.AddExtrasRequest, request) + + req = self._build_request( + method="POST", + path="/library/metadata/{ids}/extras", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.AddExtrasGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addExtras", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.AddExtrasResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def add_extras_async( + self, + *, + request: Union[ + operations.AddExtrasRequest, operations.AddExtrasRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddExtrasResponse: + r"""Add to an item's extras + + Add an extra to a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddExtrasRequest) + request = cast(operations.AddExtrasRequest, request) + + req = self._build_request_async( + method="POST", + path="/library/metadata/{ids}/extras", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.AddExtrasGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addExtras", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.AddExtrasResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_file( + self, + *, + request: Union[operations.GetFileRequest, operations.GetFileRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + accept_header_override: Optional[GetFileAcceptEnum] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetFileResponse: + r"""Get a file from a metadata or media bundle + + Get a bundle file for a metadata or media item. This is either an image or a mp3 (for a show's theme) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param accept_header_override: Override the default accept header for this method + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetFileRequest) + request = cast(operations.GetFileRequest, request) + + req = self._build_request( + method="GET", + path="/library/metadata/{ids}/file", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value=accept_header_override.value + if accept_header_override is not None + else "audio/mpeg3;q=1, image/jpeg;q=0", + http_headers=http_headers, + _globals=operations.GetFileGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getFile", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "audio/mpeg3"): + return operations.GetFileResponse( + two_hundred_audio_mpeg3_response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "200", "image/jpeg"): + return operations.GetFileResponse( + two_hundred_image_jpeg_response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + async def get_file_async( + self, + *, + request: Union[operations.GetFileRequest, operations.GetFileRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + accept_header_override: Optional[GetFileAcceptEnum] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetFileResponse: + r"""Get a file from a metadata or media bundle + + Get a bundle file for a metadata or media item. This is either an image or a mp3 (for a show's theme) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param accept_header_override: Override the default accept header for this method + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetFileRequest) + request = cast(operations.GetFileRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/metadata/{ids}/file", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value=accept_header_override.value + if accept_header_override is not None + else "audio/mpeg3;q=1, image/jpeg;q=0", + http_headers=http_headers, + _globals=operations.GetFileGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getFile", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "audio/mpeg3"): + return operations.GetFileResponse( + two_hundred_audio_mpeg3_response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "200", "image/jpeg"): + return operations.GetFileResponse( + two_hundred_image_jpeg_response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + def start_bif_generation( + self, + *, + request: Union[ + operations.StartBifGenerationRequest, + operations.StartBifGenerationRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.StartBifGenerationResponse: + r"""Start BIF generation of an item + + Start the indexing (BIF generation) of an item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.StartBifGenerationRequest) + request = cast(operations.StartBifGenerationRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}/index", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.StartBifGenerationGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="startBifGeneration", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.StartBifGenerationResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def start_bif_generation_async( + self, + *, + request: Union[ + operations.StartBifGenerationRequest, + operations.StartBifGenerationRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.StartBifGenerationResponse: + r"""Start BIF generation of an item + + Start the indexing (BIF generation) of an item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.StartBifGenerationRequest) + request = cast(operations.StartBifGenerationRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}/index", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.StartBifGenerationGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="startBifGeneration", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.StartBifGenerationResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def detect_intros( + self, + *, + request: Union[ + operations.DetectIntrosRequest, operations.DetectIntrosRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DetectIntrosResponse: + r"""Intro detect an item + + Start the detection of intros in a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DetectIntrosRequest) + request = cast(operations.DetectIntrosRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}/intro", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DetectIntrosGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="detectIntros", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DetectIntrosResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def detect_intros_async( + self, + *, + request: Union[ + operations.DetectIntrosRequest, operations.DetectIntrosRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DetectIntrosResponse: + r"""Intro detect an item + + Start the detection of intros in a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DetectIntrosRequest) + request = cast(operations.DetectIntrosRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}/intro", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DetectIntrosGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="detectIntros", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DetectIntrosResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def create_marker( + self, + *, + request: Union[ + operations.CreateMarkerRequest, operations.CreateMarkerRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CreateMarkerResponse: + r"""Create a marker + + Create a marker for this user on the metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CreateMarkerRequest) + request = cast(operations.CreateMarkerRequest, request) + + req = self._build_request( + method="POST", + path="/library/metadata/{ids}/marker", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.CreateMarkerGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="createMarker", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.CreateMarkerResponse( + object=unmarshal_json_response( + Optional[operations.CreateMarkerResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def create_marker_async( + self, + *, + request: Union[ + operations.CreateMarkerRequest, operations.CreateMarkerRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CreateMarkerResponse: + r"""Create a marker + + Create a marker for this user on the metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CreateMarkerRequest) + request = cast(operations.CreateMarkerRequest, request) + + req = self._build_request_async( + method="POST", + path="/library/metadata/{ids}/marker", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.CreateMarkerGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="createMarker", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.CreateMarkerResponse( + object=unmarshal_json_response( + Optional[operations.CreateMarkerResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def match_item( + self, + *, + request: Union[ + operations.MatchItemRequest, operations.MatchItemRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.MatchItemResponse: + r"""Match a metadata item + + Match a metadata item to a guid + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.MatchItemRequest) + request = cast(operations.MatchItemRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}/match", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.MatchItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="matchItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.MatchItemResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def match_item_async( + self, + *, + request: Union[ + operations.MatchItemRequest, operations.MatchItemRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.MatchItemResponse: + r"""Match a metadata item + + Match a metadata item to a guid + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.MatchItemRequest) + request = cast(operations.MatchItemRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}/match", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.MatchItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="matchItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.MatchItemResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def list_matches( + self, + *, + request: Union[ + operations.ListMatchesRequest, operations.ListMatchesRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListMatchesResponse: + r"""Get metadata matches for an item + + Get the list of metadata matches for a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListMatchesRequest) + request = cast(operations.ListMatchesRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}/matches", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListMatchesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listMatches", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListMatchesResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def list_matches_async( + self, + *, + request: Union[ + operations.ListMatchesRequest, operations.ListMatchesRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListMatchesResponse: + r"""Get metadata matches for an item + + Get the list of metadata matches for a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListMatchesRequest) + request = cast(operations.ListMatchesRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}/matches", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListMatchesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listMatches", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListMatchesResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def merge_items( + self, + *, + request: Union[ + operations.MergeItemsRequest, operations.MergeItemsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.MergeItemsResponse: + r"""Merge a metadata item + + Merge a metadata item with other items + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.MergeItemsRequest) + request = cast(operations.MergeItemsRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}/merge", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.MergeItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="mergeItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.MergeItemsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def merge_items_async( + self, + *, + request: Union[ + operations.MergeItemsRequest, operations.MergeItemsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.MergeItemsResponse: + r"""Merge a metadata item + + Merge a metadata item with other items + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.MergeItemsRequest) + request = cast(operations.MergeItemsRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}/merge", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.MergeItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="mergeItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.MergeItemsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def list_sonically_similar( + self, + *, + request: Union[ + operations.ListSonicallySimilarRequest, + operations.ListSonicallySimilarRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListSonicallySimilarResponse: + r"""Get nearest tracks to metadata item + + Get the nearest tracks, sonically, to the provided track + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListSonicallySimilarRequest) + request = cast(operations.ListSonicallySimilarRequest, request) + + req = self._build_request( + method="GET", + path="/library/metadata/{ids}/nearest", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListSonicallySimilarGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listSonicallySimilar", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListSonicallySimilarResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def list_sonically_similar_async( + self, + *, + request: Union[ + operations.ListSonicallySimilarRequest, + operations.ListSonicallySimilarRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListSonicallySimilarResponse: + r"""Get nearest tracks to metadata item + + Get the nearest tracks, sonically, to the provided track + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListSonicallySimilarRequest) + request = cast(operations.ListSonicallySimilarRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/metadata/{ids}/nearest", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListSonicallySimilarGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listSonicallySimilar", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListSonicallySimilarResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def set_item_preferences( + self, + *, + request: Union[ + operations.SetItemPreferencesRequest, + operations.SetItemPreferencesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetItemPreferencesResponse: + r"""Set metadata preferences + + Set the preferences on a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetItemPreferencesRequest) + request = cast(operations.SetItemPreferencesRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}/prefs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SetItemPreferencesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setItemPreferences", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SetItemPreferencesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def set_item_preferences_async( + self, + *, + request: Union[ + operations.SetItemPreferencesRequest, + operations.SetItemPreferencesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetItemPreferencesResponse: + r"""Set metadata preferences + + Set the preferences on a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetItemPreferencesRequest) + request = cast(operations.SetItemPreferencesRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}/prefs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SetItemPreferencesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setItemPreferences", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SetItemPreferencesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def refresh_items_metadata( + self, + *, + request: Union[ + operations.RefreshItemsMetadataRequest, + operations.RefreshItemsMetadataRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RefreshItemsMetadataResponse: + r"""Refresh a metadata item + + Refresh a metadata item from the agent + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.RefreshItemsMetadataRequest) + request = cast(operations.RefreshItemsMetadataRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}/refresh", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.RefreshItemsMetadataGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="refreshItemsMetadata", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.RefreshItemsMetadataResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def refresh_items_metadata_async( + self, + *, + request: Union[ + operations.RefreshItemsMetadataRequest, + operations.RefreshItemsMetadataRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RefreshItemsMetadataResponse: + r"""Refresh a metadata item + + Refresh a metadata item from the agent + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.RefreshItemsMetadataRequest) + request = cast(operations.RefreshItemsMetadataRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}/refresh", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.RefreshItemsMetadataGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="refreshItemsMetadata", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.RefreshItemsMetadataResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_related_items( + self, + *, + request: Union[ + operations.GetRelatedItemsRequest, + operations.GetRelatedItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetRelatedItemsResponse: + r"""Get related items + + Get a hub of related items to a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetRelatedItemsRequest) + request = cast(operations.GetRelatedItemsRequest, request) + + req = self._build_request( + method="GET", + path="/library/metadata/{ids}/related", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetRelatedItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getRelatedItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetRelatedItemsResponse( + object=unmarshal_json_response( + Optional[operations.GetRelatedItemsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_related_items_async( + self, + *, + request: Union[ + operations.GetRelatedItemsRequest, + operations.GetRelatedItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetRelatedItemsResponse: + r"""Get related items + + Get a hub of related items to a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetRelatedItemsRequest) + request = cast(operations.GetRelatedItemsRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/metadata/{ids}/related", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetRelatedItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getRelatedItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetRelatedItemsResponse( + object=unmarshal_json_response( + Optional[operations.GetRelatedItemsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def list_similar( + self, + *, + request: Union[ + operations.ListSimilarRequest, operations.ListSimilarRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListSimilarResponse: + r"""Get similar items + + Get a list of similar items to a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListSimilarRequest) + request = cast(operations.ListSimilarRequest, request) + + req = self._build_request( + method="GET", + path="/library/metadata/{ids}/similar", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListSimilarGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listSimilar", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListSimilarResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def list_similar_async( + self, + *, + request: Union[ + operations.ListSimilarRequest, operations.ListSimilarRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListSimilarResponse: + r"""Get similar items + + Get a list of similar items to a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListSimilarRequest) + request = cast(operations.ListSimilarRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/metadata/{ids}/similar", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListSimilarGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listSimilar", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListSimilarResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def split_item( + self, + *, + request: Union[ + operations.SplitItemRequest, operations.SplitItemRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SplitItemResponse: + r"""Split a metadata item + + Split a metadata item into multiple items + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SplitItemRequest) + request = cast(operations.SplitItemRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}/split", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SplitItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="splitItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SplitItemResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def split_item_async( + self, + *, + request: Union[ + operations.SplitItemRequest, operations.SplitItemRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SplitItemResponse: + r"""Split a metadata item + + Split a metadata item into multiple items + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SplitItemRequest) + request = cast(operations.SplitItemRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}/split", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SplitItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="splitItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SplitItemResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def add_subtitles( + self, + *, + request: Union[ + operations.AddSubtitlesRequest, operations.AddSubtitlesRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddSubtitlesResponse: + r"""Add subtitles + + Add a subtitle to a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddSubtitlesRequest) + request = cast(operations.AddSubtitlesRequest, request) + + req = self._build_request( + method="GET", + path="/library/metadata/{ids}/subtitles", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.AddSubtitlesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addSubtitles", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.AddSubtitlesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def add_subtitles_async( + self, + *, + request: Union[ + operations.AddSubtitlesRequest, operations.AddSubtitlesRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddSubtitlesResponse: + r"""Add subtitles + + Add a subtitle to a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddSubtitlesRequest) + request = cast(operations.AddSubtitlesRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/metadata/{ids}/subtitles", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.AddSubtitlesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addSubtitles", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.AddSubtitlesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_item_tree( + self, + *, + request: Union[ + operations.GetItemTreeRequest, operations.GetItemTreeRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetItemTreeResponse: + r"""Get metadata items as a tree + + Get a tree of metadata items, such as the seasons/episodes of a show + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetItemTreeRequest) + request = cast(operations.GetItemTreeRequest, request) + + req = self._build_request( + method="GET", + path="/library/metadata/{ids}/tree", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetItemTreeGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getItemTree", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetItemTreeResponse( + media_container_with_nested_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithNestedMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_item_tree_async( + self, + *, + request: Union[ + operations.GetItemTreeRequest, operations.GetItemTreeRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetItemTreeResponse: + r"""Get metadata items as a tree + + Get a tree of metadata items, such as the seasons/episodes of a show + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetItemTreeRequest) + request = cast(operations.GetItemTreeRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/metadata/{ids}/tree", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetItemTreeGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getItemTree", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetItemTreeResponse( + media_container_with_nested_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithNestedMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def unmatch( + self, + *, + request: Union[operations.UnmatchRequest, operations.UnmatchRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.UnmatchResponse: + r"""Unmatch a metadata item + + Unmatch a metadata item to info fetched from the agent + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UnmatchRequest) + request = cast(operations.UnmatchRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}/unmatch", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.UnmatchGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="unmatch", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.UnmatchResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def unmatch_async( + self, + *, + request: Union[operations.UnmatchRequest, operations.UnmatchRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.UnmatchResponse: + r"""Unmatch a metadata item + + Unmatch a metadata item to info fetched from the agent + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UnmatchRequest) + request = cast(operations.UnmatchRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}/unmatch", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.UnmatchGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="unmatch", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.UnmatchResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def list_top_users( + self, + *, + request: Union[ + operations.ListTopUsersRequest, operations.ListTopUsersRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListTopUsersResponse: + r"""Get metadata top users + + Get the list of users which have played this item starting with the most + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListTopUsersRequest) + request = cast(operations.ListTopUsersRequest, request) + + req = self._build_request( + method="GET", + path="/library/metadata/{ids}/users/top", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListTopUsersGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listTopUsers", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListTopUsersResponse( + object=unmarshal_json_response( + Optional[operations.ListTopUsersResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def list_top_users_async( + self, + *, + request: Union[ + operations.ListTopUsersRequest, operations.ListTopUsersRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListTopUsersResponse: + r"""Get metadata top users + + Get the list of users which have played this item starting with the most + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListTopUsersRequest) + request = cast(operations.ListTopUsersRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/metadata/{ids}/users/top", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListTopUsersGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listTopUsers", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListTopUsersResponse( + object=unmarshal_json_response( + Optional[operations.ListTopUsersResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def detect_voice_activity( + self, + *, + request: Union[ + operations.DetectVoiceActivityRequest, + operations.DetectVoiceActivityRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DetectVoiceActivityResponse: + r"""Detect voice activity + + Start the detection of voice in a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DetectVoiceActivityRequest) + request = cast(operations.DetectVoiceActivityRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}/voiceActivity", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DetectVoiceActivityGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="detectVoiceActivity", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DetectVoiceActivityResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def detect_voice_activity_async( + self, + *, + request: Union[ + operations.DetectVoiceActivityRequest, + operations.DetectVoiceActivityRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DetectVoiceActivityResponse: + r"""Detect voice activity + + Start the detection of voice in a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DetectVoiceActivityRequest) + request = cast(operations.DetectVoiceActivityRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}/voiceActivity", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DetectVoiceActivityGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="detectVoiceActivity", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DetectVoiceActivityResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_augmentation_status( + self, + *, + request: Union[ + operations.GetAugmentationStatusRequest, + operations.GetAugmentationStatusRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAugmentationStatusResponse: + r"""Get augmentation status + + Get augmentation status and potentially wait for completion + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetAugmentationStatusRequest) + request = cast(operations.GetAugmentationStatusRequest, request) + + req = self._build_request( + method="GET", + path="/library/metadata/augmentations/{augmentationId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetAugmentationStatusGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAugmentationStatus", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["401", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "204", "*"): + return operations.GetAugmentationStatusResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["401", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_augmentation_status_async( + self, + *, + request: Union[ + operations.GetAugmentationStatusRequest, + operations.GetAugmentationStatusRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAugmentationStatusResponse: + r"""Get augmentation status + + Get augmentation status and potentially wait for completion + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetAugmentationStatusRequest) + request = cast(operations.GetAugmentationStatusRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/metadata/augmentations/{augmentationId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetAugmentationStatusGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAugmentationStatus", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["401", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "204", "*"): + return operations.GetAugmentationStatusResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["401", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def set_stream_selection( + self, + *, + request: Union[ + operations.SetStreamSelectionRequest, + operations.SetStreamSelectionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetStreamSelectionResponse: + r"""Set stream selection + + Set which streams (audio/subtitle) are selected by this user + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetStreamSelectionRequest) + request = cast(operations.SetStreamSelectionRequest, request) + + req = self._build_request( + method="PUT", + path="/library/parts/{partId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SetStreamSelectionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setStreamSelection", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SetStreamSelectionResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def set_stream_selection_async( + self, + *, + request: Union[ + operations.SetStreamSelectionRequest, + operations.SetStreamSelectionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetStreamSelectionResponse: + r"""Set stream selection + + Set which streams (audio/subtitle) are selected by this user + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetStreamSelectionRequest) + request = cast(operations.SetStreamSelectionRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/parts/{partId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SetStreamSelectionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setStreamSelection", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SetStreamSelectionResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_person( + self, + *, + request: Union[ + operations.GetPersonRequest, operations.GetPersonRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPersonResponse: + r"""Get person details + + Get details for a single actor. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPersonRequest) + request = cast(operations.GetPersonRequest, request) + + req = self._build_request( + method="GET", + path="/library/people/{personId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPersonGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPerson", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPersonResponse( + object=unmarshal_json_response( + Optional[operations.GetPersonResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_person_async( + self, + *, + request: Union[ + operations.GetPersonRequest, operations.GetPersonRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPersonResponse: + r"""Get person details + + Get details for a single actor. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPersonRequest) + request = cast(operations.GetPersonRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/people/{personId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPersonGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPerson", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPersonResponse( + object=unmarshal_json_response( + Optional[operations.GetPersonResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def list_person_media( + self, + *, + request: Union[ + operations.ListPersonMediaRequest, + operations.ListPersonMediaRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListPersonMediaResponse: + r"""Get media for a person + + Get all the media for a single actor. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListPersonMediaRequest) + request = cast(operations.ListPersonMediaRequest, request) + + req = self._build_request( + method="GET", + path="/library/people/{personId}/media", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListPersonMediaGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listPersonMedia", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListPersonMediaResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def list_person_media_async( + self, + *, + request: Union[ + operations.ListPersonMediaRequest, + operations.ListPersonMediaRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListPersonMediaResponse: + r"""Get media for a person + + Get all the media for a single actor. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListPersonMediaRequest) + request = cast(operations.ListPersonMediaRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/people/{personId}/media", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListPersonMediaGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listPersonMedia", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListPersonMediaResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_library_section( + self, + *, + request: Union[ + operations.DeleteLibrarySectionRequest, + operations.DeleteLibrarySectionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteLibrarySectionResponse: + r"""Delete a library section + + Delete a library section by id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteLibrarySectionRequest) + request = cast(operations.DeleteLibrarySectionRequest, request) + + req = self._build_request( + method="DELETE", + path="/library/sections/{sectionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteLibrarySectionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteLibrarySection", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteLibrarySectionResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_library_section_async( + self, + *, + request: Union[ + operations.DeleteLibrarySectionRequest, + operations.DeleteLibrarySectionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteLibrarySectionResponse: + r"""Delete a library section + + Delete a library section by id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteLibrarySectionRequest) + request = cast(operations.DeleteLibrarySectionRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/library/sections/{sectionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteLibrarySectionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteLibrarySection", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteLibrarySectionResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_library_details( + self, + *, + request: Union[ + operations.GetLibraryDetailsRequest, + operations.GetLibraryDetailsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetLibraryDetailsResponse: + r"""Get a library section by id + + Returns details for the library. This can be thought of as an interstitial endpoint because it contains information about the library, rather than content itself. It often contains a list of `Directory` metadata objects: These used to be used by clients to build a menuing system. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetLibraryDetailsRequest) + request = cast(operations.GetLibraryDetailsRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetLibraryDetailsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getLibraryDetails", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetLibraryDetailsResponse( + object=unmarshal_json_response( + Optional[operations.GetLibraryDetailsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_library_details_async( + self, + *, + request: Union[ + operations.GetLibraryDetailsRequest, + operations.GetLibraryDetailsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetLibraryDetailsResponse: + r"""Get a library section by id + + Returns details for the library. This can be thought of as an interstitial endpoint because it contains information about the library, rather than content itself. It often contains a list of `Directory` metadata objects: These used to be used by clients to build a menuing system. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetLibraryDetailsRequest) + request = cast(operations.GetLibraryDetailsRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetLibraryDetailsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getLibraryDetails", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetLibraryDetailsResponse( + object=unmarshal_json_response( + Optional[operations.GetLibraryDetailsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def edit_section( + self, + *, + request: Union[ + operations.EditSectionRequest, operations.EditSectionRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.EditSectionResponse: + r"""Edit a library section + + Edit a library section by id setting parameters + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.EditSectionRequest) + request = cast(operations.EditSectionRequest, request) + + req = self._build_request( + method="PUT", + path="/library/sections/{sectionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.EditSectionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="editSection", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.EditSectionResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def edit_section_async( + self, + *, + request: Union[ + operations.EditSectionRequest, operations.EditSectionRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.EditSectionResponse: + r"""Edit a library section + + Edit a library section by id setting parameters + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.EditSectionRequest) + request = cast(operations.EditSectionRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/sections/{sectionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.EditSectionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="editSection", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.EditSectionResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def update_items( + self, + *, + request: Union[ + operations.UpdateItemsRequest, operations.UpdateItemsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.UpdateItemsResponse: + r"""Set the fields of the filtered items + + This endpoint takes an large possible set of values. Here are some examples. + - **Parameters, extra documentation** + - artist.title.value + - When used with track, both artist.title.value and album.title.value need to be specified + - title.value usage + - Summary + - Tracks always rename and never merge + - Albums and Artists + - if single item and item without title does not exist, it is renamed. + - if single item and item with title does exist they are merged. + - if multiple they are always merged. + - Tracks + - Works as expected will update the track's title + - Single track: `/library/sections/{id}/all?type=10&id=42&title.value=NewName` + - Multiple tracks: `/library/sections/{id}/all?type=10&id=42,43,44&title.value=NewName` + - All tracks: `/library/sections/{id}/all?type=10&title.value=NewName` + - Albums + - Functionality changes depending on the existence of an album with the same title + - Album exists + - Single album: `/library/sections/{id}/all?type=9&id=42&title.value=Album 2` + - Album with id 42 is merged into album titled \"Album 2\" + - Multiple/All albums: `/library/sections/{id}/all?type=9&title.value=Moo Album` + - All albums are merged into the existing album titled \"Moo Album\" + - Album does not exist + - Single album: `/library/sections/{id}/all?type=9&id=42&title.value=NewAlbumTitle` + - Album with id 42 has title modified to \"NewAlbumTitle\" + - Multiple/All albums: `/library/sections/{id}/all?type=9&title.value=NewAlbumTitle` + - All albums are merged into a new album with title=\"NewAlbumTitle\" + - Artists + - Functionaly changes depending on the existence of an artist with the same title. + - Artist exists + - Single artist: `/library/sections/{id}/all?type=8&id=42&title.value=Artist 2` + - Artist with id 42 is merged into existing artist titled \"Artist 2\" + - Multiple/All artists: `/library/sections/{id}/all?type=8&title.value=Artist 3` + - All artists are merged into the existing artist titled \"Artist 3\" + - Artist does not exist + - Single artist: `/library/sections/{id}/all?type=8&id=42&title.value=NewArtistTitle` + - Artist with id 42 has title modified to \"NewArtistTitle\" + - Multiple/All artists: `/library/sections/{id}/all?type=8&title.value=NewArtistTitle` + - All artists are merged into a new artist with title=\"NewArtistTitle\" + + - **Notes** + - Technically square brackets are not allowed in an URI except the Internet Protocol Literal Address + - RFC3513: A host identified by an Internet Protocol literal address, version 6 [RFC3513] or later, is distinguished by enclosing the IP literal within square brackets (\"[\" and \"]\"). This is the only place where square bracket characters are allowed in the URI syntax. + - Escaped square brackets are allowed, but don't render well + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UpdateItemsRequest) + request = cast(operations.UpdateItemsRequest, request) + + req = self._build_request( + method="PUT", + path="/library/sections/{sectionId}/all", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.UpdateItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="updateItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "409", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.UpdateItemsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "409", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def update_items_async( + self, + *, + request: Union[ + operations.UpdateItemsRequest, operations.UpdateItemsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.UpdateItemsResponse: + r"""Set the fields of the filtered items + + This endpoint takes an large possible set of values. Here are some examples. + - **Parameters, extra documentation** + - artist.title.value + - When used with track, both artist.title.value and album.title.value need to be specified + - title.value usage + - Summary + - Tracks always rename and never merge + - Albums and Artists + - if single item and item without title does not exist, it is renamed. + - if single item and item with title does exist they are merged. + - if multiple they are always merged. + - Tracks + - Works as expected will update the track's title + - Single track: `/library/sections/{id}/all?type=10&id=42&title.value=NewName` + - Multiple tracks: `/library/sections/{id}/all?type=10&id=42,43,44&title.value=NewName` + - All tracks: `/library/sections/{id}/all?type=10&title.value=NewName` + - Albums + - Functionality changes depending on the existence of an album with the same title + - Album exists + - Single album: `/library/sections/{id}/all?type=9&id=42&title.value=Album 2` + - Album with id 42 is merged into album titled \"Album 2\" + - Multiple/All albums: `/library/sections/{id}/all?type=9&title.value=Moo Album` + - All albums are merged into the existing album titled \"Moo Album\" + - Album does not exist + - Single album: `/library/sections/{id}/all?type=9&id=42&title.value=NewAlbumTitle` + - Album with id 42 has title modified to \"NewAlbumTitle\" + - Multiple/All albums: `/library/sections/{id}/all?type=9&title.value=NewAlbumTitle` + - All albums are merged into a new album with title=\"NewAlbumTitle\" + - Artists + - Functionaly changes depending on the existence of an artist with the same title. + - Artist exists + - Single artist: `/library/sections/{id}/all?type=8&id=42&title.value=Artist 2` + - Artist with id 42 is merged into existing artist titled \"Artist 2\" + - Multiple/All artists: `/library/sections/{id}/all?type=8&title.value=Artist 3` + - All artists are merged into the existing artist titled \"Artist 3\" + - Artist does not exist + - Single artist: `/library/sections/{id}/all?type=8&id=42&title.value=NewArtistTitle` + - Artist with id 42 has title modified to \"NewArtistTitle\" + - Multiple/All artists: `/library/sections/{id}/all?type=8&title.value=NewArtistTitle` + - All artists are merged into a new artist with title=\"NewArtistTitle\" + + - **Notes** + - Technically square brackets are not allowed in an URI except the Internet Protocol Literal Address + - RFC3513: A host identified by an Internet Protocol literal address, version 6 [RFC3513] or later, is distinguished by enclosing the IP literal within square brackets (\"[\" and \"]\"). This is the only place where square bracket characters are allowed in the URI syntax. + - Escaped square brackets are allowed, but don't render well + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UpdateItemsRequest) + request = cast(operations.UpdateItemsRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/sections/{sectionId}/all", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.UpdateItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="updateItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "409", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.UpdateItemsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "409", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def start_analysis( + self, + *, + request: Union[ + operations.StartAnalysisRequest, operations.StartAnalysisRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.StartAnalysisResponse: + r"""Analyze a section + + Start analysis of all items in a section. If BIF generation is enabled, this will also be started on this section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.StartAnalysisRequest) + request = cast(operations.StartAnalysisRequest, request) + + req = self._build_request( + method="PUT", + path="/library/sections/{sectionId}/analyze", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.StartAnalysisGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="startAnalysis", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.StartAnalysisResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def start_analysis_async( + self, + *, + request: Union[ + operations.StartAnalysisRequest, operations.StartAnalysisRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.StartAnalysisResponse: + r"""Analyze a section + + Start analysis of all items in a section. If BIF generation is enabled, this will also be started on this section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.StartAnalysisRequest) + request = cast(operations.StartAnalysisRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/sections/{sectionId}/analyze", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.StartAnalysisGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="startAnalysis", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.StartAnalysisResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def autocomplete( + self, + *, + request: Union[ + operations.AutocompleteRequest, operations.AutocompleteRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AutocompleteResponse: + r"""Get autocompletions for search + + The field to autocomplete on is specified by the {field}.query parameter. For example `genre.query` or `title.query`. + Returns a set of items from the filtered items whose {field} starts with {field}.query. In the results, a {field}.queryRange will be present to express the range of the match + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AutocompleteRequest) + request = cast(operations.AutocompleteRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/autocomplete", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.AutocompleteGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="autocomplete", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.AutocompleteResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def autocomplete_async( + self, + *, + request: Union[ + operations.AutocompleteRequest, operations.AutocompleteRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AutocompleteResponse: + r"""Get autocompletions for search + + The field to autocomplete on is specified by the {field}.query parameter. For example `genre.query` or `title.query`. + Returns a set of items from the filtered items whose {field} starts with {field}.query. In the results, a {field}.queryRange will be present to express the range of the match + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AutocompleteRequest) + request = cast(operations.AutocompleteRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/autocomplete", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.AutocompleteGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="autocomplete", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.AutocompleteResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_collections( + self, + *, + request: Union[ + operations.GetCollectionsRequest, operations.GetCollectionsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetCollectionsResponse: + r"""Get collections in a section + + Get all collections in a section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetCollectionsRequest) + request = cast(operations.GetCollectionsRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/collections", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetCollectionsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCollections", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetCollectionsResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_collections_async( + self, + *, + request: Union[ + operations.GetCollectionsRequest, operations.GetCollectionsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetCollectionsResponse: + r"""Get collections in a section + + Get all collections in a section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetCollectionsRequest) + request = cast(operations.GetCollectionsRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/collections", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetCollectionsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCollections", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetCollectionsResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_common( + self, + *, + request: Union[ + operations.GetCommonRequest, operations.GetCommonRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetCommonResponse: + r"""Get common fields for items + + Represents a \"Common\" item. It contains only the common attributes of the items selected by the provided filter + Fields which are not common will be expressed in the `mixedFields` field + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetCommonRequest) + request = cast(operations.GetCommonRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/common", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetCommonGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCommon", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetCommonResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_common_async( + self, + *, + request: Union[ + operations.GetCommonRequest, operations.GetCommonRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetCommonResponse: + r"""Get common fields for items + + Represents a \"Common\" item. It contains only the common attributes of the items selected by the provided filter + Fields which are not common will be expressed in the `mixedFields` field + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetCommonRequest) + request = cast(operations.GetCommonRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/common", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetCommonGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getCommon", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetCommonResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def empty_trash( + self, + *, + request: Union[ + operations.EmptyTrashRequest, operations.EmptyTrashRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.EmptyTrashResponse: + r"""Empty section trash + + Empty trash in the section, permanently deleting media/metadata for missing media + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.EmptyTrashRequest) + request = cast(operations.EmptyTrashRequest, request) + + req = self._build_request( + method="PUT", + path="/library/sections/{sectionId}/emptyTrash", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.EmptyTrashGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="emptyTrash", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.EmptyTrashResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def empty_trash_async( + self, + *, + request: Union[ + operations.EmptyTrashRequest, operations.EmptyTrashRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.EmptyTrashResponse: + r"""Empty section trash + + Empty trash in the section, permanently deleting media/metadata for missing media + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.EmptyTrashRequest) + request = cast(operations.EmptyTrashRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/sections/{sectionId}/emptyTrash", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.EmptyTrashGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="emptyTrash", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.EmptyTrashResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_section_filters( + self, + *, + request: Union[ + operations.GetSectionFiltersRequest, + operations.GetSectionFiltersRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSectionFiltersResponse: + r"""Get section filters + + Get common filters on a section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSectionFiltersRequest) + request = cast(operations.GetSectionFiltersRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/filters", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetSectionFiltersGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSectionFilters", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSectionFiltersResponse( + object=unmarshal_json_response( + Optional[operations.GetSectionFiltersResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_section_filters_async( + self, + *, + request: Union[ + operations.GetSectionFiltersRequest, + operations.GetSectionFiltersRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSectionFiltersResponse: + r"""Get section filters + + Get common filters on a section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSectionFiltersRequest) + request = cast(operations.GetSectionFiltersRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/filters", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetSectionFiltersGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSectionFilters", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSectionFiltersResponse( + object=unmarshal_json_response( + Optional[operations.GetSectionFiltersResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_first_characters( + self, + *, + request: Union[ + operations.GetFirstCharactersRequest, + operations.GetFirstCharactersRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetFirstCharactersResponse: + r"""Get list of first characters + + Get list of first characters in this section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetFirstCharactersRequest) + request = cast(operations.GetFirstCharactersRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/firstCharacters", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetFirstCharactersGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getFirstCharacters", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetFirstCharactersResponse( + object=unmarshal_json_response( + Optional[operations.GetFirstCharactersResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_first_characters_async( + self, + *, + request: Union[ + operations.GetFirstCharactersRequest, + operations.GetFirstCharactersRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetFirstCharactersResponse: + r"""Get list of first characters + + Get list of first characters in this section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetFirstCharactersRequest) + request = cast(operations.GetFirstCharactersRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/firstCharacters", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetFirstCharactersGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getFirstCharacters", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetFirstCharactersResponse( + object=unmarshal_json_response( + Optional[operations.GetFirstCharactersResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_indexes( + self, + *, + request: Union[ + operations.DeleteIndexesRequest, operations.DeleteIndexesRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteIndexesResponse: + r"""Delete section indexes + + Delete all the indexes in a section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteIndexesRequest) + request = cast(operations.DeleteIndexesRequest, request) + + req = self._build_request( + method="DELETE", + path="/library/sections/{sectionId}/indexes", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteIndexesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteIndexes", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteIndexesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_indexes_async( + self, + *, + request: Union[ + operations.DeleteIndexesRequest, operations.DeleteIndexesRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteIndexesResponse: + r"""Delete section indexes + + Delete all the indexes in a section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteIndexesRequest) + request = cast(operations.DeleteIndexesRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/library/sections/{sectionId}/indexes", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteIndexesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteIndexes", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteIndexesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_intros( + self, + *, + request: Union[ + operations.DeleteIntrosRequest, operations.DeleteIntrosRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteIntrosResponse: + r"""Delete section intro markers + + Delete all the intro markers in a section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteIntrosRequest) + request = cast(operations.DeleteIntrosRequest, request) + + req = self._build_request( + method="DELETE", + path="/library/sections/{sectionId}/intros", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteIntrosGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteIntros", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteIntrosResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_intros_async( + self, + *, + request: Union[ + operations.DeleteIntrosRequest, operations.DeleteIntrosRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteIntrosResponse: + r"""Delete section intro markers + + Delete all the intro markers in a section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteIntrosRequest) + request = cast(operations.DeleteIntrosRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/library/sections/{sectionId}/intros", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteIntrosGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteIntros", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteIntrosResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_section_preferences( + self, + *, + request: Union[ + operations.GetSectionPreferencesRequest, + operations.GetSectionPreferencesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSectionPreferencesResponse: + r"""Get section prefs + + Get the prefs for a section by id and potentially overriding the agent + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSectionPreferencesRequest) + request = cast(operations.GetSectionPreferencesRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/prefs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetSectionPreferencesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSectionPreferences", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSectionPreferencesResponse( + media_container_with_settings=unmarshal_json_response( + Optional[components.MediaContainerWithSettings], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_section_preferences_async( + self, + *, + request: Union[ + operations.GetSectionPreferencesRequest, + operations.GetSectionPreferencesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSectionPreferencesResponse: + r"""Get section prefs + + Get the prefs for a section by id and potentially overriding the agent + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSectionPreferencesRequest) + request = cast(operations.GetSectionPreferencesRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/prefs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetSectionPreferencesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSectionPreferences", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSectionPreferencesResponse( + media_container_with_settings=unmarshal_json_response( + Optional[components.MediaContainerWithSettings], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def set_section_preferences( + self, + *, + request: Union[ + operations.SetSectionPreferencesRequest, + operations.SetSectionPreferencesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetSectionPreferencesResponse: + r"""Set section prefs + + Set the prefs for a section by id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetSectionPreferencesRequest) + request = cast(operations.SetSectionPreferencesRequest, request) + + req = self._build_request( + method="PUT", + path="/library/sections/{sectionId}/prefs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SetSectionPreferencesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setSectionPreferences", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SetSectionPreferencesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def set_section_preferences_async( + self, + *, + request: Union[ + operations.SetSectionPreferencesRequest, + operations.SetSectionPreferencesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetSectionPreferencesResponse: + r"""Set section prefs + + Set the prefs for a section by id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetSectionPreferencesRequest) + request = cast(operations.SetSectionPreferencesRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/sections/{sectionId}/prefs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SetSectionPreferencesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setSectionPreferences", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SetSectionPreferencesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def cancel_refresh( + self, + *, + request: Union[ + operations.CancelRefreshRequest, operations.CancelRefreshRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CancelRefreshResponse: + r"""Cancel section refresh + + Cancel the refresh of a section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CancelRefreshRequest) + request = cast(operations.CancelRefreshRequest, request) + + req = self._build_request( + method="DELETE", + path="/library/sections/{sectionId}/refresh", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.CancelRefreshGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="cancelRefresh", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.CancelRefreshResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def cancel_refresh_async( + self, + *, + request: Union[ + operations.CancelRefreshRequest, operations.CancelRefreshRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CancelRefreshResponse: + r"""Cancel section refresh + + Cancel the refresh of a section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CancelRefreshRequest) + request = cast(operations.CancelRefreshRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/library/sections/{sectionId}/refresh", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.CancelRefreshGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="cancelRefresh", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.CancelRefreshResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def refresh_section( + self, + *, + request: Union[ + operations.RefreshSectionRequest, operations.RefreshSectionRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RefreshSectionResponse: + r"""Refresh section + + Start a refresh of this section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.RefreshSectionRequest) + request = cast(operations.RefreshSectionRequest, request) + + req = self._build_request( + method="POST", + path="/library/sections/{sectionId}/refresh", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.RefreshSectionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="refreshSection", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.RefreshSectionResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def refresh_section_async( + self, + *, + request: Union[ + operations.RefreshSectionRequest, operations.RefreshSectionRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RefreshSectionResponse: + r"""Refresh section + + Start a refresh of this section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.RefreshSectionRequest) + request = cast(operations.RefreshSectionRequest, request) + + req = self._build_request_async( + method="POST", + path="/library/sections/{sectionId}/refresh", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.RefreshSectionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="refreshSection", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.RefreshSectionResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_available_sorts( + self, + *, + request: Union[ + operations.GetAvailableSortsRequest, + operations.GetAvailableSortsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAvailableSortsResponse: + r"""Get a section sorts + + Get the sort mechanisms available in a section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetAvailableSortsRequest) + request = cast(operations.GetAvailableSortsRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/sorts", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetAvailableSortsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAvailableSorts", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAvailableSortsResponse( + object=unmarshal_json_response( + Optional[operations.GetAvailableSortsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_available_sorts_async( + self, + *, + request: Union[ + operations.GetAvailableSortsRequest, + operations.GetAvailableSortsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAvailableSortsResponse: + r"""Get a section sorts + + Get the sort mechanisms available in a section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetAvailableSortsRequest) + request = cast(operations.GetAvailableSortsRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/sorts", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetAvailableSortsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAvailableSorts", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAvailableSortsResponse( + object=unmarshal_json_response( + Optional[operations.GetAvailableSortsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_stream_levels( + self, + *, + request: Union[ + operations.GetStreamLevelsRequest, + operations.GetStreamLevelsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetStreamLevelsResponse: + r"""Get loudness about a stream in json + + The the loudness of a stream in db, one entry per 100ms + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetStreamLevelsRequest) + request = cast(operations.GetStreamLevelsRequest, request) + + req = self._build_request( + method="GET", + path="/library/streams/{streamId}/levels", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetStreamLevelsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getStreamLevels", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetStreamLevelsResponse( + object=unmarshal_json_response( + Optional[operations.GetStreamLevelsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_stream_levels_async( + self, + *, + request: Union[ + operations.GetStreamLevelsRequest, + operations.GetStreamLevelsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetStreamLevelsResponse: + r"""Get loudness about a stream in json + + The the loudness of a stream in db, one entry per 100ms + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetStreamLevelsRequest) + request = cast(operations.GetStreamLevelsRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/streams/{streamId}/levels", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetStreamLevelsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getStreamLevels", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetStreamLevelsResponse( + object=unmarshal_json_response( + Optional[operations.GetStreamLevelsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_stream_loudness( + self, + *, + request: Union[ + operations.GetStreamLoudnessRequest, + operations.GetStreamLoudnessRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetStreamLoudnessResponse: + r"""Get loudness about a stream + + The the loudness of a stream in db, one number per line, one entry per 100ms + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetStreamLoudnessRequest) + request = cast(operations.GetStreamLoudnessRequest, request) + + req = self._build_request( + method="GET", + path="/library/streams/{streamId}/loudness", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="text/plain", + http_headers=http_headers, + _globals=operations.GetStreamLoudnessGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getStreamLoudness", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "text/plain"): + return operations.GetStreamLoudnessResponse( + res=http_res.text, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_stream_loudness_async( + self, + *, + request: Union[ + operations.GetStreamLoudnessRequest, + operations.GetStreamLoudnessRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetStreamLoudnessResponse: + r"""Get loudness about a stream + + The the loudness of a stream in db, one number per line, one entry per 100ms + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetStreamLoudnessRequest) + request = cast(operations.GetStreamLoudnessRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/streams/{streamId}/loudness", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="text/plain", + http_headers=http_headers, + _globals=operations.GetStreamLoudnessGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getStreamLoudness", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "text/plain"): + return operations.GetStreamLoudnessResponse( + res=http_res.text, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_chapter_image( + self, + *, + request: Union[ + operations.GetChapterImageRequest, + operations.GetChapterImageRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetChapterImageResponse: + r"""Get a chapter image + + Get a single chapter image for a piece of media + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetChapterImageRequest) + request = cast(operations.GetChapterImageRequest, request) + + req = self._build_request( + method="GET", + path="/library/media/{mediaId}/chapterImages/{chapter}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="image/jpeg", + http_headers=http_headers, + _globals=operations.GetChapterImageGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getChapterImage", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "image/jpeg"): + return operations.GetChapterImageResponse( + response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + async def get_chapter_image_async( + self, + *, + request: Union[ + operations.GetChapterImageRequest, + operations.GetChapterImageRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetChapterImageResponse: + r"""Get a chapter image + + Get a single chapter image for a piece of media + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetChapterImageRequest) + request = cast(operations.GetChapterImageRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/media/{mediaId}/chapterImages/{chapter}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="image/jpeg", + http_headers=http_headers, + _globals=operations.GetChapterImageGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getChapterImage", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "image/jpeg"): + return operations.GetChapterImageResponse( + response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + def set_item_artwork( + self, + *, + request: Union[ + operations.SetItemArtworkRequest, operations.SetItemArtworkRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetItemArtworkResponse: + r"""Set an item's artwork, theme, etc + + Set the artwork, thumb, element for a metadata item + Generally only the admin can perform this action. The exception is if the metadata is a playlist created by the user + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetItemArtworkRequest) + request = cast(operations.SetItemArtworkRequest, request) + + req = self._build_request( + method="POST", + path="/library/metadata/{ids}/{element}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SetItemArtworkGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setItemArtwork", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SetItemArtworkResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def set_item_artwork_async( + self, + *, + request: Union[ + operations.SetItemArtworkRequest, operations.SetItemArtworkRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetItemArtworkResponse: + r"""Set an item's artwork, theme, etc + + Set the artwork, thumb, element for a metadata item + Generally only the admin can perform this action. The exception is if the metadata is a playlist created by the user + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetItemArtworkRequest) + request = cast(operations.SetItemArtworkRequest, request) + + req = self._build_request_async( + method="POST", + path="/library/metadata/{ids}/{element}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SetItemArtworkGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setItemArtwork", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SetItemArtworkResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def update_item_artwork( + self, + *, + request: Union[ + operations.UpdateItemArtworkRequest, + operations.UpdateItemArtworkRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.UpdateItemArtworkResponse: + r"""Set an item's artwork, theme, etc + + Set the artwork, thumb, element for a metadata item + Generally only the admin can perform this action. The exception is if the metadata is a playlist created by the user + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UpdateItemArtworkRequest) + request = cast(operations.UpdateItemArtworkRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}/{element}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.UpdateItemArtworkGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="updateItemArtwork", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.UpdateItemArtworkResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def update_item_artwork_async( + self, + *, + request: Union[ + operations.UpdateItemArtworkRequest, + operations.UpdateItemArtworkRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.UpdateItemArtworkResponse: + r"""Set an item's artwork, theme, etc + + Set the artwork, thumb, element for a metadata item + Generally only the admin can perform this action. The exception is if the metadata is a playlist created by the user + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UpdateItemArtworkRequest) + request = cast(operations.UpdateItemArtworkRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}/{element}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.UpdateItemArtworkGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="updateItemArtwork", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.UpdateItemArtworkResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_marker( + self, + *, + request: Union[ + operations.DeleteMarkerRequest, operations.DeleteMarkerRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteMarkerResponse: + r"""Delete a marker + + Delete a marker for this user on the metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteMarkerRequest) + request = cast(operations.DeleteMarkerRequest, request) + + req = self._build_request( + method="DELETE", + path="/library/metadata/{ids}/marker/{marker}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteMarkerGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteMarker", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteMarkerResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_marker_async( + self, + *, + request: Union[ + operations.DeleteMarkerRequest, operations.DeleteMarkerRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteMarkerResponse: + r"""Delete a marker + + Delete a marker for this user on the metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteMarkerRequest) + request = cast(operations.DeleteMarkerRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/library/metadata/{ids}/marker/{marker}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteMarkerGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteMarker", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteMarkerResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def edit_marker( + self, + *, + request: Union[ + operations.EditMarkerRequest, operations.EditMarkerRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.EditMarkerResponse: + r"""Edit a marker + + Edit a marker for this user on the metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.EditMarkerRequest) + request = cast(operations.EditMarkerRequest, request) + + req = self._build_request( + method="PUT", + path="/library/metadata/{ids}/marker/{marker}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.EditMarkerGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="editMarker", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.EditMarkerResponse( + post_responses_200=unmarshal_json_response( + Optional[components.PostResponses200], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def edit_marker_async( + self, + *, + request: Union[ + operations.EditMarkerRequest, operations.EditMarkerRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.EditMarkerResponse: + r"""Edit a marker + + Edit a marker for this user on the metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.EditMarkerRequest) + request = cast(operations.EditMarkerRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/metadata/{ids}/marker/{marker}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.EditMarkerGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="editMarker", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.EditMarkerResponse( + post_responses_200=unmarshal_json_response( + Optional[components.PostResponses200], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_media_item( + self, + *, + request: Union[ + operations.DeleteMediaItemRequest, + operations.DeleteMediaItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteMediaItemResponse: + r"""Delete a media item + + Delete a single media from a metadata item in the library + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteMediaItemRequest) + request = cast(operations.DeleteMediaItemRequest, request) + + req = self._build_request( + method="DELETE", + path="/library/metadata/{ids}/media/{mediaItem}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteMediaItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteMediaItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteMediaItemResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_media_item_async( + self, + *, + request: Union[ + operations.DeleteMediaItemRequest, + operations.DeleteMediaItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteMediaItemResponse: + r"""Delete a media item + + Delete a single media from a metadata item in the library + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteMediaItemRequest) + request = cast(operations.DeleteMediaItemRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/library/metadata/{ids}/media/{mediaItem}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteMediaItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteMediaItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteMediaItemResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_part_index( + self, + *, + request: Union[ + operations.GetPartIndexRequest, operations.GetPartIndexRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPartIndexResponse: + r"""Get BIF index for a part + + Get BIF index for a part by index type + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPartIndexRequest) + request = cast(operations.GetPartIndexRequest, request) + + req = self._build_request( + method="GET", + path="/library/parts/{partId}/indexes/{index}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/octet-stream", + http_headers=http_headers, + _globals=operations.GetPartIndexGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPartIndex", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/octet-stream"): + return operations.GetPartIndexResponse( + response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + async def get_part_index_async( + self, + *, + request: Union[ + operations.GetPartIndexRequest, operations.GetPartIndexRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPartIndexResponse: + r"""Get BIF index for a part + + Get BIF index for a part by index type + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPartIndexRequest) + request = cast(operations.GetPartIndexRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/parts/{partId}/indexes/{index}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/octet-stream", + http_headers=http_headers, + _globals=operations.GetPartIndexGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPartIndex", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/octet-stream"): + return operations.GetPartIndexResponse( + response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + def delete_collection( + self, + *, + request: Union[ + operations.DeleteCollectionRequest, + operations.DeleteCollectionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteCollectionResponse: + r"""Delete a collection + + Delete a library collection from the PMS + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteCollectionRequest) + request = cast(operations.DeleteCollectionRequest, request) + + req = self._build_request( + method="DELETE", + path="/library/sections/{sectionId}/collection/{collectionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteCollectionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteCollection", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteCollectionResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_collection_async( + self, + *, + request: Union[ + operations.DeleteCollectionRequest, + operations.DeleteCollectionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteCollectionResponse: + r"""Delete a collection + + Delete a library collection from the PMS + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteCollectionRequest) + request = cast(operations.DeleteCollectionRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/library/sections/{sectionId}/collection/{collectionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteCollectionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteCollection", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteCollectionResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_section_image( + self, + *, + request: Union[ + operations.GetSectionImageRequest, + operations.GetSectionImageRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSectionImageResponse: + r"""Get a section composite image + + Get a composite image of images in this section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSectionImageRequest) + request = cast(operations.GetSectionImageRequest, request) + + req = self._build_request( + method="GET", + path="/library/sections/{sectionId}/composite/{updatedAt}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetSectionImageGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSectionImage", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GetSectionImageResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_section_image_async( + self, + *, + request: Union[ + operations.GetSectionImageRequest, + operations.GetSectionImageRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSectionImageResponse: + r"""Get a section composite image + + Get a composite image of images in this section + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSectionImageRequest) + request = cast(operations.GetSectionImageRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/sections/{sectionId}/composite/{updatedAt}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetSectionImageGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSectionImage", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GetSectionImageResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_stream( + self, + *, + request: Union[ + operations.DeleteStreamRequest, operations.DeleteStreamRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteStreamResponse: + r"""Delete a stream + + Delete a stream. Only applies to downloaded subtitle streams or a sidecar subtitle when media deletion is enabled. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteStreamRequest) + request = cast(operations.DeleteStreamRequest, request) + + req = self._build_request( + method="DELETE", + path="/library/streams/{streamId}.{ext}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteStreamGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteStream", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "4XX", "500", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteStreamResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["403", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_stream_async( + self, + *, + request: Union[ + operations.DeleteStreamRequest, operations.DeleteStreamRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteStreamResponse: + r"""Delete a stream + + Delete a stream. Only applies to downloaded subtitle streams or a sidecar subtitle when media deletion is enabled. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteStreamRequest) + request = cast(operations.DeleteStreamRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/library/streams/{streamId}.{ext}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteStreamGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteStream", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "4XX", "500", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteStreamResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["403", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_stream( + self, + *, + request: Union[ + operations.GetStreamRequest, operations.GetStreamRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetStreamResponse: + r"""Get a stream + + Get a stream (such as a sidecar subtitle stream) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetStreamRequest) + request = cast(operations.GetStreamRequest, request) + + req = self._build_request( + method="GET", + path="/library/streams/{streamId}.{ext}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetStreamGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getStream", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "501", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GetStreamResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["501", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_stream_async( + self, + *, + request: Union[ + operations.GetStreamRequest, operations.GetStreamRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetStreamResponse: + r"""Get a stream + + Get a stream (such as a sidecar subtitle stream) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetStreamRequest) + request = cast(operations.GetStreamRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/streams/{streamId}.{ext}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetStreamGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getStream", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "501", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GetStreamResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["501", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def set_stream_offset( + self, + *, + request: Union[ + operations.SetStreamOffsetRequest, + operations.SetStreamOffsetRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetStreamOffsetResponse: + r"""Set a stream offset + + Set a stream offset in ms. This may not be respected by all clients + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetStreamOffsetRequest) + request = cast(operations.SetStreamOffsetRequest, request) + + req = self._build_request( + method="PUT", + path="/library/streams/{streamId}.{ext}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SetStreamOffsetGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setStreamOffset", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SetStreamOffsetResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def set_stream_offset_async( + self, + *, + request: Union[ + operations.SetStreamOffsetRequest, + operations.SetStreamOffsetRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetStreamOffsetResponse: + r"""Set a stream offset + + Set a stream offset in ms. This may not be respected by all clients + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetStreamOffsetRequest) + request = cast(operations.SetStreamOffsetRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/streams/{streamId}.{ext}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SetStreamOffsetGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setStreamOffset", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SetStreamOffsetResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_item_artwork( + self, + *, + request: Union[ + operations.GetItemArtworkRequest, operations.GetItemArtworkRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + accept_header_override: Optional[GetItemArtworkAcceptEnum] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetItemArtworkResponse: + r"""Get an item's artwork, theme, etc + + Get the artwork, thumb, element for a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param accept_header_override: Override the default accept header for this method + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetItemArtworkRequest) + request = cast(operations.GetItemArtworkRequest, request) + + req = self._build_request( + method="GET", + path="/library/metadata/{ids}/{element}/{timestamp}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value=accept_header_override.value + if accept_header_override is not None + else "audio/mpeg3;q=1, image/jpeg;q=0", + http_headers=http_headers, + _globals=operations.GetItemArtworkGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getItemArtwork", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "audio/mpeg3"): + return operations.GetItemArtworkResponse( + two_hundred_audio_mpeg3_response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "200", "image/jpeg"): + return operations.GetItemArtworkResponse( + two_hundred_image_jpeg_response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + async def get_item_artwork_async( + self, + *, + request: Union[ + operations.GetItemArtworkRequest, operations.GetItemArtworkRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + accept_header_override: Optional[GetItemArtworkAcceptEnum] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetItemArtworkResponse: + r"""Get an item's artwork, theme, etc + + Get the artwork, thumb, element for a metadata item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param accept_header_override: Override the default accept header for this method + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetItemArtworkRequest) + request = cast(operations.GetItemArtworkRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/metadata/{ids}/{element}/{timestamp}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value=accept_header_override.value + if accept_header_override is not None + else "audio/mpeg3;q=1, image/jpeg;q=0", + http_headers=http_headers, + _globals=operations.GetItemArtworkGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getItemArtwork", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "audio/mpeg3"): + return operations.GetItemArtworkResponse( + two_hundred_audio_mpeg3_response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "200", "image/jpeg"): + return operations.GetItemArtworkResponse( + two_hundred_image_jpeg_response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + def get_media_part( + self, + *, + request: Union[ + operations.GetMediaPartRequest, operations.GetMediaPartRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetMediaPartResponse: + r"""Get a media part + + Get a media part for streaming or download. + - streaming: This is the default scenario. Bandwidth usage on this endpoint will be guaranteed (on the server's end) to be at least the bandwidth reservation given in the decision. If no decision exists, an ad-hoc decision will be created if sufficient bandwidth exists. Clients should not rely on ad-hoc decisions being made as this may be removed in the future. + - download: Indicated if the query parameter indicates this is a download. Bandwidth will be prioritized behind playbacks and will get a fair share of what remains. + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetMediaPartRequest) + request = cast(operations.GetMediaPartRequest, request) + + req = self._build_request( + method="GET", + path="/library/parts/{partId}/{changestamp}/{filename}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetMediaPartGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getMediaPart", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "503", "509", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GetMediaPartResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["503", "509", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_media_part_async( + self, + *, + request: Union[ + operations.GetMediaPartRequest, operations.GetMediaPartRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetMediaPartResponse: + r"""Get a media part + + Get a media part for streaming or download. + - streaming: This is the default scenario. Bandwidth usage on this endpoint will be guaranteed (on the server's end) to be at least the bandwidth reservation given in the decision. If no decision exists, an ad-hoc decision will be created if sufficient bandwidth exists. Clients should not rely on ad-hoc decisions being made as this may be removed in the future. + - download: Indicated if the query parameter indicates this is a download. Bandwidth will be prioritized behind playbacks and will get a fair share of what remains. + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetMediaPartRequest) + request = cast(operations.GetMediaPartRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/parts/{partId}/{changestamp}/{filename}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetMediaPartGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getMediaPart", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "503", "509", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GetMediaPartResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["503", "509", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_image_from_bif( + self, + *, + request: Union[ + operations.GetImageFromBifRequest, + operations.GetImageFromBifRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetImageFromBifResponse: + r"""Get an image from part BIF + + Extract an image from the BIF for a part at a particular offset + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetImageFromBifRequest) + request = cast(operations.GetImageFromBifRequest, request) + + req = self._build_request( + method="GET", + path="/library/parts/{partId}/indexes/{index}/{offset}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="image/jpeg", + http_headers=http_headers, + _globals=operations.GetImageFromBifGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getImageFromBif", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "image/jpeg"): + return operations.GetImageFromBifResponse( + response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + async def get_image_from_bif_async( + self, + *, + request: Union[ + operations.GetImageFromBifRequest, + operations.GetImageFromBifRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetImageFromBifResponse: + r"""Get an image from part BIF + + Extract an image from the BIF for a part at a particular offset + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetImageFromBifRequest) + request = cast(operations.GetImageFromBifRequest, request) + + req = self._build_request_async( + method="GET", + path="/library/parts/{partId}/indexes/{index}/{offset}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="image/jpeg", + http_headers=http_headers, + _globals=operations.GetImageFromBifGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getImageFromBif", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "image/jpeg"): + return operations.GetImageFromBifResponse( + response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) diff --git a/src/plex_api_client/library_collections.py b/src/plex_api_client/library_collections.py new file mode 100644 index 0000000..a15e28a --- /dev/null +++ b/src/plex_api_client/library_collections.py @@ -0,0 +1,637 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import components, errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class LibraryCollections(BaseSDK): + r"""Endpoints for manipulating collections. In addition to these endpoints, `/library/collections/:collectionId/X` will be rerouted to `/library/metadata/:collectionId/X` and respond to those endpoints as well.""" + + def add_collection_items( + self, + *, + request: Union[ + operations.AddCollectionItemsRequest, + operations.AddCollectionItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddCollectionItemsResponse: + r"""Add items to a collection + + Add items to a collection by uri + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddCollectionItemsRequest) + request = cast(operations.AddCollectionItemsRequest, request) + + req = self._build_request( + method="PUT", + path="/library/collections/{collectionId}/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.AddCollectionItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addCollectionItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.AddCollectionItemsResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def add_collection_items_async( + self, + *, + request: Union[ + operations.AddCollectionItemsRequest, + operations.AddCollectionItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddCollectionItemsResponse: + r"""Add items to a collection + + Add items to a collection by uri + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddCollectionItemsRequest) + request = cast(operations.AddCollectionItemsRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/collections/{collectionId}/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.AddCollectionItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addCollectionItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.AddCollectionItemsResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_collection_item( + self, + *, + request: Union[ + operations.DeleteCollectionItemRequest, + operations.DeleteCollectionItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteCollectionItemResponse: + r"""Delete an item from a collection + + Delete an item from a collection + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteCollectionItemRequest) + request = cast(operations.DeleteCollectionItemRequest, request) + + req = self._build_request( + method="PUT", + path="/library/collections/{collectionId}/items/{itemId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.DeleteCollectionItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteCollectionItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.DeleteCollectionItemResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_collection_item_async( + self, + *, + request: Union[ + operations.DeleteCollectionItemRequest, + operations.DeleteCollectionItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteCollectionItemResponse: + r"""Delete an item from a collection + + Delete an item from a collection + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteCollectionItemRequest) + request = cast(operations.DeleteCollectionItemRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/collections/{collectionId}/items/{itemId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.DeleteCollectionItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteCollectionItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.DeleteCollectionItemResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def move_collection_item( + self, + *, + request: Union[ + operations.MoveCollectionItemRequest, + operations.MoveCollectionItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.MoveCollectionItemResponse: + r"""Reorder an item in the collection + + Reorder items in a collection with one item after another + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.MoveCollectionItemRequest) + request = cast(operations.MoveCollectionItemRequest, request) + + req = self._build_request( + method="PUT", + path="/library/collections/{collectionId}/items/{itemId}/move", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.MoveCollectionItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="moveCollectionItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.MoveCollectionItemResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def move_collection_item_async( + self, + *, + request: Union[ + operations.MoveCollectionItemRequest, + operations.MoveCollectionItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.MoveCollectionItemResponse: + r"""Reorder an item in the collection + + Reorder items in a collection with one item after another + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.MoveCollectionItemRequest) + request = cast(operations.MoveCollectionItemRequest, request) + + req = self._build_request_async( + method="PUT", + path="/library/collections/{collectionId}/items/{itemId}/move", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.MoveCollectionItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="moveCollectionItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.MoveCollectionItemResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/library_playlists.py b/src/plex_api_client/library_playlists.py new file mode 100644 index 0000000..158876f --- /dev/null +++ b/src/plex_api_client/library_playlists.py @@ -0,0 +1,2693 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import components, errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class LibraryPlaylists(BaseSDK): + r"""Endpoints for manipulating playlists.""" + + def create_playlist( + self, + *, + request: Union[ + operations.CreatePlaylistRequest, operations.CreatePlaylistRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CreatePlaylistResponse: + r"""Create a Playlist + + Create a new playlist. By default the playlist is blank. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CreatePlaylistRequest) + request = cast(operations.CreatePlaylistRequest, request) + + req = self._build_request( + method="POST", + path="/playlists", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.CreatePlaylistGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="createPlaylist", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.CreatePlaylistResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def create_playlist_async( + self, + *, + request: Union[ + operations.CreatePlaylistRequest, operations.CreatePlaylistRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CreatePlaylistResponse: + r"""Create a Playlist + + Create a new playlist. By default the playlist is blank. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CreatePlaylistRequest) + request = cast(operations.CreatePlaylistRequest, request) + + req = self._build_request_async( + method="POST", + path="/playlists", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.CreatePlaylistGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="createPlaylist", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.CreatePlaylistResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def upload_playlist( + self, + *, + request: Union[ + operations.UploadPlaylistRequest, operations.UploadPlaylistRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.UploadPlaylistResponse: + r"""Upload + + Imports m3u playlists by passing a path on the server to scan for m3u-formatted playlist files, or a path to a single playlist file. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UploadPlaylistRequest) + request = cast(operations.UploadPlaylistRequest, request) + + req = self._build_request( + method="POST", + path="/playlists/upload", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.UploadPlaylistGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="uploadPlaylist", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "4XX", "500", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.UploadPlaylistResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["403", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def upload_playlist_async( + self, + *, + request: Union[ + operations.UploadPlaylistRequest, operations.UploadPlaylistRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.UploadPlaylistResponse: + r"""Upload + + Imports m3u playlists by passing a path on the server to scan for m3u-formatted playlist files, or a path to a single playlist file. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UploadPlaylistRequest) + request = cast(operations.UploadPlaylistRequest, request) + + req = self._build_request_async( + method="POST", + path="/playlists/upload", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.UploadPlaylistGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="uploadPlaylist", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "4XX", "500", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.UploadPlaylistResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["403", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_playlist( + self, + *, + request: Union[ + operations.DeletePlaylistRequest, operations.DeletePlaylistRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeletePlaylistResponse: + r"""Delete a Playlist + + Deletes a playlist by provided id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeletePlaylistRequest) + request = cast(operations.DeletePlaylistRequest, request) + + req = self._build_request( + method="DELETE", + path="/playlists/{playlistId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeletePlaylistGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deletePlaylist", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "204", "*"): + return operations.DeletePlaylistResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_playlist_async( + self, + *, + request: Union[ + operations.DeletePlaylistRequest, operations.DeletePlaylistRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeletePlaylistResponse: + r"""Delete a Playlist + + Deletes a playlist by provided id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeletePlaylistRequest) + request = cast(operations.DeletePlaylistRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/playlists/{playlistId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeletePlaylistGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deletePlaylist", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "204", "*"): + return operations.DeletePlaylistResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def update_playlist( + self, + *, + request: Union[ + operations.UpdatePlaylistRequest, operations.UpdatePlaylistRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.UpdatePlaylistResponse: + r"""Editing a Playlist + + Edits a playlist in the same manner as [editing metadata](#tag/Provider/operation/metadataPutItem) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UpdatePlaylistRequest) + request = cast(operations.UpdatePlaylistRequest, request) + + req = self._build_request( + method="PUT", + path="/playlists/{playlistId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.UpdatePlaylistGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="updatePlaylist", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "204", "*"): + return operations.UpdatePlaylistResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def update_playlist_async( + self, + *, + request: Union[ + operations.UpdatePlaylistRequest, operations.UpdatePlaylistRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.UpdatePlaylistResponse: + r"""Editing a Playlist + + Edits a playlist in the same manner as [editing metadata](#tag/Provider/operation/metadataPutItem) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UpdatePlaylistRequest) + request = cast(operations.UpdatePlaylistRequest, request) + + req = self._build_request_async( + method="PUT", + path="/playlists/{playlistId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.UpdatePlaylistGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="updatePlaylist", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "204", "*"): + return operations.UpdatePlaylistResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_playlist_generators( + self, + *, + request: Union[ + operations.GetPlaylistGeneratorsRequest, + operations.GetPlaylistGeneratorsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPlaylistGeneratorsResponse: + r"""Get a playlist's generators + + Get all the generators in a playlist + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPlaylistGeneratorsRequest) + request = cast(operations.GetPlaylistGeneratorsRequest, request) + + req = self._build_request( + method="GET", + path="/playlists/{playlistId}/generators", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPlaylistGeneratorsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPlaylistGenerators", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPlaylistGeneratorsResponse( + object=unmarshal_json_response( + Optional[operations.GetPlaylistGeneratorsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_playlist_generators_async( + self, + *, + request: Union[ + operations.GetPlaylistGeneratorsRequest, + operations.GetPlaylistGeneratorsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPlaylistGeneratorsResponse: + r"""Get a playlist's generators + + Get all the generators in a playlist + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPlaylistGeneratorsRequest) + request = cast(operations.GetPlaylistGeneratorsRequest, request) + + req = self._build_request_async( + method="GET", + path="/playlists/{playlistId}/generators", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPlaylistGeneratorsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPlaylistGenerators", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPlaylistGeneratorsResponse( + object=unmarshal_json_response( + Optional[operations.GetPlaylistGeneratorsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def clear_playlist_items( + self, + *, + request: Union[ + operations.ClearPlaylistItemsRequest, + operations.ClearPlaylistItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ClearPlaylistItemsResponse: + r"""Clearing a playlist + + Clears a playlist, only works with dumb playlists. Returns the playlist. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ClearPlaylistItemsRequest) + request = cast(operations.ClearPlaylistItemsRequest, request) + + req = self._build_request( + method="DELETE", + path="/playlists/{playlistId}/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ClearPlaylistItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="clearPlaylistItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ClearPlaylistItemsResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def clear_playlist_items_async( + self, + *, + request: Union[ + operations.ClearPlaylistItemsRequest, + operations.ClearPlaylistItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ClearPlaylistItemsResponse: + r"""Clearing a playlist + + Clears a playlist, only works with dumb playlists. Returns the playlist. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ClearPlaylistItemsRequest) + request = cast(operations.ClearPlaylistItemsRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/playlists/{playlistId}/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ClearPlaylistItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="clearPlaylistItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ClearPlaylistItemsResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def add_playlist_items( + self, + *, + request: Union[ + operations.AddPlaylistItemsRequest, + operations.AddPlaylistItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddPlaylistItemsResponse: + r"""Adding to a Playlist + + Adds a generator to a playlist, same parameters as the POST above. With a dumb playlist, this adds the specified items to the playlist. With a smart playlist, passing a new `uri` parameter replaces the rules for the playlist. Returns the playlist. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddPlaylistItemsRequest) + request = cast(operations.AddPlaylistItemsRequest, request) + + req = self._build_request( + method="PUT", + path="/playlists/{playlistId}/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.AddPlaylistItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addPlaylistItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.AddPlaylistItemsResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def add_playlist_items_async( + self, + *, + request: Union[ + operations.AddPlaylistItemsRequest, + operations.AddPlaylistItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddPlaylistItemsResponse: + r"""Adding to a Playlist + + Adds a generator to a playlist, same parameters as the POST above. With a dumb playlist, this adds the specified items to the playlist. With a smart playlist, passing a new `uri` parameter replaces the rules for the playlist. Returns the playlist. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddPlaylistItemsRequest) + request = cast(operations.AddPlaylistItemsRequest, request) + + req = self._build_request_async( + method="PUT", + path="/playlists/{playlistId}/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.AddPlaylistItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addPlaylistItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.AddPlaylistItemsResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_playlist_item( + self, + *, + request: Union[ + operations.DeletePlaylistItemRequest, + operations.DeletePlaylistItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeletePlaylistItemResponse: + r"""Delete a Generator + + Deletes an item from a playlist. Only works with dumb playlists. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeletePlaylistItemRequest) + request = cast(operations.DeletePlaylistItemRequest, request) + + req = self._build_request( + method="DELETE", + path="/playlists/{playlistId}/items/{generatorId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.DeletePlaylistItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deletePlaylistItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.DeletePlaylistItemResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_playlist_item_async( + self, + *, + request: Union[ + operations.DeletePlaylistItemRequest, + operations.DeletePlaylistItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeletePlaylistItemResponse: + r"""Delete a Generator + + Deletes an item from a playlist. Only works with dumb playlists. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeletePlaylistItemRequest) + request = cast(operations.DeletePlaylistItemRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/playlists/{playlistId}/items/{generatorId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.DeletePlaylistItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deletePlaylistItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.DeletePlaylistItemResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_playlist_generator( + self, + *, + request: Union[ + operations.GetPlaylistGeneratorRequest, + operations.GetPlaylistGeneratorRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPlaylistGeneratorResponse: + r"""Get a playlist generator + + Get a playlist's generator. Only used for optimized versions + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPlaylistGeneratorRequest) + request = cast(operations.GetPlaylistGeneratorRequest, request) + + req = self._build_request( + method="GET", + path="/playlists/{playlistId}/items/{generatorId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPlaylistGeneratorGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPlaylistGenerator", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPlaylistGeneratorResponse( + object=unmarshal_json_response( + Optional[operations.GetPlaylistGeneratorResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_playlist_generator_async( + self, + *, + request: Union[ + operations.GetPlaylistGeneratorRequest, + operations.GetPlaylistGeneratorRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPlaylistGeneratorResponse: + r"""Get a playlist generator + + Get a playlist's generator. Only used for optimized versions + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPlaylistGeneratorRequest) + request = cast(operations.GetPlaylistGeneratorRequest, request) + + req = self._build_request_async( + method="GET", + path="/playlists/{playlistId}/items/{generatorId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPlaylistGeneratorGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPlaylistGenerator", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPlaylistGeneratorResponse( + object=unmarshal_json_response( + Optional[operations.GetPlaylistGeneratorResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def modify_playlist_generator( + self, + *, + request: Union[ + operations.ModifyPlaylistGeneratorRequest, + operations.ModifyPlaylistGeneratorRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ModifyPlaylistGeneratorResponse: + r"""Modify a Generator + + Modify a playlist generator. Only used for optimizer + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.ModifyPlaylistGeneratorRequest + ) + request = cast(operations.ModifyPlaylistGeneratorRequest, request) + + req = self._build_request( + method="PUT", + path="/playlists/{playlistId}/items/{generatorId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ModifyPlaylistGeneratorGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="modifyPlaylistGenerator", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ModifyPlaylistGeneratorResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def modify_playlist_generator_async( + self, + *, + request: Union[ + operations.ModifyPlaylistGeneratorRequest, + operations.ModifyPlaylistGeneratorRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ModifyPlaylistGeneratorResponse: + r"""Modify a Generator + + Modify a playlist generator. Only used for optimizer + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.ModifyPlaylistGeneratorRequest + ) + request = cast(operations.ModifyPlaylistGeneratorRequest, request) + + req = self._build_request_async( + method="PUT", + path="/playlists/{playlistId}/items/{generatorId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ModifyPlaylistGeneratorGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="modifyPlaylistGenerator", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ModifyPlaylistGeneratorResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_playlist_generator_items( + self, + *, + request: Union[ + operations.GetPlaylistGeneratorItemsRequest, + operations.GetPlaylistGeneratorItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPlaylistGeneratorItemsResponse: + r"""Get a playlist generator's items + + Get a playlist generator's items + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.GetPlaylistGeneratorItemsRequest + ) + request = cast(operations.GetPlaylistGeneratorItemsRequest, request) + + req = self._build_request( + method="GET", + path="/playlists/{playlistId}/items/{generatorId}/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPlaylistGeneratorItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPlaylistGeneratorItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPlaylistGeneratorItemsResponse( + object=unmarshal_json_response( + Optional[operations.GetPlaylistGeneratorItemsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_playlist_generator_items_async( + self, + *, + request: Union[ + operations.GetPlaylistGeneratorItemsRequest, + operations.GetPlaylistGeneratorItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPlaylistGeneratorItemsResponse: + r"""Get a playlist generator's items + + Get a playlist generator's items + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.GetPlaylistGeneratorItemsRequest + ) + request = cast(operations.GetPlaylistGeneratorItemsRequest, request) + + req = self._build_request_async( + method="GET", + path="/playlists/{playlistId}/items/{generatorId}/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPlaylistGeneratorItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPlaylistGeneratorItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPlaylistGeneratorItemsResponse( + object=unmarshal_json_response( + Optional[operations.GetPlaylistGeneratorItemsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def move_playlist_item( + self, + *, + request: Union[ + operations.MovePlaylistItemRequest, + operations.MovePlaylistItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.MovePlaylistItemResponse: + r"""Moving items in a playlist + + Moves an item in a playlist. Only works with dumb playlists. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.MovePlaylistItemRequest) + request = cast(operations.MovePlaylistItemRequest, request) + + req = self._build_request( + method="PUT", + path="/playlists/{playlistId}/items/{playlistItemId}/move", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.MovePlaylistItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="movePlaylistItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.MovePlaylistItemResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def move_playlist_item_async( + self, + *, + request: Union[ + operations.MovePlaylistItemRequest, + operations.MovePlaylistItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.MovePlaylistItemResponse: + r"""Moving items in a playlist + + Moves an item in a playlist. Only works with dumb playlists. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.MovePlaylistItemRequest) + request = cast(operations.MovePlaylistItemRequest, request) + + req = self._build_request_async( + method="PUT", + path="/playlists/{playlistId}/items/{playlistItemId}/move", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.MovePlaylistItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="movePlaylistItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.MovePlaylistItemResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def refresh_playlist( + self, + *, + request: Union[ + operations.RefreshPlaylistRequest, + operations.RefreshPlaylistRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RefreshPlaylistResponse: + r"""Reprocess a generator + + Make a generator reprocess (refresh) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.RefreshPlaylistRequest) + request = cast(operations.RefreshPlaylistRequest, request) + + req = self._build_request( + method="PUT", + path="/playlists/{playlistId}/items/{generatorId}/{metadataId}/{action}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.RefreshPlaylistGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="refreshPlaylist", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.RefreshPlaylistResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def refresh_playlist_async( + self, + *, + request: Union[ + operations.RefreshPlaylistRequest, + operations.RefreshPlaylistRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RefreshPlaylistResponse: + r"""Reprocess a generator + + Make a generator reprocess (refresh) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.RefreshPlaylistRequest) + request = cast(operations.RefreshPlaylistRequest, request) + + req = self._build_request_async( + method="PUT", + path="/playlists/{playlistId}/items/{generatorId}/{metadataId}/{action}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.RefreshPlaylistGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="refreshPlaylist", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.RefreshPlaylistResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/live_tv.py b/src/plex_api_client/live_tv.py new file mode 100644 index 0000000..994af1e --- /dev/null +++ b/src/plex_api_client/live_tv.py @@ -0,0 +1,795 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import components, errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class LiveTV(BaseSDK): + r"""LiveTV contains the playback sessions of a channel from a DVR device""" + + def get_sessions( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSessionsResponse: + r"""Get all sessions + + Get all livetv sessions and metadata + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="GET", + path="/livetv/sessions", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSessions", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSessionsResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_sessions_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSessionsResponse: + r"""Get all sessions + + Get all livetv sessions and metadata + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="GET", + path="/livetv/sessions", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSessions", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSessionsResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_live_tv_session( + self, + *, + request: Union[ + operations.GetLiveTVSessionRequest, + operations.GetLiveTVSessionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetLiveTVSessionResponse: + r"""Get a single session + + Get a single livetv session and metadata + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetLiveTVSessionRequest) + request = cast(operations.GetLiveTVSessionRequest, request) + + req = self._build_request( + method="GET", + path="/livetv/sessions/{sessionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetLiveTVSessionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getLiveTVSession", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetLiveTVSessionResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_live_tv_session_async( + self, + *, + request: Union[ + operations.GetLiveTVSessionRequest, + operations.GetLiveTVSessionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetLiveTVSessionResponse: + r"""Get a single session + + Get a single livetv session and metadata + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetLiveTVSessionRequest) + request = cast(operations.GetLiveTVSessionRequest, request) + + req = self._build_request_async( + method="GET", + path="/livetv/sessions/{sessionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetLiveTVSessionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getLiveTVSession", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetLiveTVSessionResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_session_playlist_index( + self, + *, + request: Union[ + operations.GetSessionPlaylistIndexRequest, + operations.GetSessionPlaylistIndexRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSessionPlaylistIndexResponse: + r"""Get a session playlist index + + Get a playlist index for playing this session + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.GetSessionPlaylistIndexRequest + ) + request = cast(operations.GetSessionPlaylistIndexRequest, request) + + req = self._build_request( + method="GET", + path="/livetv/sessions/{sessionId}/{consumerId}/index.m3u8", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetSessionPlaylistIndexGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSessionPlaylistIndex", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GetSessionPlaylistIndexResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_session_playlist_index_async( + self, + *, + request: Union[ + operations.GetSessionPlaylistIndexRequest, + operations.GetSessionPlaylistIndexRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSessionPlaylistIndexResponse: + r"""Get a session playlist index + + Get a playlist index for playing this session + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.GetSessionPlaylistIndexRequest + ) + request = cast(operations.GetSessionPlaylistIndexRequest, request) + + req = self._build_request_async( + method="GET", + path="/livetv/sessions/{sessionId}/{consumerId}/index.m3u8", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetSessionPlaylistIndexGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSessionPlaylistIndex", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GetSessionPlaylistIndexResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_session_segment( + self, + *, + request: Union[ + operations.GetSessionSegmentRequest, + operations.GetSessionSegmentRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSessionSegmentResponse: + r"""Get a single session segment + + Get a single LiveTV session segment + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSessionSegmentRequest) + request = cast(operations.GetSessionSegmentRequest, request) + + req = self._build_request( + method="GET", + path="/livetv/sessions/{sessionId}/{consumerId}/{segmentId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetSessionSegmentGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSessionSegment", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GetSessionSegmentResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_session_segment_async( + self, + *, + request: Union[ + operations.GetSessionSegmentRequest, + operations.GetSessionSegmentRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSessionSegmentResponse: + r"""Get a single session segment + + Get a single LiveTV session segment + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSessionSegmentRequest) + request = cast(operations.GetSessionSegmentRequest, request) + + req = self._build_request_async( + method="GET", + path="/livetv/sessions/{sessionId}/{consumerId}/{segmentId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.GetSessionSegmentGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSessionSegment", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.GetSessionSegmentResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/log.py b/src/plex_api_client/log.py index b343664..3fde5a8 100644 --- a/src/plex_api_client/log.py +++ b/src/plex_api_client/log.py @@ -1,259 +1,29 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from .basesdk import BaseSDK +import io from plex_api_client import utils from plex_api_client._hooks import HookContext from plex_api_client.models import errors, operations -from plex_api_client.types import OptionalNullable, UNSET -from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Mapping, Optional +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from typing import IO, Mapping, Optional, Union, cast class Log(BaseSDK): - r"""Submit logs to the Log Handler for Plex Media Server""" + r"""Logging mechanism to allow clients to log to the server""" - def log_line( + def write_log( self, *, - level: operations.Level, - message: str, - source: str, + request: Union[bytes, IO[bytes], io.BufferedReader], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.LogLineResponse: - r"""Logging a single line message. + ) -> operations.WriteLogResponse: + r"""Logging a multi-line message to the Plex Media Server log - This endpoint will write a single-line log message, including a level and source to the main Plex Media Server log. - - - :param level: An integer log level to write to the PMS log with. 0: Error 1: Warning 2: Info 3: Debug 4: Verbose - :param message: The text of the message to write to the log. - :param source: a string indicating the source of the message. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.LogLineRequest( - level=level, - message=message, - source=source, - ) - - req = self._build_request( - method="GET", - path="/log", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="logLine", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.LogLineResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.LogLineBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.LogLineBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.LogLineUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.LogLineUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def log_line_async( - self, - *, - level: operations.Level, - message: str, - source: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.LogLineResponse: - r"""Logging a single line message. - - This endpoint will write a single-line log message, including a level and source to the main Plex Media Server log. - - - :param level: An integer log level to write to the PMS log with. 0: Error 1: Warning 2: Info 3: Debug 4: Verbose - :param message: The text of the message to write to the log. - :param source: a string indicating the source of the message. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.LogLineRequest( - level=level, - message=message, - source=source, - ) - - req = self._build_request_async( - method="GET", - path="/log", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="logLine", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.LogLineResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.LogLineBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.LogLineBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.LogLineUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.LogLineUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def log_multi_line( - self, - *, - request: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.LogMultiLineResponse: - r"""Logging a multi-line message - - This endpoint allows for the batch addition of log entries to the main Plex Media Server log. - It accepts a text/plain request body, where each line represents a distinct log entry. - Each log entry consists of URL-encoded key-value pairs, specifying log attributes such as 'level', 'message', and 'source'. - - Log entries are separated by a newline character (`\n`). - Each entry's parameters should be URL-encoded to ensure accurate parsing and handling of special characters. - This method is efficient for logging multiple entries in a single API call, reducing the overhead of multiple individual requests. - - The 'level' parameter specifies the log entry's severity or importance, with the following integer values: - - `0`: Error - Critical issues that require immediate attention. - - `1`: Warning - Important events that are not critical but may indicate potential issues. - - `2`: Info - General informational messages about system operation. - - `3`: Debug - Detailed information useful for debugging purposes. - - `4`: Verbose - Highly detailed diagnostic information for in-depth analysis. - - The 'message' parameter contains the log text, and 'source' identifies the log message's origin (e.g., an application name or module). - - Example of a single log entry format: - `level=4&message=Sample%20log%20entry&source=applicationName` - - Ensure each parameter is properly URL-encoded to avoid interpretation issues. + This endpoint will write multiple lines to the main Plex Media Server log in a single request. It takes a set of query strings as would normally sent to the above PUT endpoint as a linefeed-separated block of POST data. The parameters for each query string match as above. :param request: The request object to send. @@ -282,11 +52,11 @@ class Log(BaseSDK): request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "string", str + request, False, False, "raw", Union[bytes, IO[bytes], io.BufferedReader] ), timeout_ms=timeout_ms, ) @@ -303,35 +73,22 @@ class Log(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="logMultiLine", - oauth2_scopes=[], + operation_id="writeLog", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["400", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "*"): - return operations.LogMultiLineResponse( + return operations.WriteLogResponse( status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.LogMultiLineBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.LogMultiLineBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.LogMultiLineUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.LogMultiLineUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): + if utils.match_response(http_res, ["400", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): @@ -340,38 +97,18 @@ class Log(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - async def log_multi_line_async( + async def write_log_async( self, *, - request: str, + request: Union[bytes, IO[bytes], io.BufferedReader], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.LogMultiLineResponse: - r"""Logging a multi-line message + ) -> operations.WriteLogResponse: + r"""Logging a multi-line message to the Plex Media Server log - This endpoint allows for the batch addition of log entries to the main Plex Media Server log. - It accepts a text/plain request body, where each line represents a distinct log entry. - Each log entry consists of URL-encoded key-value pairs, specifying log attributes such as 'level', 'message', and 'source'. - - Log entries are separated by a newline character (`\n`). - Each entry's parameters should be URL-encoded to ensure accurate parsing and handling of special characters. - This method is efficient for logging multiple entries in a single API call, reducing the overhead of multiple individual requests. - - The 'level' parameter specifies the log entry's severity or importance, with the following integer values: - - `0`: Error - Critical issues that require immediate attention. - - `1`: Warning - Important events that are not critical but may indicate potential issues. - - `2`: Info - General informational messages about system operation. - - `3`: Debug - Detailed information useful for debugging purposes. - - `4`: Verbose - Highly detailed diagnostic information for in-depth analysis. - - The 'message' parameter contains the log text, and 'source' identifies the log message's origin (e.g., an application name or module). - - Example of a single log entry format: - `level=4&message=Sample%20log%20entry&source=applicationName` - - Ensure each parameter is properly URL-encoded to avoid interpretation issues. + This endpoint will write multiple lines to the main Plex Media Server log in a single request. It takes a set of query strings as would normally sent to the above PUT endpoint as a linefeed-separated block of POST data. The parameters for each query string match as above. :param request: The request object to send. @@ -400,11 +137,11 @@ class Log(BaseSDK): request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, security=self.sdk_configuration.security, get_serialized_body=lambda: utils.serialize_request_body( - request, False, False, "string", str + request, False, False, "raw", Union[bytes, IO[bytes], io.BufferedReader] ), timeout_ms=timeout_ms, ) @@ -421,35 +158,22 @@ class Log(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="logMultiLine", - oauth2_scopes=[], + operation_id="writeLog", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["400", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "*"): - return operations.LogMultiLineResponse( + return operations.WriteLogResponse( status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.LogMultiLineBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.LogMultiLineBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.LogMultiLineUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.LogMultiLineUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): + if utils.match_response(http_res, ["400", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): @@ -458,19 +182,25 @@ class Log(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - def enable_paper_trail( + def write_message( self, *, + request: Union[ + operations.WriteMessageRequest, operations.WriteMessageRequestTypedDict + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.EnablePaperTrailResponse: - r"""Enabling Papertrail + ) -> operations.WriteMessageResponse: + r"""Logging a single-line message to the Plex Media Server log - This endpoint will enable all Plex Media Serverlogs to be sent to the Papertrail networked logging site for a period of time. + This endpoint will write a single-line log message, including a level and source to the main Plex Media Server log. + + Note: This endpoint responds to all HTTP verbs **except POST** but PUT is preferred + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -485,18 +215,36 @@ class Log(BaseSDK): base_url = server_url else: base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.WriteMessageRequest) + request = cast(operations.WriteMessageRequest, request) + req = self._build_request( - method="GET", - path="/log/networked", + method="PUT", + path="/log", base_url=base_url, url_variables=url_variables, - request=None, + request=request, request_body_required=False, request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, + _globals=operations.WriteMessageGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -513,35 +261,22 @@ class Log(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="enablePaperTrail", - oauth2_scopes=[], + operation_id="writeMessage", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "403", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "*"): - return operations.EnablePaperTrailResponse( + return operations.WriteMessageResponse( status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.EnablePaperTrailBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.EnablePaperTrailBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.EnablePaperTrailUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.EnablePaperTrailUnauthorized(response_data, http_res) - if utils.match_response(http_res, ["403", "4XX"], "*"): + if utils.match_response(http_res, "4XX", "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): @@ -550,19 +285,25 @@ class Log(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - async def enable_paper_trail_async( + async def write_message_async( self, *, + request: Union[ + operations.WriteMessageRequest, operations.WriteMessageRequestTypedDict + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.EnablePaperTrailResponse: - r"""Enabling Papertrail + ) -> operations.WriteMessageResponse: + r"""Logging a single-line message to the Plex Media Server log - This endpoint will enable all Plex Media Serverlogs to be sent to the Papertrail networked logging site for a period of time. + This endpoint will write a single-line log message, including a level and source to the main Plex Media Server log. + + Note: This endpoint responds to all HTTP verbs **except POST** but PUT is preferred + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -577,18 +318,36 @@ class Log(BaseSDK): base_url = server_url else: base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.WriteMessageRequest) + request = cast(operations.WriteMessageRequest, request) + req = self._build_request_async( - method="GET", - path="/log/networked", + method="PUT", + path="/log", base_url=base_url, url_variables=url_variables, - request=None, + request=request, request_body_required=False, request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, + _globals=operations.WriteMessageGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -605,34 +364,229 @@ class Log(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="enablePaperTrail", - oauth2_scopes=[], + operation_id="writeMessage", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "403", "4XX", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "*"): - return operations.EnablePaperTrailResponse( + return operations.WriteMessageResponse( status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.EnablePaperTrailBadRequestData, http_res + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def enable_papertrail( + self, + *, + request: Union[ + operations.EnablePapertrailRequest, + operations.EnablePapertrailRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.EnablePapertrailResponse: + r"""Enabling Papertrail + + This endpoint will enable all Plex Media Server logs to be sent to the Papertrail networked logging site for a period of time + + Note: This endpoint responds to all HTTP verbs but POST is preferred + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.EnablePapertrailRequest) + request = cast(operations.EnablePapertrailRequest, request) + + req = self._build_request( + method="POST", + path="/log/networked", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.EnablePapertrailGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="enablePapertrail", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.EnablePapertrailResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, ) - response_data.raw_response = http_res - raise errors.EnablePaperTrailBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.EnablePaperTrailUnauthorizedData, http_res + if utils.match_response(http_res, ["403", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def enable_papertrail_async( + self, + *, + request: Union[ + operations.EnablePapertrailRequest, + operations.EnablePapertrailRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.EnablePapertrailResponse: + r"""Enabling Papertrail + + This endpoint will enable all Plex Media Server logs to be sent to the Papertrail networked logging site for a period of time + + Note: This endpoint responds to all HTTP verbs but POST is preferred + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.EnablePapertrailRequest) + request = cast(operations.EnablePapertrailRequest, request) + + req = self._build_request_async( + method="POST", + path="/log/networked", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.EnablePapertrailGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="enablePapertrail", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.EnablePapertrailResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, ) - response_data.raw_response = http_res - raise errors.EnablePaperTrailUnauthorized(response_data, http_res) if utils.match_response(http_res, ["403", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) diff --git a/src/plex_api_client/media.py b/src/plex_api_client/media.py deleted file mode 100644 index 9dabf0f..0000000 --- a/src/plex_api_client/media.py +++ /dev/null @@ -1,1051 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from .basesdk import BaseSDK -from plex_api_client import utils -from plex_api_client._hooks import HookContext -from plex_api_client.models import errors, operations -from plex_api_client.types import BaseModel, OptionalNullable, UNSET -from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Mapping, Optional, Union, cast - - -class Media(BaseSDK): - r"""API Calls interacting with Plex Media Server Media""" - - def mark_played( - self, - *, - key: float, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.MarkPlayedResponse: - r"""Mark Media Played - - This will mark the provided media key as Played. - - :param key: The media key to mark as played - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.MarkPlayedRequest( - key=key, - ) - - req = self._build_request( - method="GET", - path="/:/scrobble", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="markPlayed", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.MarkPlayedResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.MarkPlayedBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.MarkPlayedBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.MarkPlayedUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.MarkPlayedUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def mark_played_async( - self, - *, - key: float, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.MarkPlayedResponse: - r"""Mark Media Played - - This will mark the provided media key as Played. - - :param key: The media key to mark as played - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.MarkPlayedRequest( - key=key, - ) - - req = self._build_request_async( - method="GET", - path="/:/scrobble", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="markPlayed", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.MarkPlayedResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.MarkPlayedBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.MarkPlayedBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.MarkPlayedUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.MarkPlayedUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def mark_unplayed( - self, - *, - key: float, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.MarkUnplayedResponse: - r"""Mark Media Unplayed - - This will mark the provided media key as Unplayed. - - :param key: The media key to mark as Unplayed - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.MarkUnplayedRequest( - key=key, - ) - - req = self._build_request( - method="GET", - path="/:/unscrobble", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="markUnplayed", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.MarkUnplayedResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.MarkUnplayedBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.MarkUnplayedBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.MarkUnplayedUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.MarkUnplayedUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def mark_unplayed_async( - self, - *, - key: float, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.MarkUnplayedResponse: - r"""Mark Media Unplayed - - This will mark the provided media key as Unplayed. - - :param key: The media key to mark as Unplayed - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.MarkUnplayedRequest( - key=key, - ) - - req = self._build_request_async( - method="GET", - path="/:/unscrobble", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="markUnplayed", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.MarkUnplayedResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.MarkUnplayedBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.MarkUnplayedBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.MarkUnplayedUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.MarkUnplayedUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def update_play_progress( - self, - *, - key: str, - time: float, - state: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.UpdatePlayProgressResponse: - r"""Update Media Play Progress - - This API command can be used to update the play progress of a media item. - - - :param key: the media key - :param time: The time, in milliseconds, used to set the media playback progress. - :param state: The playback state of the media item. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.UpdatePlayProgressRequest( - key=key, - time=time, - state=state, - ) - - req = self._build_request( - method="POST", - path="/:/progress", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="updatePlayProgress", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.UpdatePlayProgressResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.UpdatePlayProgressBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.UpdatePlayProgressBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UpdatePlayProgressUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.UpdatePlayProgressUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def update_play_progress_async( - self, - *, - key: str, - time: float, - state: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.UpdatePlayProgressResponse: - r"""Update Media Play Progress - - This API command can be used to update the play progress of a media item. - - - :param key: the media key - :param time: The time, in milliseconds, used to set the media playback progress. - :param state: The playback state of the media item. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.UpdatePlayProgressRequest( - key=key, - time=time, - state=state, - ) - - req = self._build_request_async( - method="POST", - path="/:/progress", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="updatePlayProgress", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.UpdatePlayProgressResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.UpdatePlayProgressBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.UpdatePlayProgressBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UpdatePlayProgressUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.UpdatePlayProgressUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_banner_image( - self, - *, - request: Union[ - operations.GetBannerImageRequest, operations.GetBannerImageRequestTypedDict - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetBannerImageResponse: - r"""Get Banner Image - - Gets the banner image of the media item - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetBannerImageRequest) - request = cast(operations.GetBannerImageRequest, request) - - req = self._build_request( - method="GET", - path="/library/metadata/{ratingKey}/banner", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="image/jpeg", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-banner-image", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - stream=True, - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "image/jpeg"): - return operations.GetBannerImageResponse( - response_stream=http_res, - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - headers=utils.get_response_headers(http_res.headers), - ) - if utils.match_response(http_res, "400", "application/json"): - http_res_text = utils.stream_to_text(http_res) - response_data = unmarshal_json_response( - errors.GetBannerImageBadRequestData, http_res, http_res_text - ) - response_data.raw_response = http_res - raise errors.GetBannerImageBadRequest( - response_data, http_res, http_res_text - ) - if utils.match_response(http_res, "401", "application/json"): - http_res_text = utils.stream_to_text(http_res) - response_data = unmarshal_json_response( - errors.GetBannerImageUnauthorizedData, http_res, http_res_text - ) - response_data.raw_response = http_res - raise errors.GetBannerImageUnauthorized( - response_data, http_res, http_res_text - ) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("Unexpected response received", http_res, http_res_text) - - async def get_banner_image_async( - self, - *, - request: Union[ - operations.GetBannerImageRequest, operations.GetBannerImageRequestTypedDict - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetBannerImageResponse: - r"""Get Banner Image - - Gets the banner image of the media item - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetBannerImageRequest) - request = cast(operations.GetBannerImageRequest, request) - - req = self._build_request_async( - method="GET", - path="/library/metadata/{ratingKey}/banner", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="image/jpeg", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-banner-image", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - stream=True, - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "image/jpeg"): - return operations.GetBannerImageResponse( - response_stream=http_res, - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - headers=utils.get_response_headers(http_res.headers), - ) - if utils.match_response(http_res, "400", "application/json"): - http_res_text = await utils.stream_to_text_async(http_res) - response_data = unmarshal_json_response( - errors.GetBannerImageBadRequestData, http_res, http_res_text - ) - response_data.raw_response = http_res - raise errors.GetBannerImageBadRequest( - response_data, http_res, http_res_text - ) - if utils.match_response(http_res, "401", "application/json"): - http_res_text = await utils.stream_to_text_async(http_res) - response_data = unmarshal_json_response( - errors.GetBannerImageUnauthorizedData, http_res, http_res_text - ) - response_data.raw_response = http_res - raise errors.GetBannerImageUnauthorized( - response_data, http_res, http_res_text - ) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("Unexpected response received", http_res, http_res_text) - - def get_thumb_image( - self, - *, - request: Union[ - operations.GetThumbImageRequest, operations.GetThumbImageRequestTypedDict - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetThumbImageResponse: - r"""Get Thumb Image - - Gets the thumbnail image of the media item - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetThumbImageRequest) - request = cast(operations.GetThumbImageRequest, request) - - req = self._build_request( - method="GET", - path="/library/metadata/{ratingKey}/thumb", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="image/jpeg", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-thumb-image", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - stream=True, - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "image/jpeg"): - return operations.GetThumbImageResponse( - response_stream=http_res, - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - headers=utils.get_response_headers(http_res.headers), - ) - if utils.match_response(http_res, "400", "application/json"): - http_res_text = utils.stream_to_text(http_res) - response_data = unmarshal_json_response( - errors.GetThumbImageBadRequestData, http_res, http_res_text - ) - response_data.raw_response = http_res - raise errors.GetThumbImageBadRequest(response_data, http_res, http_res_text) - if utils.match_response(http_res, "401", "application/json"): - http_res_text = utils.stream_to_text(http_res) - response_data = unmarshal_json_response( - errors.GetThumbImageUnauthorizedData, http_res, http_res_text - ) - response_data.raw_response = http_res - raise errors.GetThumbImageUnauthorized( - response_data, http_res, http_res_text - ) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("Unexpected response received", http_res, http_res_text) - - async def get_thumb_image_async( - self, - *, - request: Union[ - operations.GetThumbImageRequest, operations.GetThumbImageRequestTypedDict - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetThumbImageResponse: - r"""Get Thumb Image - - Gets the thumbnail image of the media item - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetThumbImageRequest) - request = cast(operations.GetThumbImageRequest, request) - - req = self._build_request_async( - method="GET", - path="/library/metadata/{ratingKey}/thumb", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="image/jpeg", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-thumb-image", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - stream=True, - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "image/jpeg"): - return operations.GetThumbImageResponse( - response_stream=http_res, - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - headers=utils.get_response_headers(http_res.headers), - ) - if utils.match_response(http_res, "400", "application/json"): - http_res_text = await utils.stream_to_text_async(http_res) - response_data = unmarshal_json_response( - errors.GetThumbImageBadRequestData, http_res, http_res_text - ) - response_data.raw_response = http_res - raise errors.GetThumbImageBadRequest(response_data, http_res, http_res_text) - if utils.match_response(http_res, "401", "application/json"): - http_res_text = await utils.stream_to_text_async(http_res) - response_data = unmarshal_json_response( - errors.GetThumbImageUnauthorizedData, http_res, http_res_text - ) - response_data.raw_response = http_res - raise errors.GetThumbImageUnauthorized( - response_data, http_res, http_res_text - ) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("Unexpected response received", http_res, http_res_text) diff --git a/src/plex_api_client/models/components/__init__.py b/src/plex_api_client/models/components/__init__.py index 5470c9e..b8ead50 100644 --- a/src/plex_api_client/models/components/__init__.py +++ b/src/plex_api_client/models/components/__init__.py @@ -6,13 +6,581 @@ import builtins import sys if TYPE_CHECKING: + from .accepts import Accepts + from .advancedsubtitles import AdvancedSubtitles + from .boolint import BoolInt + from .channel import Channel, ChannelTypedDict + from .channelmapping import ChannelMapping, ChannelMappingTypedDict + from .composite import Composite, CompositeMedia, CompositeTypedDict, Crop, Format + from .device import Device, DeviceTypedDict + from .directory import Directory, DirectoryTypedDict, Pivot, PivotTypedDict + from .dvrrequesthandler_slash_get_responses_200 import ( + Dvr, + DvrRequestHandlerSlashGetResponses200, + DvrRequestHandlerSlashGetResponses200MediaContainer, + DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer, + DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainerTypedDict, + DvrRequestHandlerSlashGetResponses200MediaContainerTypedDict, + DvrRequestHandlerSlashGetResponses200TypedDict, + DvrTypedDict, + ) + from .filter_ import Filter, FilterPivot, FilterPivotTypedDict, FilterTypedDict + from .get_responses_200 import ( + GetResponses200, + GetResponses200Hub, + GetResponses200HubTypedDict, + GetResponses200MediaContainer, + GetResponses200MediaContainerTypedDict, + GetResponses200TypedDict, + HomeVisibility, + RecommendationsVisibility, + ) + from .historyall_get_responses_200 import ( + HistoryAllGetResponses200, + HistoryAllGetResponses200MediaContainer, + HistoryAllGetResponses200MediaContainerTypedDict, + HistoryAllGetResponses200Metadata, + HistoryAllGetResponses200MetadataTypedDict, + HistoryAllGetResponses200TypedDict, + ) + from .hub import Hub, HubTypedDict + from .image import Image, ImageType, ImageTypedDict + from .items import Items, ItemsTypedDict + from .librarysection import ( + LibrarySection, + LibrarySectionLocation, + LibrarySectionLocationTypedDict, + LibrarySectionTypedDict, + ) + from .lineup import Lineup, LineupType, LineupTypedDict + from .location import Location + from .media import Media, MediaTypedDict + from .mediacontainer import MediaContainer, MediaContainerTypedDict + from .mediacontainerwithartwork import ( + MediaContainerWithArtwork, + MediaContainerWithArtworkMediaContainer, + MediaContainerWithArtworkMediaContainerTypedDict, + MediaContainerWithArtworkMetadata, + MediaContainerWithArtworkMetadataTypedDict, + MediaContainerWithArtworkType, + MediaContainerWithArtworkTypedDict, + ) + from .mediacontainerwithdecision import ( + Decision, + MediaContainerWithDecision, + MediaContainerWithDecisionDecision, + MediaContainerWithDecisionLocation, + MediaContainerWithDecisionMedia, + MediaContainerWithDecisionMediaContainer, + MediaContainerWithDecisionMediaContainerTypedDict, + MediaContainerWithDecisionMediaTypedDict, + MediaContainerWithDecisionMetadata, + MediaContainerWithDecisionMetadataTypedDict, + MediaContainerWithDecisionPart, + MediaContainerWithDecisionPartTypedDict, + MediaContainerWithDecisionStream, + MediaContainerWithDecisionStreamTypedDict, + MediaContainerWithDecisionTypedDict, + ) + from .mediacontainerwithdevice import ( + MediaContainerWithDevice, + MediaContainerWithDeviceDevice, + MediaContainerWithDeviceDeviceTypedDict, + MediaContainerWithDeviceMediaContainer, + MediaContainerWithDeviceMediaContainerTypedDict, + MediaContainerWithDeviceTypedDict, + ) + from .mediacontainerwithdirectory import ( + MediaContainerWithDirectory, + MediaContainerWithDirectoryMediaContainer, + MediaContainerWithDirectoryMediaContainerTypedDict, + MediaContainerWithDirectoryTypedDict, + ) + from .mediacontainerwithhubs import ( + MediaContainerWithHubs, + MediaContainerWithHubsMediaContainer, + MediaContainerWithHubsMediaContainerTypedDict, + MediaContainerWithHubsTypedDict, + ) + from .mediacontainerwithlineup import ( + MediaContainerWithLineup, + MediaContainerWithLineupMediaContainer, + MediaContainerWithLineupMediaContainerTypedDict, + MediaContainerWithLineupTypedDict, + ) + from .mediacontainerwithmetadata import ( + MediaContainerWithMetadata, + MediaContainerWithMetadataMediaContainer, + MediaContainerWithMetadataMediaContainerTypedDict, + MediaContainerWithMetadataTypedDict, + ) + from .mediacontainerwithnestedmetadata import ( + MediaContainerWithNestedMetadata, + MediaContainerWithNestedMetadataMediaContainer, + MediaContainerWithNestedMetadataMediaContainerTypedDict, + MediaContainerWithNestedMetadataTypedDict, + MetadataItem, + MetadataItemTypedDict, + ) + from .mediacontainerwithplaylistmetadata import ( + MediaContainerWithPlaylistMetadata, + MediaContainerWithPlaylistMetadataMediaContainer, + MediaContainerWithPlaylistMetadataMediaContainerTypedDict, + MediaContainerWithPlaylistMetadataMetadata, + MediaContainerWithPlaylistMetadataMetadataTypedDict, + MediaContainerWithPlaylistMetadataTypedDict, + PlaylistType, + ) + from .mediacontainerwithsettings import ( + MediaContainerWithSettings, + MediaContainerWithSettingsMediaContainer, + MediaContainerWithSettingsMediaContainerTypedDict, + MediaContainerWithSettingsTypedDict, + ) + from .mediacontainerwithsubscription import ( + MediaContainerWithSubscription, + MediaContainerWithSubscriptionMediaContainer, + MediaContainerWithSubscriptionMediaContainerTypedDict, + MediaContainerWithSubscriptionTypedDict, + ) + from .mediagraboperation import ( + MediaGrabOperation, + MediaGrabOperationTypedDict, + Status, + ) + from .mediaquery import MediaQuery, MediaQueryTypedDict + from .mediasubscription import ( + AiringsType, + MediaSubscription, + MediaSubscriptionTypedDict, + ) + from .metadata import Metadata, MetadataTypedDict + from .part import Part, PartTypedDict + from .player import Player, PlayerTypedDict + from .post_responses_200 import ( + PostResponses200, + PostResponses200MediaContainer, + PostResponses200MediaContainerTypedDict, + PostResponses200Type, + PostResponses200TypedDict, + ) + from .protocol import Protocol + from .requesthandler_slash_get_responses_200 import ( + RequestHandlerSlashGetResponses200, + RequestHandlerSlashGetResponses200Directory, + RequestHandlerSlashGetResponses200DirectoryTypedDict, + RequestHandlerSlashGetResponses200MediaContainer, + RequestHandlerSlashGetResponses200MediaContainerTypedDict, + RequestHandlerSlashGetResponses200TypedDict, + ) from .security import Security, SecurityTypedDict + from .session import Session, SessionLocation, SessionTypedDict + from .setting import ( + Default, + DefaultTypedDict, + Setting, + SettingTypedDict, + Type, + Value, + ValueTypedDict, + ) + from .slash_get_responses_200 import ( + SlashGetResponses200, + SlashGetResponses200MediaContainer, + SlashGetResponses200MediaContainerTypedDict, + SlashGetResponses200TypedDict, + ) + from .sort import ( + DefaultDirection, + Sort, + SortDefault, + SortPivot, + SortPivotTypedDict, + SortTypedDict, + ) + from .stream import Stream, StreamTypedDict + from .subtitles import Subtitles + from .tag import Tag, TagTypedDict + from .transcodesession import TranscodeSession, TranscodeSessionTypedDict + from .transcodetype import TranscodeType + from .user import User, UserTypedDict -__all__ = ["Security", "SecurityTypedDict"] +__all__ = [ + "Accepts", + "AdvancedSubtitles", + "AiringsType", + "BoolInt", + "Channel", + "ChannelMapping", + "ChannelMappingTypedDict", + "ChannelTypedDict", + "Composite", + "CompositeMedia", + "CompositeTypedDict", + "Crop", + "Decision", + "Default", + "DefaultDirection", + "DefaultTypedDict", + "Device", + "DeviceTypedDict", + "Directory", + "DirectoryTypedDict", + "Dvr", + "DvrRequestHandlerSlashGetResponses200", + "DvrRequestHandlerSlashGetResponses200MediaContainer", + "DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer", + "DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainerTypedDict", + "DvrRequestHandlerSlashGetResponses200MediaContainerTypedDict", + "DvrRequestHandlerSlashGetResponses200TypedDict", + "DvrTypedDict", + "Filter", + "FilterPivot", + "FilterPivotTypedDict", + "FilterTypedDict", + "Format", + "GetResponses200", + "GetResponses200Hub", + "GetResponses200HubTypedDict", + "GetResponses200MediaContainer", + "GetResponses200MediaContainerTypedDict", + "GetResponses200TypedDict", + "HistoryAllGetResponses200", + "HistoryAllGetResponses200MediaContainer", + "HistoryAllGetResponses200MediaContainerTypedDict", + "HistoryAllGetResponses200Metadata", + "HistoryAllGetResponses200MetadataTypedDict", + "HistoryAllGetResponses200TypedDict", + "HomeVisibility", + "Hub", + "HubTypedDict", + "Image", + "ImageType", + "ImageTypedDict", + "Items", + "ItemsTypedDict", + "LibrarySection", + "LibrarySectionLocation", + "LibrarySectionLocationTypedDict", + "LibrarySectionTypedDict", + "Lineup", + "LineupType", + "LineupTypedDict", + "Location", + "Media", + "MediaContainer", + "MediaContainerTypedDict", + "MediaContainerWithArtwork", + "MediaContainerWithArtworkMediaContainer", + "MediaContainerWithArtworkMediaContainerTypedDict", + "MediaContainerWithArtworkMetadata", + "MediaContainerWithArtworkMetadataTypedDict", + "MediaContainerWithArtworkType", + "MediaContainerWithArtworkTypedDict", + "MediaContainerWithDecision", + "MediaContainerWithDecisionDecision", + "MediaContainerWithDecisionLocation", + "MediaContainerWithDecisionMedia", + "MediaContainerWithDecisionMediaContainer", + "MediaContainerWithDecisionMediaContainerTypedDict", + "MediaContainerWithDecisionMediaTypedDict", + "MediaContainerWithDecisionMetadata", + "MediaContainerWithDecisionMetadataTypedDict", + "MediaContainerWithDecisionPart", + "MediaContainerWithDecisionPartTypedDict", + "MediaContainerWithDecisionStream", + "MediaContainerWithDecisionStreamTypedDict", + "MediaContainerWithDecisionTypedDict", + "MediaContainerWithDevice", + "MediaContainerWithDeviceDevice", + "MediaContainerWithDeviceDeviceTypedDict", + "MediaContainerWithDeviceMediaContainer", + "MediaContainerWithDeviceMediaContainerTypedDict", + "MediaContainerWithDeviceTypedDict", + "MediaContainerWithDirectory", + "MediaContainerWithDirectoryMediaContainer", + "MediaContainerWithDirectoryMediaContainerTypedDict", + "MediaContainerWithDirectoryTypedDict", + "MediaContainerWithHubs", + "MediaContainerWithHubsMediaContainer", + "MediaContainerWithHubsMediaContainerTypedDict", + "MediaContainerWithHubsTypedDict", + "MediaContainerWithLineup", + "MediaContainerWithLineupMediaContainer", + "MediaContainerWithLineupMediaContainerTypedDict", + "MediaContainerWithLineupTypedDict", + "MediaContainerWithMetadata", + "MediaContainerWithMetadataMediaContainer", + "MediaContainerWithMetadataMediaContainerTypedDict", + "MediaContainerWithMetadataTypedDict", + "MediaContainerWithNestedMetadata", + "MediaContainerWithNestedMetadataMediaContainer", + "MediaContainerWithNestedMetadataMediaContainerTypedDict", + "MediaContainerWithNestedMetadataTypedDict", + "MediaContainerWithPlaylistMetadata", + "MediaContainerWithPlaylistMetadataMediaContainer", + "MediaContainerWithPlaylistMetadataMediaContainerTypedDict", + "MediaContainerWithPlaylistMetadataMetadata", + "MediaContainerWithPlaylistMetadataMetadataTypedDict", + "MediaContainerWithPlaylistMetadataTypedDict", + "MediaContainerWithSettings", + "MediaContainerWithSettingsMediaContainer", + "MediaContainerWithSettingsMediaContainerTypedDict", + "MediaContainerWithSettingsTypedDict", + "MediaContainerWithSubscription", + "MediaContainerWithSubscriptionMediaContainer", + "MediaContainerWithSubscriptionMediaContainerTypedDict", + "MediaContainerWithSubscriptionTypedDict", + "MediaGrabOperation", + "MediaGrabOperationTypedDict", + "MediaQuery", + "MediaQueryTypedDict", + "MediaSubscription", + "MediaSubscriptionTypedDict", + "MediaTypedDict", + "Metadata", + "MetadataItem", + "MetadataItemTypedDict", + "MetadataTypedDict", + "Part", + "PartTypedDict", + "Pivot", + "PivotTypedDict", + "Player", + "PlayerTypedDict", + "PlaylistType", + "PostResponses200", + "PostResponses200MediaContainer", + "PostResponses200MediaContainerTypedDict", + "PostResponses200Type", + "PostResponses200TypedDict", + "Protocol", + "RecommendationsVisibility", + "RequestHandlerSlashGetResponses200", + "RequestHandlerSlashGetResponses200Directory", + "RequestHandlerSlashGetResponses200DirectoryTypedDict", + "RequestHandlerSlashGetResponses200MediaContainer", + "RequestHandlerSlashGetResponses200MediaContainerTypedDict", + "RequestHandlerSlashGetResponses200TypedDict", + "Security", + "SecurityTypedDict", + "Session", + "SessionLocation", + "SessionTypedDict", + "Setting", + "SettingTypedDict", + "SlashGetResponses200", + "SlashGetResponses200MediaContainer", + "SlashGetResponses200MediaContainerTypedDict", + "SlashGetResponses200TypedDict", + "Sort", + "SortDefault", + "SortPivot", + "SortPivotTypedDict", + "SortTypedDict", + "Status", + "Stream", + "StreamTypedDict", + "Subtitles", + "Tag", + "TagTypedDict", + "TranscodeSession", + "TranscodeSessionTypedDict", + "TranscodeType", + "Type", + "User", + "UserTypedDict", + "Value", + "ValueTypedDict", +] _dynamic_imports: dict[str, str] = { + "Accepts": ".accepts", + "AdvancedSubtitles": ".advancedsubtitles", + "BoolInt": ".boolint", + "Channel": ".channel", + "ChannelTypedDict": ".channel", + "ChannelMapping": ".channelmapping", + "ChannelMappingTypedDict": ".channelmapping", + "Composite": ".composite", + "CompositeMedia": ".composite", + "CompositeTypedDict": ".composite", + "Crop": ".composite", + "Format": ".composite", + "Device": ".device", + "DeviceTypedDict": ".device", + "Directory": ".directory", + "DirectoryTypedDict": ".directory", + "Pivot": ".directory", + "PivotTypedDict": ".directory", + "Dvr": ".dvrrequesthandler_slash_get_responses_200", + "DvrRequestHandlerSlashGetResponses200": ".dvrrequesthandler_slash_get_responses_200", + "DvrRequestHandlerSlashGetResponses200MediaContainer": ".dvrrequesthandler_slash_get_responses_200", + "DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer": ".dvrrequesthandler_slash_get_responses_200", + "DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainerTypedDict": ".dvrrequesthandler_slash_get_responses_200", + "DvrRequestHandlerSlashGetResponses200MediaContainerTypedDict": ".dvrrequesthandler_slash_get_responses_200", + "DvrRequestHandlerSlashGetResponses200TypedDict": ".dvrrequesthandler_slash_get_responses_200", + "DvrTypedDict": ".dvrrequesthandler_slash_get_responses_200", + "Filter": ".filter_", + "FilterPivot": ".filter_", + "FilterPivotTypedDict": ".filter_", + "FilterTypedDict": ".filter_", + "GetResponses200": ".get_responses_200", + "GetResponses200Hub": ".get_responses_200", + "GetResponses200HubTypedDict": ".get_responses_200", + "GetResponses200MediaContainer": ".get_responses_200", + "GetResponses200MediaContainerTypedDict": ".get_responses_200", + "GetResponses200TypedDict": ".get_responses_200", + "HomeVisibility": ".get_responses_200", + "RecommendationsVisibility": ".get_responses_200", + "HistoryAllGetResponses200": ".historyall_get_responses_200", + "HistoryAllGetResponses200MediaContainer": ".historyall_get_responses_200", + "HistoryAllGetResponses200MediaContainerTypedDict": ".historyall_get_responses_200", + "HistoryAllGetResponses200Metadata": ".historyall_get_responses_200", + "HistoryAllGetResponses200MetadataTypedDict": ".historyall_get_responses_200", + "HistoryAllGetResponses200TypedDict": ".historyall_get_responses_200", + "Hub": ".hub", + "HubTypedDict": ".hub", + "Image": ".image", + "ImageType": ".image", + "ImageTypedDict": ".image", + "Items": ".items", + "ItemsTypedDict": ".items", + "LibrarySection": ".librarysection", + "LibrarySectionLocation": ".librarysection", + "LibrarySectionLocationTypedDict": ".librarysection", + "LibrarySectionTypedDict": ".librarysection", + "Lineup": ".lineup", + "LineupType": ".lineup", + "LineupTypedDict": ".lineup", + "Location": ".location", + "Media": ".media", + "MediaTypedDict": ".media", + "MediaContainer": ".mediacontainer", + "MediaContainerTypedDict": ".mediacontainer", + "MediaContainerWithArtwork": ".mediacontainerwithartwork", + "MediaContainerWithArtworkMediaContainer": ".mediacontainerwithartwork", + "MediaContainerWithArtworkMediaContainerTypedDict": ".mediacontainerwithartwork", + "MediaContainerWithArtworkMetadata": ".mediacontainerwithartwork", + "MediaContainerWithArtworkMetadataTypedDict": ".mediacontainerwithartwork", + "MediaContainerWithArtworkType": ".mediacontainerwithartwork", + "MediaContainerWithArtworkTypedDict": ".mediacontainerwithartwork", + "Decision": ".mediacontainerwithdecision", + "MediaContainerWithDecision": ".mediacontainerwithdecision", + "MediaContainerWithDecisionDecision": ".mediacontainerwithdecision", + "MediaContainerWithDecisionLocation": ".mediacontainerwithdecision", + "MediaContainerWithDecisionMedia": ".mediacontainerwithdecision", + "MediaContainerWithDecisionMediaContainer": ".mediacontainerwithdecision", + "MediaContainerWithDecisionMediaContainerTypedDict": ".mediacontainerwithdecision", + "MediaContainerWithDecisionMediaTypedDict": ".mediacontainerwithdecision", + "MediaContainerWithDecisionMetadata": ".mediacontainerwithdecision", + "MediaContainerWithDecisionMetadataTypedDict": ".mediacontainerwithdecision", + "MediaContainerWithDecisionPart": ".mediacontainerwithdecision", + "MediaContainerWithDecisionPartTypedDict": ".mediacontainerwithdecision", + "MediaContainerWithDecisionStream": ".mediacontainerwithdecision", + "MediaContainerWithDecisionStreamTypedDict": ".mediacontainerwithdecision", + "MediaContainerWithDecisionTypedDict": ".mediacontainerwithdecision", + "MediaContainerWithDevice": ".mediacontainerwithdevice", + "MediaContainerWithDeviceDevice": ".mediacontainerwithdevice", + "MediaContainerWithDeviceDeviceTypedDict": ".mediacontainerwithdevice", + "MediaContainerWithDeviceMediaContainer": ".mediacontainerwithdevice", + "MediaContainerWithDeviceMediaContainerTypedDict": ".mediacontainerwithdevice", + "MediaContainerWithDeviceTypedDict": ".mediacontainerwithdevice", + "MediaContainerWithDirectory": ".mediacontainerwithdirectory", + "MediaContainerWithDirectoryMediaContainer": ".mediacontainerwithdirectory", + "MediaContainerWithDirectoryMediaContainerTypedDict": ".mediacontainerwithdirectory", + "MediaContainerWithDirectoryTypedDict": ".mediacontainerwithdirectory", + "MediaContainerWithHubs": ".mediacontainerwithhubs", + "MediaContainerWithHubsMediaContainer": ".mediacontainerwithhubs", + "MediaContainerWithHubsMediaContainerTypedDict": ".mediacontainerwithhubs", + "MediaContainerWithHubsTypedDict": ".mediacontainerwithhubs", + "MediaContainerWithLineup": ".mediacontainerwithlineup", + "MediaContainerWithLineupMediaContainer": ".mediacontainerwithlineup", + "MediaContainerWithLineupMediaContainerTypedDict": ".mediacontainerwithlineup", + "MediaContainerWithLineupTypedDict": ".mediacontainerwithlineup", + "MediaContainerWithMetadata": ".mediacontainerwithmetadata", + "MediaContainerWithMetadataMediaContainer": ".mediacontainerwithmetadata", + "MediaContainerWithMetadataMediaContainerTypedDict": ".mediacontainerwithmetadata", + "MediaContainerWithMetadataTypedDict": ".mediacontainerwithmetadata", + "MediaContainerWithNestedMetadata": ".mediacontainerwithnestedmetadata", + "MediaContainerWithNestedMetadataMediaContainer": ".mediacontainerwithnestedmetadata", + "MediaContainerWithNestedMetadataMediaContainerTypedDict": ".mediacontainerwithnestedmetadata", + "MediaContainerWithNestedMetadataTypedDict": ".mediacontainerwithnestedmetadata", + "MetadataItem": ".mediacontainerwithnestedmetadata", + "MetadataItemTypedDict": ".mediacontainerwithnestedmetadata", + "MediaContainerWithPlaylistMetadata": ".mediacontainerwithplaylistmetadata", + "MediaContainerWithPlaylistMetadataMediaContainer": ".mediacontainerwithplaylistmetadata", + "MediaContainerWithPlaylistMetadataMediaContainerTypedDict": ".mediacontainerwithplaylistmetadata", + "MediaContainerWithPlaylistMetadataMetadata": ".mediacontainerwithplaylistmetadata", + "MediaContainerWithPlaylistMetadataMetadataTypedDict": ".mediacontainerwithplaylistmetadata", + "MediaContainerWithPlaylistMetadataTypedDict": ".mediacontainerwithplaylistmetadata", + "PlaylistType": ".mediacontainerwithplaylistmetadata", + "MediaContainerWithSettings": ".mediacontainerwithsettings", + "MediaContainerWithSettingsMediaContainer": ".mediacontainerwithsettings", + "MediaContainerWithSettingsMediaContainerTypedDict": ".mediacontainerwithsettings", + "MediaContainerWithSettingsTypedDict": ".mediacontainerwithsettings", + "MediaContainerWithSubscription": ".mediacontainerwithsubscription", + "MediaContainerWithSubscriptionMediaContainer": ".mediacontainerwithsubscription", + "MediaContainerWithSubscriptionMediaContainerTypedDict": ".mediacontainerwithsubscription", + "MediaContainerWithSubscriptionTypedDict": ".mediacontainerwithsubscription", + "MediaGrabOperation": ".mediagraboperation", + "MediaGrabOperationTypedDict": ".mediagraboperation", + "Status": ".mediagraboperation", + "MediaQuery": ".mediaquery", + "MediaQueryTypedDict": ".mediaquery", + "AiringsType": ".mediasubscription", + "MediaSubscription": ".mediasubscription", + "MediaSubscriptionTypedDict": ".mediasubscription", + "Metadata": ".metadata", + "MetadataTypedDict": ".metadata", + "Part": ".part", + "PartTypedDict": ".part", + "Player": ".player", + "PlayerTypedDict": ".player", + "PostResponses200": ".post_responses_200", + "PostResponses200MediaContainer": ".post_responses_200", + "PostResponses200MediaContainerTypedDict": ".post_responses_200", + "PostResponses200Type": ".post_responses_200", + "PostResponses200TypedDict": ".post_responses_200", + "Protocol": ".protocol", + "RequestHandlerSlashGetResponses200": ".requesthandler_slash_get_responses_200", + "RequestHandlerSlashGetResponses200Directory": ".requesthandler_slash_get_responses_200", + "RequestHandlerSlashGetResponses200DirectoryTypedDict": ".requesthandler_slash_get_responses_200", + "RequestHandlerSlashGetResponses200MediaContainer": ".requesthandler_slash_get_responses_200", + "RequestHandlerSlashGetResponses200MediaContainerTypedDict": ".requesthandler_slash_get_responses_200", + "RequestHandlerSlashGetResponses200TypedDict": ".requesthandler_slash_get_responses_200", "Security": ".security", "SecurityTypedDict": ".security", + "Session": ".session", + "SessionLocation": ".session", + "SessionTypedDict": ".session", + "Default": ".setting", + "DefaultTypedDict": ".setting", + "Setting": ".setting", + "SettingTypedDict": ".setting", + "Type": ".setting", + "Value": ".setting", + "ValueTypedDict": ".setting", + "SlashGetResponses200": ".slash_get_responses_200", + "SlashGetResponses200MediaContainer": ".slash_get_responses_200", + "SlashGetResponses200MediaContainerTypedDict": ".slash_get_responses_200", + "SlashGetResponses200TypedDict": ".slash_get_responses_200", + "DefaultDirection": ".sort", + "Sort": ".sort", + "SortDefault": ".sort", + "SortPivot": ".sort", + "SortPivotTypedDict": ".sort", + "SortTypedDict": ".sort", + "Stream": ".stream", + "StreamTypedDict": ".stream", + "Subtitles": ".subtitles", + "Tag": ".tag", + "TagTypedDict": ".tag", + "TranscodeSession": ".transcodesession", + "TranscodeSessionTypedDict": ".transcodesession", + "TranscodeType": ".transcodetype", + "User": ".user", + "UserTypedDict": ".user", } diff --git a/src/plex_api_client/models/components/accepts.py b/src/plex_api_client/models/components/accepts.py new file mode 100644 index 0000000..7a25558 --- /dev/null +++ b/src/plex_api_client/models/components/accepts.py @@ -0,0 +1,9 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum + + +class Accepts(str, Enum): + APPLICATION_JSON = "application/json" + APPLICATION_XML = "application/xml" diff --git a/src/plex_api_client/models/components/advancedsubtitles.py b/src/plex_api_client/models/components/advancedsubtitles.py new file mode 100644 index 0000000..388011e --- /dev/null +++ b/src/plex_api_client/models/components/advancedsubtitles.py @@ -0,0 +1,10 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum + + +class AdvancedSubtitles(str, Enum): + BURN = "burn" + TEXT = "text" + UNKNOWN = "unknown" diff --git a/src/plex_api_client/models/components/boolint.py b/src/plex_api_client/models/components/boolint.py new file mode 100644 index 0000000..e195e87 --- /dev/null +++ b/src/plex_api_client/models/components/boolint.py @@ -0,0 +1,9 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum + + +class BoolInt(int, Enum): + ZERO = 0 + ONE = 1 diff --git a/src/plex_api_client/models/components/channel.py b/src/plex_api_client/models/components/channel.py new file mode 100644 index 0000000..8490536 --- /dev/null +++ b/src/plex_api_client/models/components/channel.py @@ -0,0 +1,36 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from plex_api_client.types import BaseModel +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ChannelTypedDict(TypedDict): + title: NotRequired[str] + call_sign: NotRequired[str] + channel_vcn: NotRequired[str] + hd: NotRequired[bool] + identifier: NotRequired[str] + key: NotRequired[str] + language: NotRequired[str] + thumb: NotRequired[str] + + +class Channel(BaseModel): + title: Optional[str] = None + + call_sign: Annotated[Optional[str], pydantic.Field(alias="callSign")] = None + + channel_vcn: Annotated[Optional[str], pydantic.Field(alias="channelVcn")] = None + + hd: Optional[bool] = None + + identifier: Optional[str] = None + + key: Optional[str] = None + + language: Optional[str] = None + + thumb: Optional[str] = None diff --git a/src/plex_api_client/models/components/channelmapping.py b/src/plex_api_client/models/components/channelmapping.py new file mode 100644 index 0000000..88da542 --- /dev/null +++ b/src/plex_api_client/models/components/channelmapping.py @@ -0,0 +1,28 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from plex_api_client.types import BaseModel +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ChannelMappingTypedDict(TypedDict): + channel_key: NotRequired[str] + device_identifier: NotRequired[str] + enabled: NotRequired[str] + lineup_identifier: NotRequired[str] + + +class ChannelMapping(BaseModel): + channel_key: Annotated[Optional[str], pydantic.Field(alias="channelKey")] = None + + device_identifier: Annotated[ + Optional[str], pydantic.Field(alias="deviceIdentifier") + ] = None + + enabled: Optional[str] = None + + lineup_identifier: Annotated[ + Optional[str], pydantic.Field(alias="lineupIdentifier") + ] = None diff --git a/src/plex_api_client/models/components/composite.py b/src/plex_api_client/models/components/composite.py new file mode 100644 index 0000000..cb0bf77 --- /dev/null +++ b/src/plex_api_client/models/components/composite.py @@ -0,0 +1,97 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class Format(str, Enum): + r"""The image type""" + + JPG = "jpg" + PNG = "png" + + +class Crop(str, Enum): + r"""Where to crop source images to fit into composite image proportions""" + + CENTER = "center" + TOP = "top" + + +class CompositeMedia(str, Enum): + r"""The default image type to use as the sources""" + + THUMB = "thumb" + ART = "art" + BANNER = "banner" + + +class CompositeTypedDict(TypedDict): + type: NotRequired[int] + r"""Limit composite to specified metadata types""" + format_: NotRequired[Format] + r"""The image type""" + background_color: NotRequired[str] + r"""6 character hex RGB value for background color for image""" + border: NotRequired[int] + r"""The width of the intra-image border""" + cols: NotRequired[int] + r"""Number of columns to construct in the composite image""" + crop: NotRequired[Crop] + r"""Where to crop source images to fit into composite image proportions""" + height: NotRequired[int] + r"""The height of the image""" + media: NotRequired[CompositeMedia] + r"""The default image type to use as the sources""" + repeat: NotRequired[bool] + r"""Allow repetion of images if there are not enough source images to fill grid""" + rows: NotRequired[int] + r"""Number of rows to construct in the composite image""" + width: NotRequired[int] + r"""The width of the image""" + + +class Composite(BaseModel): + type: Annotated[Optional[int], FieldMetadata(query=True)] = None + r"""Limit composite to specified metadata types""" + + format_: Annotated[ + Optional[Format], pydantic.Field(alias="format"), FieldMetadata(query=True) + ] = None + r"""The image type""" + + background_color: Annotated[ + Optional[str], + pydantic.Field(alias="backgroundColor"), + FieldMetadata(query=True), + ] = None + r"""6 character hex RGB value for background color for image""" + + border: Annotated[Optional[int], FieldMetadata(query=True)] = None + r"""The width of the intra-image border""" + + cols: Annotated[Optional[int], FieldMetadata(query=True)] = None + r"""Number of columns to construct in the composite image""" + + crop: Annotated[Optional[Crop], FieldMetadata(query=True)] = None + r"""Where to crop source images to fit into composite image proportions""" + + height: Annotated[Optional[int], FieldMetadata(query=True)] = None + r"""The height of the image""" + + media: Annotated[Optional[CompositeMedia], FieldMetadata(query=True)] = None + r"""The default image type to use as the sources""" + + repeat: Annotated[Optional[bool], FieldMetadata(query=True)] = None + r"""Allow repetion of images if there are not enough source images to fill grid""" + + rows: Annotated[Optional[int], FieldMetadata(query=True)] = None + r"""Number of rows to construct in the composite image""" + + width: Annotated[Optional[int], FieldMetadata(query=True)] = None + r"""The width of the image""" diff --git a/src/plex_api_client/models/components/device.py b/src/plex_api_client/models/components/device.py new file mode 100644 index 0000000..fdca690 --- /dev/null +++ b/src/plex_api_client/models/components/device.py @@ -0,0 +1,54 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .channelmapping import ChannelMapping, ChannelMappingTypedDict +from plex_api_client.types import BaseModel +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeviceTypedDict(TypedDict): + channel_mapping: NotRequired[List[ChannelMappingTypedDict]] + key: NotRequired[str] + last_seen_at: NotRequired[int] + make: NotRequired[str] + model: NotRequired[str] + model_number: NotRequired[str] + protocol: NotRequired[str] + sources: NotRequired[str] + state: NotRequired[str] + status: NotRequired[str] + tuners: NotRequired[str] + uri: NotRequired[str] + uuid: NotRequired[str] + + +class Device(BaseModel): + channel_mapping: Annotated[ + Optional[List[ChannelMapping]], pydantic.Field(alias="ChannelMapping") + ] = None + + key: Optional[str] = None + + last_seen_at: Annotated[Optional[int], pydantic.Field(alias="lastSeenAt")] = None + + make: Optional[str] = None + + model: Optional[str] = None + + model_number: Annotated[Optional[str], pydantic.Field(alias="modelNumber")] = None + + protocol: Optional[str] = None + + sources: Optional[str] = None + + state: Optional[str] = None + + status: Optional[str] = None + + tuners: Optional[str] = None + + uri: Optional[str] = None + + uuid: Optional[str] = None diff --git a/src/plex_api_client/models/components/directory.py b/src/plex_api_client/models/components/directory.py new file mode 100644 index 0000000..7cbfefe --- /dev/null +++ b/src/plex_api_client/models/components/directory.py @@ -0,0 +1,98 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from plex_api_client.types import BaseModel +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PivotTypedDict(TypedDict): + title: NotRequired[str] + type: NotRequired[str] + context: NotRequired[str] + id: NotRequired[str] + key: NotRequired[str] + symbol: NotRequired[str] + + +class Pivot(BaseModel): + title: Optional[str] = None + + type: Optional[str] = None + + context: Optional[str] = None + + id: Optional[str] = None + + key: Optional[str] = None + + symbol: Optional[str] = None + + +class DirectoryTypedDict(TypedDict): + title: NotRequired[str] + type: NotRequired[str] + art: NotRequired[str] + content: NotRequired[bool] + filter_: NotRequired[str] + has_prefs: NotRequired[bool] + has_store_services: NotRequired[bool] + hub_key: NotRequired[str] + identifier: NotRequired[str] + key: NotRequired[str] + last_accessed_at: NotRequired[int] + pivot: NotRequired[List[PivotTypedDict]] + share: NotRequired[int] + thumb: NotRequired[str] + title_bar: NotRequired[str] + + +class Directory(BaseModel): + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + title: Optional[str] = None + + type: Optional[str] = None + + art: Optional[str] = None + + content: Optional[bool] = None + + filter_: Annotated[Optional[str], pydantic.Field(alias="filter")] = None + + has_prefs: Annotated[Optional[bool], pydantic.Field(alias="hasPrefs")] = None + + has_store_services: Annotated[ + Optional[bool], pydantic.Field(alias="hasStoreServices") + ] = None + + hub_key: Annotated[Optional[str], pydantic.Field(alias="hubKey")] = None + + identifier: Optional[str] = None + + key: Optional[str] = None + + last_accessed_at: Annotated[ + Optional[int], pydantic.Field(alias="lastAccessedAt") + ] = None + + pivot: Annotated[Optional[List[Pivot]], pydantic.Field(alias="Pivot")] = None + + share: Optional[int] = None + + thumb: Optional[str] = None + + title_bar: Annotated[Optional[str], pydantic.Field(alias="titleBar")] = None + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] diff --git a/src/plex_api_client/models/components/dvrrequesthandler_slash_get_responses_200.py b/src/plex_api_client/models/components/dvrrequesthandler_slash_get_responses_200.py new file mode 100644 index 0000000..171a6f7 --- /dev/null +++ b/src/plex_api_client/models/components/dvrrequesthandler_slash_get_responses_200.py @@ -0,0 +1,109 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .device import Device, DeviceTypedDict +from plex_api_client.types import BaseModel +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainerTypedDict( + TypedDict +): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + status: NotRequired[int] + r"""A status indicator. If present and non-zero, indicates an error""" + + +class DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + status: Optional[int] = None + r"""A status indicator. If present and non-zero, indicates an error""" + + +class DvrTypedDict(TypedDict): + device: NotRequired[List[DeviceTypedDict]] + key: NotRequired[str] + language: NotRequired[str] + lineup: NotRequired[str] + uuid: NotRequired[str] + + +class Dvr(BaseModel): + device: Annotated[Optional[List[Device]], pydantic.Field(alias="Device")] = None + + key: Optional[str] = None + + language: Optional[str] = None + + lineup: Optional[str] = None + + uuid: Optional[str] = None + + +class DvrRequestHandlerSlashGetResponses200MediaContainerTypedDict(TypedDict): + media_container: NotRequired[ + DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainerTypedDict + ] + dvr: NotRequired[List[DvrTypedDict]] + + +class DvrRequestHandlerSlashGetResponses200MediaContainer(BaseModel): + media_container: Annotated[ + Optional[DvrRequestHandlerSlashGetResponses200MediaContainerMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + dvr: Annotated[Optional[List[Dvr]], pydantic.Field(alias="DVR")] = None + + +class DvrRequestHandlerSlashGetResponses200TypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[ + DvrRequestHandlerSlashGetResponses200MediaContainerTypedDict + ] + + +class DvrRequestHandlerSlashGetResponses200(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[DvrRequestHandlerSlashGetResponses200MediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None diff --git a/src/plex_api_client/models/components/filter_.py b/src/plex_api_client/models/components/filter_.py new file mode 100644 index 0000000..b8b1ec8 --- /dev/null +++ b/src/plex_api_client/models/components/filter_.py @@ -0,0 +1,113 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from plex_api_client.types import BaseModel +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class FilterPivotTypedDict(TypedDict): + title: NotRequired[str] + type: NotRequired[str] + context: NotRequired[str] + id: NotRequired[str] + key: NotRequired[str] + symbol: NotRequired[str] + + +class FilterPivot(BaseModel): + title: Optional[str] = None + + type: Optional[str] = None + + context: Optional[str] = None + + id: Optional[str] = None + + key: Optional[str] = None + + symbol: Optional[str] = None + + +class FilterTypedDict(TypedDict): + r"""Each `Filter` object contains a description of the filter. Note that it is not an exhaustive list of the full media query language, but an important subset useful for top-level API.""" + + title: NotRequired[str] + r"""The title for the filter.""" + type: NotRequired[str] + art: NotRequired[str] + content: NotRequired[bool] + filter_: NotRequired[str] + r"""This represents the filter name used for the filter, which can be used to construct complex media queries with.""" + has_prefs: NotRequired[bool] + has_store_services: NotRequired[bool] + hub_key: NotRequired[str] + identifier: NotRequired[str] + key: NotRequired[str] + r"""This provides the endpoint where the possible range of values for the filter can be retrieved (e.g. for a \"Genre\" filter, it returns a list of all the genres in the library). This will include a `type` argument that matches the metadata type of the Type element.""" + last_accessed_at: NotRequired[int] + pivot: NotRequired[List[FilterPivotTypedDict]] + share: NotRequired[int] + thumb: NotRequired[str] + title_bar: NotRequired[str] + filter_type: NotRequired[str] + r"""This is either `string`, `integer`, or `boolean`, and describes the type of values used for the filter.""" + + +class Filter(BaseModel): + r"""Each `Filter` object contains a description of the filter. Note that it is not an exhaustive list of the full media query language, but an important subset useful for top-level API.""" + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + title: Optional[str] = None + r"""The title for the filter.""" + + type: Optional[str] = None + + art: Optional[str] = None + + content: Optional[bool] = None + + filter_: Annotated[Optional[str], pydantic.Field(alias="filter")] = None + r"""This represents the filter name used for the filter, which can be used to construct complex media queries with.""" + + has_prefs: Annotated[Optional[bool], pydantic.Field(alias="hasPrefs")] = None + + has_store_services: Annotated[ + Optional[bool], pydantic.Field(alias="hasStoreServices") + ] = None + + hub_key: Annotated[Optional[str], pydantic.Field(alias="hubKey")] = None + + identifier: Optional[str] = None + + key: Optional[str] = None + r"""This provides the endpoint where the possible range of values for the filter can be retrieved (e.g. for a \"Genre\" filter, it returns a list of all the genres in the library). This will include a `type` argument that matches the metadata type of the Type element.""" + + last_accessed_at: Annotated[ + Optional[int], pydantic.Field(alias="lastAccessedAt") + ] = None + + pivot: Annotated[Optional[List[FilterPivot]], pydantic.Field(alias="Pivot")] = None + + share: Optional[int] = None + + thumb: Optional[str] = None + + title_bar: Annotated[Optional[str], pydantic.Field(alias="titleBar")] = None + + filter_type: Annotated[Optional[str], pydantic.Field(alias="filterType")] = None + r"""This is either `string`, `integer`, or `boolean`, and describes the type of values used for the filter.""" + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] diff --git a/src/plex_api_client/models/components/get_responses_200.py b/src/plex_api_client/models/components/get_responses_200.py new file mode 100644 index 0000000..c2774cf --- /dev/null +++ b/src/plex_api_client/models/components/get_responses_200.py @@ -0,0 +1,173 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from plex_api_client.types import BaseModel +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class HomeVisibility(str, Enum): + r"""Whether this hub is visible on the home screen + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + """ + + ALL = "all" + NONE = "none" + ADMIN = "admin" + SHARED = "shared" + + +class RecommendationsVisibility(str, Enum): + r"""The visibility of this hub in recommendations: + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + """ + + ALL = "all" + NONE = "none" + ADMIN = "admin" + SHARED = "shared" + + +class GetResponses200HubTypedDict(TypedDict): + home_visibility: NotRequired[HomeVisibility] + r"""Whether this hub is visible on the home screen + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + """ + identifier: NotRequired[str] + r"""The identifier for this hub""" + promoted_to_own_home: NotRequired[bool] + r"""Whether this hub is visible to admin user home""" + promoted_to_recommended: NotRequired[bool] + r"""Whether this hub is promoted to all for recommendations""" + promoted_to_shared_home: NotRequired[bool] + r"""Whether this hub is visible to shared user's home""" + recommendations_visibility: NotRequired[RecommendationsVisibility] + r"""The visibility of this hub in recommendations: + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + """ + title: NotRequired[str] + r"""The title of this hub""" + + +class GetResponses200Hub(BaseModel): + home_visibility: Annotated[ + Optional[HomeVisibility], pydantic.Field(alias="homeVisibility") + ] = None + r"""Whether this hub is visible on the home screen + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + """ + + identifier: Optional[str] = None + r"""The identifier for this hub""" + + promoted_to_own_home: Annotated[ + Optional[bool], pydantic.Field(alias="promotedToOwnHome") + ] = None + r"""Whether this hub is visible to admin user home""" + + promoted_to_recommended: Annotated[ + Optional[bool], pydantic.Field(alias="promotedToRecommended") + ] = None + r"""Whether this hub is promoted to all for recommendations""" + + promoted_to_shared_home: Annotated[ + Optional[bool], pydantic.Field(alias="promotedToSharedHome") + ] = None + r"""Whether this hub is visible to shared user's home""" + + recommendations_visibility: Annotated[ + Optional[RecommendationsVisibility], + pydantic.Field(alias="recommendationsVisibility"), + ] = None + r"""The visibility of this hub in recommendations: + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + """ + + title: Optional[str] = None + r"""The title of this hub""" + + +class GetResponses200MediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + hub: NotRequired[List[GetResponses200HubTypedDict]] + + +class GetResponses200MediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + hub: Annotated[Optional[List[GetResponses200Hub]], pydantic.Field(alias="Hub")] = ( + None + ) + + +class GetResponses200TypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetResponses200MediaContainerTypedDict] + + +class GetResponses200(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetResponses200MediaContainer], pydantic.Field(alias="MediaContainer") + ] = None diff --git a/src/plex_api_client/models/components/historyall_get_responses_200.py b/src/plex_api_client/models/components/historyall_get_responses_200.py new file mode 100644 index 0000000..ab621c3 --- /dev/null +++ b/src/plex_api_client/models/components/historyall_get_responses_200.py @@ -0,0 +1,133 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from plex_api_client.types import BaseModel +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class HistoryAllGetResponses200MetadataTypedDict(TypedDict): + account_id: NotRequired[int] + r"""The account id of this playback""" + device_id: NotRequired[int] + r"""The device id which played the item""" + history_key: NotRequired[str] + r"""The key for this individual history item""" + key: NotRequired[str] + r"""The metadata key for the item played""" + library_section_id: NotRequired[str] + r"""The library section id containing the item played""" + originally_available_at: NotRequired[str] + r"""The originally available at of the item played""" + rating_key: NotRequired[str] + r"""The rating key for the item played""" + thumb: NotRequired[str] + r"""The thumb of the item played""" + title: NotRequired[str] + r"""The title of the item played""" + type: NotRequired[str] + r"""The metadata type of the item played""" + viewed_at: NotRequired[int] + r"""The time when the item was played""" + + +class HistoryAllGetResponses200Metadata(BaseModel): + account_id: Annotated[Optional[int], pydantic.Field(alias="accountID")] = None + r"""The account id of this playback""" + + device_id: Annotated[Optional[int], pydantic.Field(alias="deviceID")] = None + r"""The device id which played the item""" + + history_key: Annotated[Optional[str], pydantic.Field(alias="historyKey")] = None + r"""The key for this individual history item""" + + key: Optional[str] = None + r"""The metadata key for the item played""" + + library_section_id: Annotated[ + Optional[str], pydantic.Field(alias="librarySectionID") + ] = None + r"""The library section id containing the item played""" + + originally_available_at: Annotated[ + Optional[str], pydantic.Field(alias="originallyAvailableAt") + ] = None + r"""The originally available at of the item played""" + + rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None + r"""The rating key for the item played""" + + thumb: Optional[str] = None + r"""The thumb of the item played""" + + title: Optional[str] = None + r"""The title of the item played""" + + type: Optional[str] = None + r"""The metadata type of the item played""" + + viewed_at: Annotated[Optional[int], pydantic.Field(alias="viewedAt")] = None + r"""The time when the item was played""" + + +class HistoryAllGetResponses200MediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + metadata: NotRequired[List[HistoryAllGetResponses200MetadataTypedDict]] + + +class HistoryAllGetResponses200MediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + metadata: Annotated[ + Optional[List[HistoryAllGetResponses200Metadata]], + pydantic.Field(alias="Metadata"), + ] = None + + +class HistoryAllGetResponses200TypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[HistoryAllGetResponses200MediaContainerTypedDict] + + +class HistoryAllGetResponses200(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[HistoryAllGetResponses200MediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None diff --git a/src/plex_api_client/models/components/hub.py b/src/plex_api_client/models/components/hub.py new file mode 100644 index 0000000..22fb511 --- /dev/null +++ b/src/plex_api_client/models/components/hub.py @@ -0,0 +1,101 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .metadata import Metadata, MetadataTypedDict +from plex_api_client.types import BaseModel +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class HubTypedDict(TypedDict): + title: NotRequired[str] + r"""A title for this grouping of content""" + type: NotRequired[str] + r"""The type of the items contained in this hub, or possibly `mixed` if there are multiple types""" + context: NotRequired[str] + hub_identifier: NotRequired[str] + r"""A unique identifier for the hub""" + hub_key: NotRequired[str] + r"""A key at which the exact content currently displayed can be fetched again. This is particularly important when a hub is marked as random and requesting the `key` may get different results. It's otherwise optional. + + """ + key: NotRequired[str] + r"""The key at which all of the content for this hub can be retrieved""" + metadata: NotRequired[List[MetadataTypedDict]] + more: NotRequired[bool] + r"""\"A boolean indicating that the hub contains more than what's included in the current response.\" + + """ + promoted: NotRequired[bool] + r"""Indicating if the hub should be promoted to the user's homescreen""" + random: NotRequired[bool] + r"""Indicating that the contents of the hub may change on each request""" + size: NotRequired[int] + style: NotRequired[str] + r"""A suggestion on how this hub's contents might be displayed by a client. Some examples include `hero`, `list`, `spotlight`, and `upsell`""" + subtype: NotRequired[str] + r"""The subtype of the items contained in this hub, or possibly `mixed` if there are multiple types""" + total_size: NotRequired[int] + + +class Hub(BaseModel): + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + title: Optional[str] = None + r"""A title for this grouping of content""" + + type: Optional[str] = None + r"""The type of the items contained in this hub, or possibly `mixed` if there are multiple types""" + + context: Optional[str] = None + + hub_identifier: Annotated[Optional[str], pydantic.Field(alias="hubIdentifier")] = ( + None + ) + r"""A unique identifier for the hub""" + + hub_key: Annotated[Optional[str], pydantic.Field(alias="hubKey")] = None + r"""A key at which the exact content currently displayed can be fetched again. This is particularly important when a hub is marked as random and requesting the `key` may get different results. It's otherwise optional. + + """ + + key: Optional[str] = None + r"""The key at which all of the content for this hub can be retrieved""" + + metadata: Annotated[Optional[List[Metadata]], pydantic.Field(alias="Metadata")] = ( + None + ) + + more: Optional[bool] = None + r"""\"A boolean indicating that the hub contains more than what's included in the current response.\" + + """ + + promoted: Optional[bool] = None + r"""Indicating if the hub should be promoted to the user's homescreen""" + + random: Optional[bool] = None + r"""Indicating that the contents of the hub may change on each request""" + + size: Optional[int] = None + + style: Optional[str] = None + r"""A suggestion on how this hub's contents might be displayed by a client. Some examples include `hero`, `list`, `spotlight`, and `upsell`""" + + subtype: Optional[str] = None + r"""The subtype of the items contained in this hub, or possibly `mixed` if there are multiple types""" + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] diff --git a/src/plex_api_client/models/components/image.py b/src/plex_api_client/models/components/image.py new file mode 100644 index 0000000..24f69fc --- /dev/null +++ b/src/plex_api_client/models/components/image.py @@ -0,0 +1,41 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from plex_api_client.types import BaseModel +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class ImageType(str, Enum): + r"""Describes both the purpose and intended presentation of the image.""" + + BACKGROUND = "background" + BANNER = "banner" + CLEAR_LOGO = "clearLogo" + COVER_POSTER = "coverPoster" + SNAPSHOT = "snapshot" + + +class ImageTypedDict(TypedDict): + r"""Images such as movie posters and background artwork are represented by Image elements.""" + + type: NotRequired[ImageType] + r"""Describes both the purpose and intended presentation of the image.""" + alt: NotRequired[str] + r"""Title to use for accessibility.""" + url: NotRequired[str] + r"""The relative path or absolute url for the image.""" + + +class Image(BaseModel): + r"""Images such as movie posters and background artwork are represented by Image elements.""" + + type: Optional[ImageType] = None + r"""Describes both the purpose and intended presentation of the image.""" + + alt: Optional[str] = None + r"""Title to use for accessibility.""" + + url: Optional[str] = None + r"""The relative path or absolute url for the image.""" diff --git a/src/plex_api_client/models/components/items.py b/src/plex_api_client/models/components/items.py new file mode 100644 index 0000000..000c5fe --- /dev/null +++ b/src/plex_api_client/models/components/items.py @@ -0,0 +1,405 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .filter_ import Filter, FilterTypedDict +from .image import Image, ImageTypedDict +from .media import Media, MediaTypedDict +from .sort import Sort, SortTypedDict +from .tag import Tag, TagTypedDict +from plex_api_client.types import BaseModel +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ItemsTypedDict(TypedDict): + r"""Items in a library are referred to as \"metadata items.\" These metadata items are distinct from \"media items\" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a \"media item\" will have one or more \"media parts\" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + + Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + + Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, \"leaves\" refer to metadata items which has associated media (there is no media for a season nor show). A show will have \"children\" in the form of seasons and a season will have \"children\" in the form of episodes and episodes have \"parent\" in the form of a season which has a \"parent\" in the form of a show. Similarly, a show has \"grandchildren\" in the form of episodse and an episode has a \"grandparent\" in the form of a show. + + """ + + title: NotRequired[Any] + r"""The title of the item (e.g. “300” or “The Simpsons”)""" + type: NotRequired[Any] + r"""The type of the video item, such as `movie`, `episode`, or `clip`.""" + absolute_index: NotRequired[int] + r"""When present, contains the disc number for a track on multi-disc albums.""" + added_at: NotRequired[int] + r"""In units of seconds since the epoch, returns the time at which the item was added to the library.""" + art: NotRequired[Any] + r"""When present, the URL for the background artwork for the item.""" + audience_rating: NotRequired[float] + r"""Some rating systems separate reviewer ratings from audience ratings""" + audience_rating_image: NotRequired[Any] + r"""A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).""" + autotag: NotRequired[List[TagTypedDict]] + banner: NotRequired[Any] + r"""When present, the URL for a banner graphic for the item.""" + chapter_source: NotRequired[Any] + r"""When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).""" + composite: NotRequired[Any] + r"""When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).""" + content_rating: NotRequired[Any] + r"""If known, the content rating (e.g. MPAA) for an item.""" + country: NotRequired[List[TagTypedDict]] + director: NotRequired[List[TagTypedDict]] + duration: NotRequired[int] + r"""When present, the duration for the item, in units of milliseconds.""" + filter_: NotRequired[List[FilterTypedDict]] + r"""Typically only seen in metadata at a library's top level""" + genre: NotRequired[List[TagTypedDict]] + grandparent_art: NotRequired[str] + r"""The `art` of the grandparent""" + grandparent_hero: NotRequired[str] + r"""The `hero` of the grandparent""" + grandparent_key: NotRequired[str] + r"""The `key` of the grandparent""" + grandparent_rating_key: NotRequired[str] + r"""The `ratingKey` of the grandparent""" + grandparent_theme: NotRequired[str] + r"""The `theme` of the grandparent""" + grandparent_thumb: NotRequired[str] + r"""The `thumb` of the grandparent""" + grandparent_title: NotRequired[str] + r"""The `title` of the grandparent""" + guid: NotRequired[List[TagTypedDict]] + hero: NotRequired[Any] + r"""When present, the URL for a hero image for the item.""" + image: NotRequired[List[ImageTypedDict]] + index: NotRequired[int] + r"""When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.""" + key: NotRequired[Any] + r"""The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.""" + last_viewed_at: NotRequired[int] + r"""When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.""" + leaf_count: NotRequired[int] + r"""For shows and seasons, contains the number of total episodes.""" + media: NotRequired[List[MediaTypedDict]] + originally_available_at: NotRequired[Any] + r"""When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.""" + original_title: NotRequired[Any] + r"""When present, used to indicate an item's original title, e.g. a movie's foreign title.""" + parent_hero: NotRequired[str] + r"""The `hero` of the parent""" + parent_index: NotRequired[int] + r"""The `index` of the parent""" + parent_key: NotRequired[str] + r"""The `key` of the parent""" + parent_rating_key: NotRequired[str] + r"""The `ratingKey` of the parent""" + parent_thumb: NotRequired[str] + r"""The `thumb` of the parent""" + parent_title: NotRequired[str] + r"""The `title` of the parent""" + primary_extra_key: NotRequired[Any] + r"""Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.""" + prompt: NotRequired[str] + r"""Prompt to give the user for this directory (such as `Search Movies`)""" + rating: NotRequired[float] + r"""When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.""" + rating_array: NotRequired[List[TagTypedDict]] + rating_count: NotRequired[int] + r"""Number of ratings under this metadata""" + rating_image: NotRequired[Any] + r"""When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.""" + rating_key: NotRequired[Any] + r"""This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.""" + role: NotRequired[List[TagTypedDict]] + search: NotRequired[bool] + r"""Indicates this is a search directory""" + secondary: NotRequired[bool] + r"""Used by old clients to provide nested menus allowing for primative (but structured) navigation.""" + skip_children: NotRequired[bool] + r"""When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc.""" + skip_parent: NotRequired[bool] + r"""When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show).""" + sort: NotRequired[List[SortTypedDict]] + r"""Typically only seen in metadata at a library's top level""" + studio: NotRequired[Any] + r"""When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).""" + subtype: NotRequired[Any] + r"""The subtype of the video item, such as `photo` when the video item is in a photo library""" + summary: NotRequired[Any] + r"""When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).""" + tagline: NotRequired[Any] + r"""When present, a pithy one-liner about the item (usually only seen for movies).""" + theme: NotRequired[Any] + r"""When present, the URL for theme music for the item (usually only for TV shows).""" + thumb: NotRequired[Any] + r"""When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.""" + title_sort: NotRequired[Any] + r"""Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”).""" + updated_at: NotRequired[int] + r"""In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).""" + user_rating: NotRequired[float] + r"""When the user has rated an item, this contains the user rating""" + view_count: NotRequired[int] + r"""When a users has completed watched or listened to an item, this attribute contains the number of consumptions.""" + viewed_leaf_count: NotRequired[int] + r"""For shows and seasons, contains the number of viewed episodes.""" + view_offset: NotRequired[int] + r"""When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.""" + writer: NotRequired[List[TagTypedDict]] + year: NotRequired[int] + r"""When present, the year associated with the item's release (e.g. release year for a movie).""" + metadata_item: NotRequired[List[ItemsTypedDict]] + + +class Items(BaseModel): + r"""Items in a library are referred to as \"metadata items.\" These metadata items are distinct from \"media items\" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a \"media item\" will have one or more \"media parts\" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + + Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + + Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, \"leaves\" refer to metadata items which has associated media (there is no media for a season nor show). A show will have \"children\" in the form of seasons and a season will have \"children\" in the form of episodes and episodes have \"parent\" in the form of a season which has a \"parent\" in the form of a show. Similarly, a show has \"grandchildren\" in the form of episodse and an episode has a \"grandparent\" in the form of a show. + + """ + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + title: Optional[Any] = None + r"""The title of the item (e.g. “300” or “The Simpsons”)""" + + type: Optional[Any] = None + r"""The type of the video item, such as `movie`, `episode`, or `clip`.""" + + absolute_index: Annotated[Optional[int], pydantic.Field(alias="absoluteIndex")] = ( + None + ) + r"""When present, contains the disc number for a track on multi-disc albums.""" + + added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None + r"""In units of seconds since the epoch, returns the time at which the item was added to the library.""" + + art: Optional[Any] = None + r"""When present, the URL for the background artwork for the item.""" + + audience_rating: Annotated[ + Optional[float], pydantic.Field(alias="audienceRating") + ] = None + r"""Some rating systems separate reviewer ratings from audience ratings""" + + audience_rating_image: Annotated[ + Optional[Any], pydantic.Field(alias="audienceRatingImage") + ] = None + r"""A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).""" + + autotag: Annotated[Optional[List[Tag]], pydantic.Field(alias="Autotag")] = None + + banner: Optional[Any] = None + r"""When present, the URL for a banner graphic for the item.""" + + chapter_source: Annotated[Optional[Any], pydantic.Field(alias="chapterSource")] = ( + None + ) + r"""When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).""" + + composite: Optional[Any] = None + r"""When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).""" + + content_rating: Annotated[Optional[Any], pydantic.Field(alias="contentRating")] = ( + None + ) + r"""If known, the content rating (e.g. MPAA) for an item.""" + + country: Annotated[Optional[List[Tag]], pydantic.Field(alias="Country")] = None + + director: Annotated[Optional[List[Tag]], pydantic.Field(alias="Director")] = None + + duration: Optional[int] = None + r"""When present, the duration for the item, in units of milliseconds.""" + + filter_: Annotated[Optional[List[Filter]], pydantic.Field(alias="Filter")] = None + r"""Typically only seen in metadata at a library's top level""" + + genre: Annotated[Optional[List[Tag]], pydantic.Field(alias="Genre")] = None + + grandparent_art: Annotated[ + Optional[str], pydantic.Field(alias="grandparentArt") + ] = None + r"""The `art` of the grandparent""" + + grandparent_hero: Annotated[ + Optional[str], pydantic.Field(alias="grandparentHero") + ] = None + r"""The `hero` of the grandparent""" + + grandparent_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentKey") + ] = None + r"""The `key` of the grandparent""" + + grandparent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentRatingKey") + ] = None + r"""The `ratingKey` of the grandparent""" + + grandparent_theme: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTheme") + ] = None + r"""The `theme` of the grandparent""" + + grandparent_thumb: Annotated[ + Optional[str], pydantic.Field(alias="grandparentThumb") + ] = None + r"""The `thumb` of the grandparent""" + + grandparent_title: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTitle") + ] = None + r"""The `title` of the grandparent""" + + guid: Annotated[Optional[List[Tag]], pydantic.Field(alias="Guid")] = None + + hero: Optional[Any] = None + r"""When present, the URL for a hero image for the item.""" + + image: Annotated[Optional[List[Image]], pydantic.Field(alias="Image")] = None + + index: Optional[int] = None + r"""When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.""" + + key: Optional[Any] = None + r"""The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.""" + + last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( + None + ) + r"""When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.""" + + leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None + r"""For shows and seasons, contains the number of total episodes.""" + + media: Annotated[Optional[List[Media]], pydantic.Field(alias="Media")] = None + + originally_available_at: Annotated[ + Optional[Any], pydantic.Field(alias="originallyAvailableAt") + ] = None + r"""When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.""" + + original_title: Annotated[Optional[Any], pydantic.Field(alias="originalTitle")] = ( + None + ) + r"""When present, used to indicate an item's original title, e.g. a movie's foreign title.""" + + parent_hero: Annotated[Optional[str], pydantic.Field(alias="parentHero")] = None + r"""The `hero` of the parent""" + + parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None + r"""The `index` of the parent""" + + parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None + r"""The `key` of the parent""" + + parent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="parentRatingKey") + ] = None + r"""The `ratingKey` of the parent""" + + parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None + r"""The `thumb` of the parent""" + + parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None + r"""The `title` of the parent""" + + primary_extra_key: Annotated[ + Optional[Any], pydantic.Field(alias="primaryExtraKey") + ] = None + r"""Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.""" + + prompt: Optional[str] = None + r"""Prompt to give the user for this directory (such as `Search Movies`)""" + + rating: Optional[float] = None + r"""When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.""" + + rating_array: Annotated[Optional[List[Tag]], pydantic.Field(alias="Rating")] = None + + rating_count: Annotated[Optional[int], pydantic.Field(alias="ratingCount")] = None + r"""Number of ratings under this metadata""" + + rating_image: Annotated[Optional[Any], pydantic.Field(alias="ratingImage")] = None + r"""When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.""" + + rating_key: Annotated[Optional[Any], pydantic.Field(alias="ratingKey")] = None + r"""This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.""" + + role: Annotated[Optional[List[Tag]], pydantic.Field(alias="Role")] = None + + search: Optional[bool] = None + r"""Indicates this is a search directory""" + + secondary: Optional[bool] = None + r"""Used by old clients to provide nested menus allowing for primative (but structured) navigation.""" + + skip_children: Annotated[Optional[bool], pydantic.Field(alias="skipChildren")] = ( + None + ) + r"""When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc.""" + + skip_parent: Annotated[Optional[bool], pydantic.Field(alias="skipParent")] = None + r"""When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show).""" + + sort: Annotated[Optional[List[Sort]], pydantic.Field(alias="Sort")] = None + r"""Typically only seen in metadata at a library's top level""" + + studio: Optional[Any] = None + r"""When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).""" + + subtype: Optional[Any] = None + r"""The subtype of the video item, such as `photo` when the video item is in a photo library""" + + summary: Optional[Any] = None + r"""When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).""" + + tagline: Optional[Any] = None + r"""When present, a pithy one-liner about the item (usually only seen for movies).""" + + theme: Optional[Any] = None + r"""When present, the URL for theme music for the item (usually only for TV shows).""" + + thumb: Optional[Any] = None + r"""When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.""" + + title_sort: Annotated[Optional[Any], pydantic.Field(alias="titleSort")] = None + r"""Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”).""" + + updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None + r"""In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).""" + + user_rating: Annotated[Optional[float], pydantic.Field(alias="userRating")] = None + r"""When the user has rated an item, this contains the user rating""" + + view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None + r"""When a users has completed watched or listened to an item, this attribute contains the number of consumptions.""" + + viewed_leaf_count: Annotated[ + Optional[int], pydantic.Field(alias="viewedLeafCount") + ] = None + r"""For shows and seasons, contains the number of viewed episodes.""" + + view_offset: Annotated[Optional[int], pydantic.Field(alias="viewOffset")] = None + r"""When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.""" + + writer: Annotated[Optional[List[Tag]], pydantic.Field(alias="Writer")] = None + + year: Optional[int] = None + r"""When present, the year associated with the item's release (e.g. release year for a movie).""" + + metadata_item: Annotated[ + Optional[List[Items]], pydantic.Field(alias="MetadataItem") + ] = None + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] diff --git a/src/plex_api_client/models/components/librarysection.py b/src/plex_api_client/models/components/librarysection.py new file mode 100644 index 0000000..aca06cf --- /dev/null +++ b/src/plex_api_client/models/components/librarysection.py @@ -0,0 +1,97 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from plex_api_client.types import BaseModel +import pydantic +from typing import Any, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class LibrarySectionLocationTypedDict(TypedDict): + r"""Represents a top-level location on disk where media in this library section is stored""" + + id: NotRequired[int] + path: NotRequired[Any] + r"""The path of where this directory exists on disk""" + + +class LibrarySectionLocation(BaseModel): + r"""Represents a top-level location on disk where media in this library section is stored""" + + id: Optional[int] = None + + path: Optional[Any] = None + r"""The path of where this directory exists on disk""" + + +class LibrarySectionTypedDict(TypedDict): + title: NotRequired[str] + type: NotRequired[str] + agent: NotRequired[str] + allow_sync: NotRequired[bool] + art: NotRequired[str] + composite: NotRequired[str] + content: NotRequired[bool] + content_changed_at: NotRequired[int] + created_at: NotRequired[int] + directory: NotRequired[bool] + filters: NotRequired[bool] + r"""Indicates whether this section has filtering capabilities""" + hidden: NotRequired[bool] + key: NotRequired[str] + language: NotRequired[str] + location: NotRequired[List[LibrarySectionLocationTypedDict]] + refreshing: NotRequired[bool] + r"""Indicates whether this library section is currently scanning""" + scanned_at: NotRequired[int] + scanner: NotRequired[str] + thumb: NotRequired[str] + updated_at: NotRequired[int] + + +class LibrarySection(BaseModel): + title: Optional[str] = None + + type: Optional[str] = None + + agent: Optional[str] = None + + allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None + + art: Optional[str] = None + + composite: Optional[str] = None + + content: Optional[bool] = None + + content_changed_at: Annotated[ + Optional[int], pydantic.Field(alias="contentChangedAt") + ] = None + + created_at: Annotated[Optional[int], pydantic.Field(alias="createdAt")] = None + + directory: Optional[bool] = None + + filters: Optional[bool] = None + r"""Indicates whether this section has filtering capabilities""" + + hidden: Optional[bool] = None + + key: Optional[str] = None + + language: Optional[str] = None + + location: Annotated[ + Optional[List[LibrarySectionLocation]], pydantic.Field(alias="Location") + ] = None + + refreshing: Optional[bool] = None + r"""Indicates whether this library section is currently scanning""" + + scanned_at: Annotated[Optional[int], pydantic.Field(alias="scannedAt")] = None + + scanner: Optional[str] = None + + thumb: Optional[str] = None + + updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None diff --git a/src/plex_api_client/models/components/lineup.py b/src/plex_api_client/models/components/lineup.py new file mode 100644 index 0000000..6c82931 --- /dev/null +++ b/src/plex_api_client/models/components/lineup.py @@ -0,0 +1,68 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from plex_api_client.types import BaseModel +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class LineupType(int, Enum): + r"""- `-1`: N/A + - `0`: Over the air + - `1`: Cable + - `2`: Satellite + - `3`: IPTV + - `4`: Virtual + + """ + + MINUS_1 = -1 + ZERO = 0 + ONE = 1 + TWO = 2 + THREE = 3 + FOUR = 4 + + +class LineupTypedDict(TypedDict): + title: NotRequired[str] + type: NotRequired[str] + r"""The type of this object (`lineup` in this case)""" + lineup_type: NotRequired[LineupType] + r"""- `-1`: N/A + - `0`: Over the air + - `1`: Cable + - `2`: Satellite + - `3`: IPTV + - `4`: Virtual + + """ + location: NotRequired[str] + uuid: NotRequired[str] + r"""The uuid of this lineup""" + + +class Lineup(BaseModel): + title: Optional[str] = None + + type: Optional[str] = None + r"""The type of this object (`lineup` in this case)""" + + lineup_type: Annotated[Optional[LineupType], pydantic.Field(alias="lineupType")] = ( + None + ) + r"""- `-1`: N/A + - `0`: Over the air + - `1`: Cable + - `2`: Satellite + - `3`: IPTV + - `4`: Virtual + + """ + + location: Optional[str] = None + + uuid: Optional[str] = None + r"""The uuid of this lineup""" diff --git a/src/plex_api_client/models/components/location.py b/src/plex_api_client/models/components/location.py new file mode 100644 index 0000000..96fda34 --- /dev/null +++ b/src/plex_api_client/models/components/location.py @@ -0,0 +1,10 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum + + +class Location(str, Enum): + LAN = "lan" + WAN = "wan" + CELLULAR = "cellular" diff --git a/src/plex_api_client/models/components/media.py b/src/plex_api_client/models/components/media.py new file mode 100644 index 0000000..c52b47c --- /dev/null +++ b/src/plex_api_client/models/components/media.py @@ -0,0 +1,97 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .part import Part, PartTypedDict +from plex_api_client.types import BaseModel +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MediaTypedDict(TypedDict): + r"""`Media` represents an one or more media files (parts) and is a child of a metadata item. There aren't necessarily any guaranteed attributes on media elements since the attributes will vary based on the type. The possible attributes are not documented here, but they typically have self-evident names. High-level media information that can be used for badging and flagging, such as `videoResolution` and codecs, is included on the media element.""" + + aspect_ratio: NotRequired[float] + audio_channels: NotRequired[int] + audio_codec: NotRequired[Any] + audio_profile: NotRequired[Any] + bitrate: NotRequired[int] + container: NotRequired[Any] + duration: NotRequired[int] + has64bit_offsets: NotRequired[bool] + has_voice_activity: NotRequired[bool] + height: NotRequired[int] + id: NotRequired[int] + optimized_for_streaming: NotRequired[bool] + part: NotRequired[List[PartTypedDict]] + video_codec: NotRequired[Any] + video_frame_rate: NotRequired[Any] + video_profile: NotRequired[Any] + video_resolution: NotRequired[Any] + width: NotRequired[int] + + +class Media(BaseModel): + r"""`Media` represents an one or more media files (parts) and is a child of a metadata item. There aren't necessarily any guaranteed attributes on media elements since the attributes will vary based on the type. The possible attributes are not documented here, but they typically have self-evident names. High-level media information that can be used for badging and flagging, such as `videoResolution` and codecs, is included on the media element.""" + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + aspect_ratio: Annotated[Optional[float], pydantic.Field(alias="aspectRatio")] = None + + audio_channels: Annotated[Optional[int], pydantic.Field(alias="audioChannels")] = ( + None + ) + + audio_codec: Annotated[Optional[Any], pydantic.Field(alias="audioCodec")] = None + + audio_profile: Annotated[Optional[Any], pydantic.Field(alias="audioProfile")] = None + + bitrate: Optional[int] = None + + container: Optional[Any] = None + + duration: Optional[int] = None + + has64bit_offsets: Annotated[ + Optional[bool], pydantic.Field(alias="has64bitOffsets") + ] = None + + has_voice_activity: Annotated[ + Optional[bool], pydantic.Field(alias="hasVoiceActivity") + ] = None + + height: Optional[int] = None + + id: Optional[int] = None + + optimized_for_streaming: Annotated[ + Optional[bool], pydantic.Field(alias="optimizedForStreaming") + ] = None + + part: Annotated[Optional[List[Part]], pydantic.Field(alias="Part")] = None + + video_codec: Annotated[Optional[Any], pydantic.Field(alias="videoCodec")] = None + + video_frame_rate: Annotated[ + Optional[Any], pydantic.Field(alias="videoFrameRate") + ] = None + + video_profile: Annotated[Optional[Any], pydantic.Field(alias="videoProfile")] = None + + video_resolution: Annotated[ + Optional[Any], pydantic.Field(alias="videoResolution") + ] = None + + width: Optional[int] = None + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] diff --git a/src/plex_api_client/models/components/mediacontainer.py b/src/plex_api_client/models/components/mediacontainer.py new file mode 100644 index 0000000..7294a53 --- /dev/null +++ b/src/plex_api_client/models/components/mediacontainer.py @@ -0,0 +1,48 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from plex_api_client.types import BaseModel +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + +class MediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ diff --git a/src/plex_api_client/models/components/mediacontainerwithartwork.py b/src/plex_api_client/models/components/mediacontainerwithartwork.py new file mode 100644 index 0000000..c7073a2 --- /dev/null +++ b/src/plex_api_client/models/components/mediacontainerwithartwork.py @@ -0,0 +1,102 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from plex_api_client.types import BaseModel +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MediaContainerWithArtworkType(str, Enum): + IMAGE = "image" + + +class MediaContainerWithArtworkMetadataTypedDict(TypedDict): + title: NotRequired[str] + r"""The title of the item""" + type: NotRequired[MediaContainerWithArtworkType] + key: NotRequired[str] + r"""The path to the artwork""" + + +class MediaContainerWithArtworkMetadata(BaseModel): + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + title: Optional[str] = None + r"""The title of the item""" + + type: Optional[MediaContainerWithArtworkType] = None + + key: Optional[str] = None + r"""The path to the artwork""" + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + +class MediaContainerWithArtworkMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + metadata: NotRequired[List[MediaContainerWithArtworkMetadataTypedDict]] + + +class MediaContainerWithArtworkMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + metadata: Annotated[ + Optional[List[MediaContainerWithArtworkMetadata]], + pydantic.Field(alias="Metadata"), + ] = None + + +class MediaContainerWithArtworkTypedDict(TypedDict): + media_container: NotRequired[MediaContainerWithArtworkMediaContainerTypedDict] + + +class MediaContainerWithArtwork(BaseModel): + media_container: Annotated[ + Optional[MediaContainerWithArtworkMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None diff --git a/src/plex_api_client/models/components/mediacontainerwithdecision.py b/src/plex_api_client/models/components/mediacontainerwithdecision.py new file mode 100644 index 0000000..8549cc2 --- /dev/null +++ b/src/plex_api_client/models/components/mediacontainerwithdecision.py @@ -0,0 +1,870 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .filter_ import Filter, FilterTypedDict +from .image import Image, ImageTypedDict +from .sort import Sort, SortTypedDict +from .tag import Tag, TagTypedDict +from enum import Enum +from plex_api_client.types import BaseModel +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MediaContainerWithDecisionDecision(str, Enum): + COPY = "copy" + TRANSCODE = "transcode" + BURN = "burn" + UNAVAILABLE = "unavailable" + IGNORE = "ignore" + NONE = "none" + + +class MediaContainerWithDecisionLocation(str, Enum): + DIRECT = "direct" + SIDECAR_SUBS = "sidecar-subs" + SEGMENTS_VIDEO = "segments-video" + SEGMENTS_AUDIO = "segments-audio" + SEGMENTS_AV = "segments-av" + SEGMENTS_SUBS = "segments-subs" + EMBEDDED = "embedded" + SIDECAR = "sidecar" + + +class MediaContainerWithDecisionStreamTypedDict(TypedDict): + r"""`Stream` represents a particular stream from a media item, such as the video stream, audio stream, or subtitle stream. The stream may either be part of the file represented by the parent `Part` or, especially for subtitles, an external file. The stream contains more detailed information about the specific stream. For example, a video may include the `aspectRatio` at the `Media` level, but detailed information about the video stream like the color space will be included on the `Stream` for the video stream. Note that photos do not have streams (mostly as an optimization).""" + + default: NotRequired[bool] + audio_channel_layout: NotRequired[Any] + bit_depth: NotRequired[int] + bitrate: NotRequired[int] + can_auto_sync: NotRequired[bool] + r"""For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video.""" + chroma_location: NotRequired[Any] + chroma_subsampling: NotRequired[Any] + codec: NotRequired[Any] + r"""The codec of the stream, such as `h264` or `aac`""" + color_primaries: NotRequired[Any] + color_range: NotRequired[Any] + color_space: NotRequired[Any] + color_trc: NotRequired[Any] + display_title: NotRequired[Any] + r"""A friendly name for the stream, often comprised of the language and codec information""" + frame_rate: NotRequired[float] + has_scaling_matrix: NotRequired[Any] + height: NotRequired[int] + id: NotRequired[int] + index: NotRequired[int] + r"""If the stream is part of the `Part` and not an external resource, the index of the stream within that part""" + key: NotRequired[Any] + r"""If the stream is independently streamable, the key from which it can be streamed""" + language: NotRequired[Any] + language_code: NotRequired[Any] + r"""The three character language code for the stream contents""" + level: NotRequired[int] + profile: NotRequired[Any] + ref_frames: NotRequired[int] + sampling_rate: NotRequired[int] + selected: NotRequired[bool] + stream_identifier: NotRequired[int] + stream_type: NotRequired[int] + r"""A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics""" + width: NotRequired[int] + decision: NotRequired[MediaContainerWithDecisionDecision] + location: NotRequired[MediaContainerWithDecisionLocation] + + +class MediaContainerWithDecisionStream(BaseModel): + r"""`Stream` represents a particular stream from a media item, such as the video stream, audio stream, or subtitle stream. The stream may either be part of the file represented by the parent `Part` or, especially for subtitles, an external file. The stream contains more detailed information about the specific stream. For example, a video may include the `aspectRatio` at the `Media` level, but detailed information about the video stream like the color space will be included on the `Stream` for the video stream. Note that photos do not have streams (mostly as an optimization).""" + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + default: Optional[bool] = None + + audio_channel_layout: Annotated[ + Optional[Any], pydantic.Field(alias="audioChannelLayout") + ] = None + + bit_depth: Annotated[Optional[int], pydantic.Field(alias="bitDepth")] = None + + bitrate: Optional[int] = None + + can_auto_sync: Annotated[Optional[bool], pydantic.Field(alias="canAutoSync")] = None + r"""For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video.""" + + chroma_location: Annotated[ + Optional[Any], pydantic.Field(alias="chromaLocation") + ] = None + + chroma_subsampling: Annotated[ + Optional[Any], pydantic.Field(alias="chromaSubsampling") + ] = None + + codec: Optional[Any] = None + r"""The codec of the stream, such as `h264` or `aac`""" + + color_primaries: Annotated[ + Optional[Any], pydantic.Field(alias="colorPrimaries") + ] = None + + color_range: Annotated[Optional[Any], pydantic.Field(alias="colorRange")] = None + + color_space: Annotated[Optional[Any], pydantic.Field(alias="colorSpace")] = None + + color_trc: Annotated[Optional[Any], pydantic.Field(alias="colorTrc")] = None + + display_title: Annotated[Optional[Any], pydantic.Field(alias="displayTitle")] = None + r"""A friendly name for the stream, often comprised of the language and codec information""" + + frame_rate: Annotated[Optional[float], pydantic.Field(alias="frameRate")] = None + + has_scaling_matrix: Annotated[ + Optional[Any], pydantic.Field(alias="hasScalingMatrix") + ] = None + + height: Optional[int] = None + + id: Optional[int] = None + + index: Optional[int] = None + r"""If the stream is part of the `Part` and not an external resource, the index of the stream within that part""" + + key: Optional[Any] = None + r"""If the stream is independently streamable, the key from which it can be streamed""" + + language: Optional[Any] = None + + language_code: Annotated[Optional[Any], pydantic.Field(alias="languageCode")] = None + r"""The three character language code for the stream contents""" + + level: Optional[int] = None + + profile: Optional[Any] = None + + ref_frames: Annotated[Optional[int], pydantic.Field(alias="refFrames")] = None + + sampling_rate: Annotated[Optional[int], pydantic.Field(alias="samplingRate")] = None + + selected: Optional[bool] = None + + stream_identifier: Annotated[ + Optional[int], pydantic.Field(alias="streamIdentifier") + ] = None + + stream_type: Annotated[Optional[int], pydantic.Field(alias="streamType")] = None + r"""A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics""" + + width: Optional[int] = None + + decision: Optional[MediaContainerWithDecisionDecision] = None + + location: Optional[MediaContainerWithDecisionLocation] = None + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + +class Decision(str, Enum): + DIRECTPLAY = "directplay" + TRANSCODE = "transcode" + NONE = "none" + + +class MediaContainerWithDecisionPartTypedDict(TypedDict): + r"""`Part` represents a particular file or \"part\" of a media item. The part is the playable unit of the media hierarchy. Suppose that a movie library contains a movie that is broken up into files, reminiscent of a movie split across two BDs. The metadata item represents information about the movie, the media item represents this instance of the movie at this resolution and quality, and the part items represent the two playable files. If another media were added which contained the joining of these two parts transcoded down to a lower resolution, then this metadata would contain 2 medias, one with 2 parts and one with 1 part.""" + + audio_profile: NotRequired[Any] + container: NotRequired[Any] + r"""The container of the media file, such as `mp4` or `mkv`""" + duration: NotRequired[int] + r"""The duration of the media item, in milliseconds""" + file: NotRequired[Any] + r"""The local file path at which the part is stored on the server""" + has64bit_offsets: NotRequired[bool] + id: NotRequired[int] + key: NotRequired[Any] + r"""The key from which the media can be streamed""" + optimized_for_streaming: NotRequired[bool] + size: NotRequired[int] + r"""The size of the media, in bytes""" + stream: NotRequired[List[MediaContainerWithDecisionStreamTypedDict]] + video_profile: NotRequired[Any] + decision: NotRequired[Decision] + selected: NotRequired[bool] + + +class MediaContainerWithDecisionPart(BaseModel): + r"""`Part` represents a particular file or \"part\" of a media item. The part is the playable unit of the media hierarchy. Suppose that a movie library contains a movie that is broken up into files, reminiscent of a movie split across two BDs. The metadata item represents information about the movie, the media item represents this instance of the movie at this resolution and quality, and the part items represent the two playable files. If another media were added which contained the joining of these two parts transcoded down to a lower resolution, then this metadata would contain 2 medias, one with 2 parts and one with 1 part.""" + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + audio_profile: Annotated[Optional[Any], pydantic.Field(alias="audioProfile")] = None + + container: Optional[Any] = None + r"""The container of the media file, such as `mp4` or `mkv`""" + + duration: Optional[int] = None + r"""The duration of the media item, in milliseconds""" + + file: Optional[Any] = None + r"""The local file path at which the part is stored on the server""" + + has64bit_offsets: Annotated[ + Optional[bool], pydantic.Field(alias="has64bitOffsets") + ] = None + + id: Optional[int] = None + + key: Optional[Any] = None + r"""The key from which the media can be streamed""" + + optimized_for_streaming: Annotated[ + Optional[bool], pydantic.Field(alias="optimizedForStreaming") + ] = None + + size: Optional[int] = None + r"""The size of the media, in bytes""" + + stream: Annotated[ + Optional[List[MediaContainerWithDecisionStream]], pydantic.Field(alias="Stream") + ] = None + + video_profile: Annotated[Optional[Any], pydantic.Field(alias="videoProfile")] = None + + decision: Optional[Decision] = None + + selected: Optional[bool] = None + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + +class MediaContainerWithDecisionMediaTypedDict(TypedDict): + r"""`Media` represents an one or more media files (parts) and is a child of a metadata item. There aren't necessarily any guaranteed attributes on media elements since the attributes will vary based on the type. The possible attributes are not documented here, but they typically have self-evident names. High-level media information that can be used for badging and flagging, such as `videoResolution` and codecs, is included on the media element.""" + + aspect_ratio: NotRequired[float] + audio_channels: NotRequired[int] + audio_codec: NotRequired[Any] + audio_profile: NotRequired[Any] + bitrate: NotRequired[int] + container: NotRequired[Any] + duration: NotRequired[int] + has64bit_offsets: NotRequired[bool] + has_voice_activity: NotRequired[bool] + height: NotRequired[int] + id: NotRequired[int] + optimized_for_streaming: NotRequired[bool] + part: NotRequired[List[MediaContainerWithDecisionPartTypedDict]] + video_codec: NotRequired[Any] + video_frame_rate: NotRequired[Any] + video_profile: NotRequired[Any] + video_resolution: NotRequired[Any] + width: NotRequired[int] + abr: NotRequired[bool] + resource_session: NotRequired[str] + selected: NotRequired[bool] + + +class MediaContainerWithDecisionMedia(BaseModel): + r"""`Media` represents an one or more media files (parts) and is a child of a metadata item. There aren't necessarily any guaranteed attributes on media elements since the attributes will vary based on the type. The possible attributes are not documented here, but they typically have self-evident names. High-level media information that can be used for badging and flagging, such as `videoResolution` and codecs, is included on the media element.""" + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + aspect_ratio: Annotated[Optional[float], pydantic.Field(alias="aspectRatio")] = None + + audio_channels: Annotated[Optional[int], pydantic.Field(alias="audioChannels")] = ( + None + ) + + audio_codec: Annotated[Optional[Any], pydantic.Field(alias="audioCodec")] = None + + audio_profile: Annotated[Optional[Any], pydantic.Field(alias="audioProfile")] = None + + bitrate: Optional[int] = None + + container: Optional[Any] = None + + duration: Optional[int] = None + + has64bit_offsets: Annotated[ + Optional[bool], pydantic.Field(alias="has64bitOffsets") + ] = None + + has_voice_activity: Annotated[ + Optional[bool], pydantic.Field(alias="hasVoiceActivity") + ] = None + + height: Optional[int] = None + + id: Optional[int] = None + + optimized_for_streaming: Annotated[ + Optional[bool], pydantic.Field(alias="optimizedForStreaming") + ] = None + + part: Annotated[ + Optional[List[MediaContainerWithDecisionPart]], pydantic.Field(alias="Part") + ] = None + + video_codec: Annotated[Optional[Any], pydantic.Field(alias="videoCodec")] = None + + video_frame_rate: Annotated[ + Optional[Any], pydantic.Field(alias="videoFrameRate") + ] = None + + video_profile: Annotated[Optional[Any], pydantic.Field(alias="videoProfile")] = None + + video_resolution: Annotated[ + Optional[Any], pydantic.Field(alias="videoResolution") + ] = None + + width: Optional[int] = None + + abr: Optional[bool] = None + + resource_session: Annotated[ + Optional[str], pydantic.Field(alias="resourceSession") + ] = None + + selected: Optional[bool] = None + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + +class MediaContainerWithDecisionMetadataTypedDict(TypedDict): + r"""Items in a library are referred to as \"metadata items.\" These metadata items are distinct from \"media items\" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a \"media item\" will have one or more \"media parts\" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + + Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + + Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, \"leaves\" refer to metadata items which has associated media (there is no media for a season nor show). A show will have \"children\" in the form of seasons and a season will have \"children\" in the form of episodes and episodes have \"parent\" in the form of a season which has a \"parent\" in the form of a show. Similarly, a show has \"grandchildren\" in the form of episodse and an episode has a \"grandparent\" in the form of a show. + + """ + + title: NotRequired[Any] + r"""The title of the item (e.g. “300” or “The Simpsons”)""" + type: NotRequired[Any] + r"""The type of the video item, such as `movie`, `episode`, or `clip`.""" + absolute_index: NotRequired[int] + r"""When present, contains the disc number for a track on multi-disc albums.""" + added_at: NotRequired[int] + r"""In units of seconds since the epoch, returns the time at which the item was added to the library.""" + art: NotRequired[Any] + r"""When present, the URL for the background artwork for the item.""" + audience_rating: NotRequired[float] + r"""Some rating systems separate reviewer ratings from audience ratings""" + audience_rating_image: NotRequired[Any] + r"""A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).""" + autotag: NotRequired[List[TagTypedDict]] + banner: NotRequired[Any] + r"""When present, the URL for a banner graphic for the item.""" + chapter_source: NotRequired[Any] + r"""When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).""" + composite: NotRequired[Any] + r"""When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).""" + content_rating: NotRequired[Any] + r"""If known, the content rating (e.g. MPAA) for an item.""" + country: NotRequired[List[TagTypedDict]] + director: NotRequired[List[TagTypedDict]] + duration: NotRequired[int] + r"""When present, the duration for the item, in units of milliseconds.""" + filter_: NotRequired[List[FilterTypedDict]] + r"""Typically only seen in metadata at a library's top level""" + genre: NotRequired[List[TagTypedDict]] + grandparent_art: NotRequired[str] + r"""The `art` of the grandparent""" + grandparent_hero: NotRequired[str] + r"""The `hero` of the grandparent""" + grandparent_key: NotRequired[str] + r"""The `key` of the grandparent""" + grandparent_rating_key: NotRequired[str] + r"""The `ratingKey` of the grandparent""" + grandparent_theme: NotRequired[str] + r"""The `theme` of the grandparent""" + grandparent_thumb: NotRequired[str] + r"""The `thumb` of the grandparent""" + grandparent_title: NotRequired[str] + r"""The `title` of the grandparent""" + guid: NotRequired[List[TagTypedDict]] + hero: NotRequired[Any] + r"""When present, the URL for a hero image for the item.""" + image: NotRequired[List[ImageTypedDict]] + index: NotRequired[int] + r"""When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.""" + key: NotRequired[Any] + r"""The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.""" + last_viewed_at: NotRequired[int] + r"""When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.""" + leaf_count: NotRequired[int] + r"""For shows and seasons, contains the number of total episodes.""" + media: NotRequired[List[MediaContainerWithDecisionMediaTypedDict]] + originally_available_at: NotRequired[Any] + r"""When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.""" + original_title: NotRequired[Any] + r"""When present, used to indicate an item's original title, e.g. a movie's foreign title.""" + parent_hero: NotRequired[str] + r"""The `hero` of the parent""" + parent_index: NotRequired[int] + r"""The `index` of the parent""" + parent_key: NotRequired[str] + r"""The `key` of the parent""" + parent_rating_key: NotRequired[str] + r"""The `ratingKey` of the parent""" + parent_thumb: NotRequired[str] + r"""The `thumb` of the parent""" + parent_title: NotRequired[str] + r"""The `title` of the parent""" + primary_extra_key: NotRequired[Any] + r"""Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.""" + prompt: NotRequired[str] + r"""Prompt to give the user for this directory (such as `Search Movies`)""" + rating: NotRequired[float] + r"""When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.""" + rating_array: NotRequired[List[TagTypedDict]] + rating_count: NotRequired[int] + r"""Number of ratings under this metadata""" + rating_image: NotRequired[Any] + r"""When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.""" + rating_key: NotRequired[Any] + r"""This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.""" + role: NotRequired[List[TagTypedDict]] + search: NotRequired[bool] + r"""Indicates this is a search directory""" + secondary: NotRequired[bool] + r"""Used by old clients to provide nested menus allowing for primative (but structured) navigation.""" + skip_children: NotRequired[bool] + r"""When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc.""" + skip_parent: NotRequired[bool] + r"""When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show).""" + sort: NotRequired[List[SortTypedDict]] + r"""Typically only seen in metadata at a library's top level""" + studio: NotRequired[Any] + r"""When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).""" + subtype: NotRequired[Any] + r"""The subtype of the video item, such as `photo` when the video item is in a photo library""" + summary: NotRequired[Any] + r"""When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).""" + tagline: NotRequired[Any] + r"""When present, a pithy one-liner about the item (usually only seen for movies).""" + theme: NotRequired[Any] + r"""When present, the URL for theme music for the item (usually only for TV shows).""" + thumb: NotRequired[Any] + r"""When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.""" + title_sort: NotRequired[Any] + r"""Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”).""" + updated_at: NotRequired[int] + r"""In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).""" + user_rating: NotRequired[float] + r"""When the user has rated an item, this contains the user rating""" + view_count: NotRequired[int] + r"""When a users has completed watched or listened to an item, this attribute contains the number of consumptions.""" + viewed_leaf_count: NotRequired[int] + r"""For shows and seasons, contains the number of viewed episodes.""" + view_offset: NotRequired[int] + r"""When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.""" + writer: NotRequired[List[TagTypedDict]] + year: NotRequired[int] + r"""When present, the year associated with the item's release (e.g. release year for a movie).""" + + +class MediaContainerWithDecisionMetadata(BaseModel): + r"""Items in a library are referred to as \"metadata items.\" These metadata items are distinct from \"media items\" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a \"media item\" will have one or more \"media parts\" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + + Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + + Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, \"leaves\" refer to metadata items which has associated media (there is no media for a season nor show). A show will have \"children\" in the form of seasons and a season will have \"children\" in the form of episodes and episodes have \"parent\" in the form of a season which has a \"parent\" in the form of a show. Similarly, a show has \"grandchildren\" in the form of episodse and an episode has a \"grandparent\" in the form of a show. + + """ + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + title: Optional[Any] = None + r"""The title of the item (e.g. “300” or “The Simpsons”)""" + + type: Optional[Any] = None + r"""The type of the video item, such as `movie`, `episode`, or `clip`.""" + + absolute_index: Annotated[Optional[int], pydantic.Field(alias="absoluteIndex")] = ( + None + ) + r"""When present, contains the disc number for a track on multi-disc albums.""" + + added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None + r"""In units of seconds since the epoch, returns the time at which the item was added to the library.""" + + art: Optional[Any] = None + r"""When present, the URL for the background artwork for the item.""" + + audience_rating: Annotated[ + Optional[float], pydantic.Field(alias="audienceRating") + ] = None + r"""Some rating systems separate reviewer ratings from audience ratings""" + + audience_rating_image: Annotated[ + Optional[Any], pydantic.Field(alias="audienceRatingImage") + ] = None + r"""A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).""" + + autotag: Annotated[Optional[List[Tag]], pydantic.Field(alias="Autotag")] = None + + banner: Optional[Any] = None + r"""When present, the URL for a banner graphic for the item.""" + + chapter_source: Annotated[Optional[Any], pydantic.Field(alias="chapterSource")] = ( + None + ) + r"""When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).""" + + composite: Optional[Any] = None + r"""When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).""" + + content_rating: Annotated[Optional[Any], pydantic.Field(alias="contentRating")] = ( + None + ) + r"""If known, the content rating (e.g. MPAA) for an item.""" + + country: Annotated[Optional[List[Tag]], pydantic.Field(alias="Country")] = None + + director: Annotated[Optional[List[Tag]], pydantic.Field(alias="Director")] = None + + duration: Optional[int] = None + r"""When present, the duration for the item, in units of milliseconds.""" + + filter_: Annotated[Optional[List[Filter]], pydantic.Field(alias="Filter")] = None + r"""Typically only seen in metadata at a library's top level""" + + genre: Annotated[Optional[List[Tag]], pydantic.Field(alias="Genre")] = None + + grandparent_art: Annotated[ + Optional[str], pydantic.Field(alias="grandparentArt") + ] = None + r"""The `art` of the grandparent""" + + grandparent_hero: Annotated[ + Optional[str], pydantic.Field(alias="grandparentHero") + ] = None + r"""The `hero` of the grandparent""" + + grandparent_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentKey") + ] = None + r"""The `key` of the grandparent""" + + grandparent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentRatingKey") + ] = None + r"""The `ratingKey` of the grandparent""" + + grandparent_theme: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTheme") + ] = None + r"""The `theme` of the grandparent""" + + grandparent_thumb: Annotated[ + Optional[str], pydantic.Field(alias="grandparentThumb") + ] = None + r"""The `thumb` of the grandparent""" + + grandparent_title: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTitle") + ] = None + r"""The `title` of the grandparent""" + + guid: Annotated[Optional[List[Tag]], pydantic.Field(alias="Guid")] = None + + hero: Optional[Any] = None + r"""When present, the URL for a hero image for the item.""" + + image: Annotated[Optional[List[Image]], pydantic.Field(alias="Image")] = None + + index: Optional[int] = None + r"""When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.""" + + key: Optional[Any] = None + r"""The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.""" + + last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( + None + ) + r"""When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.""" + + leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None + r"""For shows and seasons, contains the number of total episodes.""" + + media: Annotated[ + Optional[List[MediaContainerWithDecisionMedia]], pydantic.Field(alias="Media") + ] = None + + originally_available_at: Annotated[ + Optional[Any], pydantic.Field(alias="originallyAvailableAt") + ] = None + r"""When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.""" + + original_title: Annotated[Optional[Any], pydantic.Field(alias="originalTitle")] = ( + None + ) + r"""When present, used to indicate an item's original title, e.g. a movie's foreign title.""" + + parent_hero: Annotated[Optional[str], pydantic.Field(alias="parentHero")] = None + r"""The `hero` of the parent""" + + parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None + r"""The `index` of the parent""" + + parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None + r"""The `key` of the parent""" + + parent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="parentRatingKey") + ] = None + r"""The `ratingKey` of the parent""" + + parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None + r"""The `thumb` of the parent""" + + parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None + r"""The `title` of the parent""" + + primary_extra_key: Annotated[ + Optional[Any], pydantic.Field(alias="primaryExtraKey") + ] = None + r"""Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.""" + + prompt: Optional[str] = None + r"""Prompt to give the user for this directory (such as `Search Movies`)""" + + rating: Optional[float] = None + r"""When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.""" + + rating_array: Annotated[Optional[List[Tag]], pydantic.Field(alias="Rating")] = None + + rating_count: Annotated[Optional[int], pydantic.Field(alias="ratingCount")] = None + r"""Number of ratings under this metadata""" + + rating_image: Annotated[Optional[Any], pydantic.Field(alias="ratingImage")] = None + r"""When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.""" + + rating_key: Annotated[Optional[Any], pydantic.Field(alias="ratingKey")] = None + r"""This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.""" + + role: Annotated[Optional[List[Tag]], pydantic.Field(alias="Role")] = None + + search: Optional[bool] = None + r"""Indicates this is a search directory""" + + secondary: Optional[bool] = None + r"""Used by old clients to provide nested menus allowing for primative (but structured) navigation.""" + + skip_children: Annotated[Optional[bool], pydantic.Field(alias="skipChildren")] = ( + None + ) + r"""When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc.""" + + skip_parent: Annotated[Optional[bool], pydantic.Field(alias="skipParent")] = None + r"""When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show).""" + + sort: Annotated[Optional[List[Sort]], pydantic.Field(alias="Sort")] = None + r"""Typically only seen in metadata at a library's top level""" + + studio: Optional[Any] = None + r"""When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).""" + + subtype: Optional[Any] = None + r"""The subtype of the video item, such as `photo` when the video item is in a photo library""" + + summary: Optional[Any] = None + r"""When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).""" + + tagline: Optional[Any] = None + r"""When present, a pithy one-liner about the item (usually only seen for movies).""" + + theme: Optional[Any] = None + r"""When present, the URL for theme music for the item (usually only for TV shows).""" + + thumb: Optional[Any] = None + r"""When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.""" + + title_sort: Annotated[Optional[Any], pydantic.Field(alias="titleSort")] = None + r"""Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”).""" + + updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None + r"""In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).""" + + user_rating: Annotated[Optional[float], pydantic.Field(alias="userRating")] = None + r"""When the user has rated an item, this contains the user rating""" + + view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None + r"""When a users has completed watched or listened to an item, this attribute contains the number of consumptions.""" + + viewed_leaf_count: Annotated[ + Optional[int], pydantic.Field(alias="viewedLeafCount") + ] = None + r"""For shows and seasons, contains the number of viewed episodes.""" + + view_offset: Annotated[Optional[int], pydantic.Field(alias="viewOffset")] = None + r"""When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.""" + + writer: Annotated[Optional[List[Tag]], pydantic.Field(alias="Writer")] = None + + year: Optional[int] = None + r"""When present, the year associated with the item's release (e.g. release year for a movie).""" + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + +class MediaContainerWithDecisionMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + available_bandwidth: NotRequired[int] + r"""The maximum available bitrate when the decision was rendered.""" + direct_play_decision_code: NotRequired[int] + direct_play_decision_text: NotRequired[str] + general_decision_code: NotRequired[int] + r"""The overall decision. 1xxx are playback can succeed, 2xxx are a general error (such as insufficient bandwidth), 3xxx are errors in direct play, and 4xxx are errors in transcodes. Same codes are used in all.""" + general_decision_text: NotRequired[str] + mde_decision_code: NotRequired[int] + r"""The code indicating the status of evaluation of playback when client indicates `hasMDE=1`""" + mde_decision_text: NotRequired[str] + r"""Descriptive text for the above code""" + metadata: NotRequired[List[MediaContainerWithDecisionMetadataTypedDict]] + transcode_decision_code: NotRequired[int] + transcode_decision_text: NotRequired[str] + + +class MediaContainerWithDecisionMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + available_bandwidth: Annotated[ + Optional[int], pydantic.Field(alias="availableBandwidth") + ] = None + r"""The maximum available bitrate when the decision was rendered.""" + + direct_play_decision_code: Annotated[ + Optional[int], pydantic.Field(alias="directPlayDecisionCode") + ] = None + + direct_play_decision_text: Annotated[ + Optional[str], pydantic.Field(alias="directPlayDecisionText") + ] = None + + general_decision_code: Annotated[ + Optional[int], pydantic.Field(alias="generalDecisionCode") + ] = None + r"""The overall decision. 1xxx are playback can succeed, 2xxx are a general error (such as insufficient bandwidth), 3xxx are errors in direct play, and 4xxx are errors in transcodes. Same codes are used in all.""" + + general_decision_text: Annotated[ + Optional[str], pydantic.Field(alias="generalDecisionText") + ] = None + + mde_decision_code: Annotated[ + Optional[int], pydantic.Field(alias="mdeDecisionCode") + ] = None + r"""The code indicating the status of evaluation of playback when client indicates `hasMDE=1`""" + + mde_decision_text: Annotated[ + Optional[str], pydantic.Field(alias="mdeDecisionText") + ] = None + r"""Descriptive text for the above code""" + + metadata: Annotated[ + Optional[List[MediaContainerWithDecisionMetadata]], + pydantic.Field(alias="Metadata"), + ] = None + + transcode_decision_code: Annotated[ + Optional[int], pydantic.Field(alias="transcodeDecisionCode") + ] = None + + transcode_decision_text: Annotated[ + Optional[str], pydantic.Field(alias="transcodeDecisionText") + ] = None + + +class MediaContainerWithDecisionTypedDict(TypedDict): + r"""`MediaContainer` is commonly found as the root of a response and is a pretty generic container. Common attributes include `identifier` and things related to paging (`offset`, `size`, `totalSize`). + + It is also common for a `MediaContainer` to contain attributes \"hoisted\" from its children. If every element in the container would have had the same attribute, then that attribute can be present on the container instead of being repeated on every element. For example, an album's list of tracks might include `parentTitle` on the container since all of the tracks have the same album title. A container may have a `source` attribute when all of the items came from the same source. Generally speaking, when looking for an attribute on an item, if the attribute wasn't found then the container should be checked for that attribute as well. + + """ + + media_container: NotRequired[MediaContainerWithDecisionMediaContainerTypedDict] + + +class MediaContainerWithDecision(BaseModel): + r"""`MediaContainer` is commonly found as the root of a response and is a pretty generic container. Common attributes include `identifier` and things related to paging (`offset`, `size`, `totalSize`). + + It is also common for a `MediaContainer` to contain attributes \"hoisted\" from its children. If every element in the container would have had the same attribute, then that attribute can be present on the container instead of being repeated on every element. For example, an album's list of tracks might include `parentTitle` on the container since all of the tracks have the same album title. A container may have a `source` attribute when all of the items came from the same source. Generally speaking, when looking for an attribute on an item, if the attribute wasn't found then the container should be checked for that attribute as well. + + """ + + media_container: Annotated[ + Optional[MediaContainerWithDecisionMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None diff --git a/src/plex_api_client/models/components/mediacontainerwithdevice.py b/src/plex_api_client/models/components/mediacontainerwithdevice.py new file mode 100644 index 0000000..e098161 --- /dev/null +++ b/src/plex_api_client/models/components/mediacontainerwithdevice.py @@ -0,0 +1,111 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .channelmapping import ChannelMapping, ChannelMappingTypedDict +from plex_api_client.types import BaseModel +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MediaContainerWithDeviceDeviceTypedDict(TypedDict): + channel_mapping: NotRequired[List[ChannelMappingTypedDict]] + key: NotRequired[str] + last_seen_at: NotRequired[int] + make: NotRequired[str] + model: NotRequired[str] + model_number: NotRequired[str] + protocol: NotRequired[str] + sources: NotRequired[str] + state: NotRequired[str] + status: NotRequired[str] + tuners: NotRequired[str] + uri: NotRequired[str] + uuid: NotRequired[str] + + +class MediaContainerWithDeviceDevice(BaseModel): + channel_mapping: Annotated[ + Optional[List[ChannelMapping]], pydantic.Field(alias="ChannelMapping") + ] = None + + key: Optional[str] = None + + last_seen_at: Annotated[Optional[int], pydantic.Field(alias="lastSeenAt")] = None + + make: Optional[str] = None + + model: Optional[str] = None + + model_number: Annotated[Optional[str], pydantic.Field(alias="modelNumber")] = None + + protocol: Optional[str] = None + + sources: Optional[str] = None + + state: Optional[str] = None + + status: Optional[str] = None + + tuners: Optional[str] = None + + uri: Optional[str] = None + + uuid: Optional[str] = None + + +class MediaContainerWithDeviceMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + device: NotRequired[List[MediaContainerWithDeviceDeviceTypedDict]] + + +class MediaContainerWithDeviceMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + device: Annotated[ + Optional[List[MediaContainerWithDeviceDevice]], pydantic.Field(alias="Device") + ] = None + + +class MediaContainerWithDeviceTypedDict(TypedDict): + media_container: NotRequired[MediaContainerWithDeviceMediaContainerTypedDict] + + +class MediaContainerWithDevice(BaseModel): + media_container: Annotated[ + Optional[MediaContainerWithDeviceMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None diff --git a/src/plex_api_client/models/components/mediacontainerwithdirectory.py b/src/plex_api_client/models/components/mediacontainerwithdirectory.py new file mode 100644 index 0000000..4231741 --- /dev/null +++ b/src/plex_api_client/models/components/mediacontainerwithdirectory.py @@ -0,0 +1,65 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .directory import Directory, DirectoryTypedDict +from plex_api_client.types import BaseModel +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MediaContainerWithDirectoryMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + directory: NotRequired[List[DirectoryTypedDict]] + + +class MediaContainerWithDirectoryMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + directory: Annotated[ + Optional[List[Directory]], pydantic.Field(alias="Directory") + ] = None + + +class MediaContainerWithDirectoryTypedDict(TypedDict): + media_container: NotRequired[MediaContainerWithDirectoryMediaContainerTypedDict] + + +class MediaContainerWithDirectory(BaseModel): + media_container: Annotated[ + Optional[MediaContainerWithDirectoryMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None diff --git a/src/plex_api_client/models/components/mediacontainerwithhubs.py b/src/plex_api_client/models/components/mediacontainerwithhubs.py new file mode 100644 index 0000000..1cbe5ee --- /dev/null +++ b/src/plex_api_client/models/components/mediacontainerwithhubs.py @@ -0,0 +1,67 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .hub import Hub, HubTypedDict +from plex_api_client.types import BaseModel +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MediaContainerWithHubsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + hub: NotRequired[List[HubTypedDict]] + + +class MediaContainerWithHubsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + hub: Annotated[Optional[List[Hub]], pydantic.Field(alias="Hub")] = None + + +class MediaContainerWithHubsTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[MediaContainerWithHubsMediaContainerTypedDict] + + +class MediaContainerWithHubs(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[MediaContainerWithHubsMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None diff --git a/src/plex_api_client/models/components/mediacontainerwithlineup.py b/src/plex_api_client/models/components/mediacontainerwithlineup.py new file mode 100644 index 0000000..b913ccb --- /dev/null +++ b/src/plex_api_client/models/components/mediacontainerwithlineup.py @@ -0,0 +1,68 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .lineup import Lineup, LineupTypedDict +from plex_api_client.types import BaseModel +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MediaContainerWithLineupMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + lineup: NotRequired[List[LineupTypedDict]] + uuid: NotRequired[str] + r"""The UUID of this set lineups""" + + +class MediaContainerWithLineupMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + lineup: Annotated[Optional[List[Lineup]], pydantic.Field(alias="Lineup")] = None + + uuid: Optional[str] = None + r"""The UUID of this set lineups""" + + +class MediaContainerWithLineupTypedDict(TypedDict): + media_container: NotRequired[MediaContainerWithLineupMediaContainerTypedDict] + + +class MediaContainerWithLineup(BaseModel): + media_container: Annotated[ + Optional[MediaContainerWithLineupMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None diff --git a/src/plex_api_client/models/components/mediacontainerwithmetadata.py b/src/plex_api_client/models/components/mediacontainerwithmetadata.py new file mode 100644 index 0000000..4f9a26b --- /dev/null +++ b/src/plex_api_client/models/components/mediacontainerwithmetadata.py @@ -0,0 +1,65 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .metadata import Metadata, MetadataTypedDict +from plex_api_client.types import BaseModel +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MediaContainerWithMetadataMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + metadata: NotRequired[List[MetadataTypedDict]] + + +class MediaContainerWithMetadataMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + metadata: Annotated[Optional[List[Metadata]], pydantic.Field(alias="Metadata")] = ( + None + ) + + +class MediaContainerWithMetadataTypedDict(TypedDict): + media_container: NotRequired[MediaContainerWithMetadataMediaContainerTypedDict] + + +class MediaContainerWithMetadata(BaseModel): + media_container: Annotated[ + Optional[MediaContainerWithMetadataMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None diff --git a/src/plex_api_client/models/components/mediacontainerwithnestedmetadata.py b/src/plex_api_client/models/components/mediacontainerwithnestedmetadata.py new file mode 100644 index 0000000..1d7c40c --- /dev/null +++ b/src/plex_api_client/models/components/mediacontainerwithnestedmetadata.py @@ -0,0 +1,465 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .filter_ import Filter, FilterTypedDict +from .image import Image, ImageTypedDict +from .items import Items, ItemsTypedDict +from .media import Media, MediaTypedDict +from .sort import Sort, SortTypedDict +from .tag import Tag, TagTypedDict +from plex_api_client.types import BaseModel +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MetadataItemTypedDict(TypedDict): + r"""Items in a library are referred to as \"metadata items.\" These metadata items are distinct from \"media items\" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a \"media item\" will have one or more \"media parts\" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + + Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + + Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, \"leaves\" refer to metadata items which has associated media (there is no media for a season nor show). A show will have \"children\" in the form of seasons and a season will have \"children\" in the form of episodes and episodes have \"parent\" in the form of a season which has a \"parent\" in the form of a show. Similarly, a show has \"grandchildren\" in the form of episodse and an episode has a \"grandparent\" in the form of a show. + + """ + + title: NotRequired[Any] + r"""The title of the item (e.g. “300” or “The Simpsons”)""" + type: NotRequired[Any] + r"""The type of the video item, such as `movie`, `episode`, or `clip`.""" + absolute_index: NotRequired[int] + r"""When present, contains the disc number for a track on multi-disc albums.""" + added_at: NotRequired[int] + r"""In units of seconds since the epoch, returns the time at which the item was added to the library.""" + art: NotRequired[Any] + r"""When present, the URL for the background artwork for the item.""" + audience_rating: NotRequired[float] + r"""Some rating systems separate reviewer ratings from audience ratings""" + audience_rating_image: NotRequired[Any] + r"""A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).""" + autotag: NotRequired[List[TagTypedDict]] + banner: NotRequired[Any] + r"""When present, the URL for a banner graphic for the item.""" + chapter_source: NotRequired[Any] + r"""When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).""" + composite: NotRequired[Any] + r"""When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).""" + content_rating: NotRequired[Any] + r"""If known, the content rating (e.g. MPAA) for an item.""" + country: NotRequired[List[TagTypedDict]] + director: NotRequired[List[TagTypedDict]] + duration: NotRequired[int] + r"""When present, the duration for the item, in units of milliseconds.""" + filter_: NotRequired[List[FilterTypedDict]] + r"""Typically only seen in metadata at a library's top level""" + genre: NotRequired[List[TagTypedDict]] + grandparent_art: NotRequired[str] + r"""The `art` of the grandparent""" + grandparent_hero: NotRequired[str] + r"""The `hero` of the grandparent""" + grandparent_key: NotRequired[str] + r"""The `key` of the grandparent""" + grandparent_rating_key: NotRequired[str] + r"""The `ratingKey` of the grandparent""" + grandparent_theme: NotRequired[str] + r"""The `theme` of the grandparent""" + grandparent_thumb: NotRequired[str] + r"""The `thumb` of the grandparent""" + grandparent_title: NotRequired[str] + r"""The `title` of the grandparent""" + guid: NotRequired[List[TagTypedDict]] + hero: NotRequired[Any] + r"""When present, the URL for a hero image for the item.""" + image: NotRequired[List[ImageTypedDict]] + index: NotRequired[int] + r"""When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.""" + key: NotRequired[Any] + r"""The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.""" + last_viewed_at: NotRequired[int] + r"""When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.""" + leaf_count: NotRequired[int] + r"""For shows and seasons, contains the number of total episodes.""" + media: NotRequired[List[MediaTypedDict]] + originally_available_at: NotRequired[Any] + r"""When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.""" + original_title: NotRequired[Any] + r"""When present, used to indicate an item's original title, e.g. a movie's foreign title.""" + parent_hero: NotRequired[str] + r"""The `hero` of the parent""" + parent_index: NotRequired[int] + r"""The `index` of the parent""" + parent_key: NotRequired[str] + r"""The `key` of the parent""" + parent_rating_key: NotRequired[str] + r"""The `ratingKey` of the parent""" + parent_thumb: NotRequired[str] + r"""The `thumb` of the parent""" + parent_title: NotRequired[str] + r"""The `title` of the parent""" + primary_extra_key: NotRequired[Any] + r"""Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.""" + prompt: NotRequired[str] + r"""Prompt to give the user for this directory (such as `Search Movies`)""" + rating: NotRequired[float] + r"""When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.""" + rating_array: NotRequired[List[TagTypedDict]] + rating_count: NotRequired[int] + r"""Number of ratings under this metadata""" + rating_image: NotRequired[Any] + r"""When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.""" + rating_key: NotRequired[Any] + r"""This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.""" + role: NotRequired[List[TagTypedDict]] + search: NotRequired[bool] + r"""Indicates this is a search directory""" + secondary: NotRequired[bool] + r"""Used by old clients to provide nested menus allowing for primative (but structured) navigation.""" + skip_children: NotRequired[bool] + r"""When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc.""" + skip_parent: NotRequired[bool] + r"""When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show).""" + sort: NotRequired[List[SortTypedDict]] + r"""Typically only seen in metadata at a library's top level""" + studio: NotRequired[Any] + r"""When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).""" + subtype: NotRequired[Any] + r"""The subtype of the video item, such as `photo` when the video item is in a photo library""" + summary: NotRequired[Any] + r"""When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).""" + tagline: NotRequired[Any] + r"""When present, a pithy one-liner about the item (usually only seen for movies).""" + theme: NotRequired[Any] + r"""When present, the URL for theme music for the item (usually only for TV shows).""" + thumb: NotRequired[Any] + r"""When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.""" + title_sort: NotRequired[Any] + r"""Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”).""" + updated_at: NotRequired[int] + r"""In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).""" + user_rating: NotRequired[float] + r"""When the user has rated an item, this contains the user rating""" + view_count: NotRequired[int] + r"""When a users has completed watched or listened to an item, this attribute contains the number of consumptions.""" + viewed_leaf_count: NotRequired[int] + r"""For shows and seasons, contains the number of viewed episodes.""" + view_offset: NotRequired[int] + r"""When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.""" + writer: NotRequired[List[TagTypedDict]] + year: NotRequired[int] + r"""When present, the year associated with the item's release (e.g. release year for a movie).""" + metadata_item: NotRequired[List[ItemsTypedDict]] + + +class MetadataItem(BaseModel): + r"""Items in a library are referred to as \"metadata items.\" These metadata items are distinct from \"media items\" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a \"media item\" will have one or more \"media parts\" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + + Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + + Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, \"leaves\" refer to metadata items which has associated media (there is no media for a season nor show). A show will have \"children\" in the form of seasons and a season will have \"children\" in the form of episodes and episodes have \"parent\" in the form of a season which has a \"parent\" in the form of a show. Similarly, a show has \"grandchildren\" in the form of episodse and an episode has a \"grandparent\" in the form of a show. + + """ + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + title: Optional[Any] = None + r"""The title of the item (e.g. “300” or “The Simpsons”)""" + + type: Optional[Any] = None + r"""The type of the video item, such as `movie`, `episode`, or `clip`.""" + + absolute_index: Annotated[Optional[int], pydantic.Field(alias="absoluteIndex")] = ( + None + ) + r"""When present, contains the disc number for a track on multi-disc albums.""" + + added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None + r"""In units of seconds since the epoch, returns the time at which the item was added to the library.""" + + art: Optional[Any] = None + r"""When present, the URL for the background artwork for the item.""" + + audience_rating: Annotated[ + Optional[float], pydantic.Field(alias="audienceRating") + ] = None + r"""Some rating systems separate reviewer ratings from audience ratings""" + + audience_rating_image: Annotated[ + Optional[Any], pydantic.Field(alias="audienceRatingImage") + ] = None + r"""A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).""" + + autotag: Annotated[Optional[List[Tag]], pydantic.Field(alias="Autotag")] = None + + banner: Optional[Any] = None + r"""When present, the URL for a banner graphic for the item.""" + + chapter_source: Annotated[Optional[Any], pydantic.Field(alias="chapterSource")] = ( + None + ) + r"""When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).""" + + composite: Optional[Any] = None + r"""When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).""" + + content_rating: Annotated[Optional[Any], pydantic.Field(alias="contentRating")] = ( + None + ) + r"""If known, the content rating (e.g. MPAA) for an item.""" + + country: Annotated[Optional[List[Tag]], pydantic.Field(alias="Country")] = None + + director: Annotated[Optional[List[Tag]], pydantic.Field(alias="Director")] = None + + duration: Optional[int] = None + r"""When present, the duration for the item, in units of milliseconds.""" + + filter_: Annotated[Optional[List[Filter]], pydantic.Field(alias="Filter")] = None + r"""Typically only seen in metadata at a library's top level""" + + genre: Annotated[Optional[List[Tag]], pydantic.Field(alias="Genre")] = None + + grandparent_art: Annotated[ + Optional[str], pydantic.Field(alias="grandparentArt") + ] = None + r"""The `art` of the grandparent""" + + grandparent_hero: Annotated[ + Optional[str], pydantic.Field(alias="grandparentHero") + ] = None + r"""The `hero` of the grandparent""" + + grandparent_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentKey") + ] = None + r"""The `key` of the grandparent""" + + grandparent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentRatingKey") + ] = None + r"""The `ratingKey` of the grandparent""" + + grandparent_theme: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTheme") + ] = None + r"""The `theme` of the grandparent""" + + grandparent_thumb: Annotated[ + Optional[str], pydantic.Field(alias="grandparentThumb") + ] = None + r"""The `thumb` of the grandparent""" + + grandparent_title: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTitle") + ] = None + r"""The `title` of the grandparent""" + + guid: Annotated[Optional[List[Tag]], pydantic.Field(alias="Guid")] = None + + hero: Optional[Any] = None + r"""When present, the URL for a hero image for the item.""" + + image: Annotated[Optional[List[Image]], pydantic.Field(alias="Image")] = None + + index: Optional[int] = None + r"""When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.""" + + key: Optional[Any] = None + r"""The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.""" + + last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( + None + ) + r"""When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.""" + + leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None + r"""For shows and seasons, contains the number of total episodes.""" + + media: Annotated[Optional[List[Media]], pydantic.Field(alias="Media")] = None + + originally_available_at: Annotated[ + Optional[Any], pydantic.Field(alias="originallyAvailableAt") + ] = None + r"""When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.""" + + original_title: Annotated[Optional[Any], pydantic.Field(alias="originalTitle")] = ( + None + ) + r"""When present, used to indicate an item's original title, e.g. a movie's foreign title.""" + + parent_hero: Annotated[Optional[str], pydantic.Field(alias="parentHero")] = None + r"""The `hero` of the parent""" + + parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None + r"""The `index` of the parent""" + + parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None + r"""The `key` of the parent""" + + parent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="parentRatingKey") + ] = None + r"""The `ratingKey` of the parent""" + + parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None + r"""The `thumb` of the parent""" + + parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None + r"""The `title` of the parent""" + + primary_extra_key: Annotated[ + Optional[Any], pydantic.Field(alias="primaryExtraKey") + ] = None + r"""Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.""" + + prompt: Optional[str] = None + r"""Prompt to give the user for this directory (such as `Search Movies`)""" + + rating: Optional[float] = None + r"""When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.""" + + rating_array: Annotated[Optional[List[Tag]], pydantic.Field(alias="Rating")] = None + + rating_count: Annotated[Optional[int], pydantic.Field(alias="ratingCount")] = None + r"""Number of ratings under this metadata""" + + rating_image: Annotated[Optional[Any], pydantic.Field(alias="ratingImage")] = None + r"""When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.""" + + rating_key: Annotated[Optional[Any], pydantic.Field(alias="ratingKey")] = None + r"""This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.""" + + role: Annotated[Optional[List[Tag]], pydantic.Field(alias="Role")] = None + + search: Optional[bool] = None + r"""Indicates this is a search directory""" + + secondary: Optional[bool] = None + r"""Used by old clients to provide nested menus allowing for primative (but structured) navigation.""" + + skip_children: Annotated[Optional[bool], pydantic.Field(alias="skipChildren")] = ( + None + ) + r"""When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc.""" + + skip_parent: Annotated[Optional[bool], pydantic.Field(alias="skipParent")] = None + r"""When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show).""" + + sort: Annotated[Optional[List[Sort]], pydantic.Field(alias="Sort")] = None + r"""Typically only seen in metadata at a library's top level""" + + studio: Optional[Any] = None + r"""When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).""" + + subtype: Optional[Any] = None + r"""The subtype of the video item, such as `photo` when the video item is in a photo library""" + + summary: Optional[Any] = None + r"""When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).""" + + tagline: Optional[Any] = None + r"""When present, a pithy one-liner about the item (usually only seen for movies).""" + + theme: Optional[Any] = None + r"""When present, the URL for theme music for the item (usually only for TV shows).""" + + thumb: Optional[Any] = None + r"""When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.""" + + title_sort: Annotated[Optional[Any], pydantic.Field(alias="titleSort")] = None + r"""Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”).""" + + updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None + r"""In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).""" + + user_rating: Annotated[Optional[float], pydantic.Field(alias="userRating")] = None + r"""When the user has rated an item, this contains the user rating""" + + view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None + r"""When a users has completed watched or listened to an item, this attribute contains the number of consumptions.""" + + viewed_leaf_count: Annotated[ + Optional[int], pydantic.Field(alias="viewedLeafCount") + ] = None + r"""For shows and seasons, contains the number of viewed episodes.""" + + view_offset: Annotated[Optional[int], pydantic.Field(alias="viewOffset")] = None + r"""When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.""" + + writer: Annotated[Optional[List[Tag]], pydantic.Field(alias="Writer")] = None + + year: Optional[int] = None + r"""When present, the year associated with the item's release (e.g. release year for a movie).""" + + metadata_item: Annotated[ + Optional[List[Items]], pydantic.Field(alias="MetadataItem") + ] = None + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + +class MediaContainerWithNestedMetadataMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + metadata_item: NotRequired[List[MetadataItemTypedDict]] + + +class MediaContainerWithNestedMetadataMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + metadata_item: Annotated[ + Optional[List[MetadataItem]], pydantic.Field(alias="MetadataItem") + ] = None + + +class MediaContainerWithNestedMetadataTypedDict(TypedDict): + media_container: NotRequired[ + MediaContainerWithNestedMetadataMediaContainerTypedDict + ] + + +class MediaContainerWithNestedMetadata(BaseModel): + media_container: Annotated[ + Optional[MediaContainerWithNestedMetadataMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None diff --git a/src/plex_api_client/models/components/mediacontainerwithplaylistmetadata.py b/src/plex_api_client/models/components/mediacontainerwithplaylistmetadata.py new file mode 100644 index 0000000..c472250 --- /dev/null +++ b/src/plex_api_client/models/components/mediacontainerwithplaylistmetadata.py @@ -0,0 +1,493 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .filter_ import Filter, FilterTypedDict +from .image import Image, ImageTypedDict +from .media import Media, MediaTypedDict +from .sort import Sort, SortTypedDict +from .tag import Tag, TagTypedDict +from enum import Enum +from plex_api_client.types import BaseModel +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlaylistType(str, Enum): + r"""The type of the playlist.""" + + AUDIO = "audio" + VIDEO = "video" + PHOTO = "photo" + + +class MediaContainerWithPlaylistMetadataMetadataTypedDict(TypedDict): + r"""Items in a library are referred to as \"metadata items.\" These metadata items are distinct from \"media items\" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a \"media item\" will have one or more \"media parts\" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + + Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + + Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, \"leaves\" refer to metadata items which has associated media (there is no media for a season nor show). A show will have \"children\" in the form of seasons and a season will have \"children\" in the form of episodes and episodes have \"parent\" in the form of a season which has a \"parent\" in the form of a show. Similarly, a show has \"grandchildren\" in the form of episodse and an episode has a \"grandparent\" in the form of a show. + + """ + + read_only: NotRequired[bool] + r"""If we return this as true then this playlist cannot be altered or deleted directly by the client.""" + composite: NotRequired[Any] + r"""When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).""" + duration: NotRequired[int] + r"""When present, the duration for the item, in units of milliseconds.""" + key: NotRequired[Any] + r"""The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.""" + leaf_count: NotRequired[int] + r"""For shows and seasons, contains the number of total episodes.""" + playlist_type: NotRequired[PlaylistType] + r"""The type of the playlist.""" + smart: NotRequired[bool] + r"""Whether or not the playlist is smart.""" + special_playlist_type: NotRequired[str] + r"""If this is a special playlist, this returns its type (e.g. favorites).""" + title: NotRequired[Any] + r"""The title of the item (e.g. “300” or “The Simpsons”)""" + type: NotRequired[Any] + r"""The type of the video item, such as `movie`, `episode`, or `clip`.""" + absolute_index: NotRequired[int] + r"""When present, contains the disc number for a track on multi-disc albums.""" + added_at: NotRequired[int] + r"""In units of seconds since the epoch, returns the time at which the item was added to the library.""" + art: NotRequired[Any] + r"""When present, the URL for the background artwork for the item.""" + audience_rating: NotRequired[float] + r"""Some rating systems separate reviewer ratings from audience ratings""" + audience_rating_image: NotRequired[Any] + r"""A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).""" + autotag: NotRequired[List[TagTypedDict]] + banner: NotRequired[Any] + r"""When present, the URL for a banner graphic for the item.""" + chapter_source: NotRequired[Any] + r"""When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).""" + content_rating: NotRequired[Any] + r"""If known, the content rating (e.g. MPAA) for an item.""" + country: NotRequired[List[TagTypedDict]] + director: NotRequired[List[TagTypedDict]] + filter_: NotRequired[List[FilterTypedDict]] + r"""Typically only seen in metadata at a library's top level""" + genre: NotRequired[List[TagTypedDict]] + grandparent_art: NotRequired[str] + r"""The `art` of the grandparent""" + grandparent_hero: NotRequired[str] + r"""The `hero` of the grandparent""" + grandparent_key: NotRequired[str] + r"""The `key` of the grandparent""" + grandparent_rating_key: NotRequired[str] + r"""The `ratingKey` of the grandparent""" + grandparent_theme: NotRequired[str] + r"""The `theme` of the grandparent""" + grandparent_thumb: NotRequired[str] + r"""The `thumb` of the grandparent""" + grandparent_title: NotRequired[str] + r"""The `title` of the grandparent""" + guid: NotRequired[List[TagTypedDict]] + hero: NotRequired[Any] + r"""When present, the URL for a hero image for the item.""" + image: NotRequired[List[ImageTypedDict]] + index: NotRequired[int] + r"""When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.""" + last_viewed_at: NotRequired[int] + r"""When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.""" + media: NotRequired[List[MediaTypedDict]] + originally_available_at: NotRequired[Any] + r"""When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.""" + original_title: NotRequired[Any] + r"""When present, used to indicate an item's original title, e.g. a movie's foreign title.""" + parent_hero: NotRequired[str] + r"""The `hero` of the parent""" + parent_index: NotRequired[int] + r"""The `index` of the parent""" + parent_key: NotRequired[str] + r"""The `key` of the parent""" + parent_rating_key: NotRequired[str] + r"""The `ratingKey` of the parent""" + parent_thumb: NotRequired[str] + r"""The `thumb` of the parent""" + parent_title: NotRequired[str] + r"""The `title` of the parent""" + primary_extra_key: NotRequired[Any] + r"""Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.""" + prompt: NotRequired[str] + r"""Prompt to give the user for this directory (such as `Search Movies`)""" + rating: NotRequired[float] + r"""When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.""" + rating_array: NotRequired[List[TagTypedDict]] + rating_count: NotRequired[int] + r"""Number of ratings under this metadata""" + rating_image: NotRequired[Any] + r"""When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.""" + rating_key: NotRequired[Any] + r"""This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.""" + role: NotRequired[List[TagTypedDict]] + search: NotRequired[bool] + r"""Indicates this is a search directory""" + secondary: NotRequired[bool] + r"""Used by old clients to provide nested menus allowing for primative (but structured) navigation.""" + skip_children: NotRequired[bool] + r"""When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc.""" + skip_parent: NotRequired[bool] + r"""When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show).""" + sort: NotRequired[List[SortTypedDict]] + r"""Typically only seen in metadata at a library's top level""" + studio: NotRequired[Any] + r"""When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).""" + subtype: NotRequired[Any] + r"""The subtype of the video item, such as `photo` when the video item is in a photo library""" + summary: NotRequired[Any] + r"""When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).""" + tagline: NotRequired[Any] + r"""When present, a pithy one-liner about the item (usually only seen for movies).""" + theme: NotRequired[Any] + r"""When present, the URL for theme music for the item (usually only for TV shows).""" + thumb: NotRequired[Any] + r"""When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.""" + title_sort: NotRequired[Any] + r"""Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”).""" + updated_at: NotRequired[int] + r"""In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).""" + user_rating: NotRequired[float] + r"""When the user has rated an item, this contains the user rating""" + view_count: NotRequired[int] + r"""When a users has completed watched or listened to an item, this attribute contains the number of consumptions.""" + viewed_leaf_count: NotRequired[int] + r"""For shows and seasons, contains the number of viewed episodes.""" + view_offset: NotRequired[int] + r"""When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.""" + writer: NotRequired[List[TagTypedDict]] + year: NotRequired[int] + r"""When present, the year associated with the item's release (e.g. release year for a movie).""" + + +class MediaContainerWithPlaylistMetadataMetadata(BaseModel): + r"""Items in a library are referred to as \"metadata items.\" These metadata items are distinct from \"media items\" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a \"media item\" will have one or more \"media parts\" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + + Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + + Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, \"leaves\" refer to metadata items which has associated media (there is no media for a season nor show). A show will have \"children\" in the form of seasons and a season will have \"children\" in the form of episodes and episodes have \"parent\" in the form of a season which has a \"parent\" in the form of a show. Similarly, a show has \"grandchildren\" in the form of episodse and an episode has a \"grandparent\" in the form of a show. + + """ + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + read_only: Annotated[Optional[bool], pydantic.Field(alias="readOnly")] = None + r"""If we return this as true then this playlist cannot be altered or deleted directly by the client.""" + + composite: Optional[Any] = None + r"""When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).""" + + duration: Optional[int] = None + r"""When present, the duration for the item, in units of milliseconds.""" + + key: Optional[Any] = None + r"""The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.""" + + leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None + r"""For shows and seasons, contains the number of total episodes.""" + + playlist_type: Annotated[ + Optional[PlaylistType], pydantic.Field(alias="playlistType") + ] = None + r"""The type of the playlist.""" + + smart: Optional[bool] = None + r"""Whether or not the playlist is smart.""" + + special_playlist_type: Annotated[ + Optional[str], pydantic.Field(alias="specialPlaylistType") + ] = None + r"""If this is a special playlist, this returns its type (e.g. favorites).""" + + title: Optional[Any] = None + r"""The title of the item (e.g. “300” or “The Simpsons”)""" + + type: Optional[Any] = None + r"""The type of the video item, such as `movie`, `episode`, or `clip`.""" + + absolute_index: Annotated[Optional[int], pydantic.Field(alias="absoluteIndex")] = ( + None + ) + r"""When present, contains the disc number for a track on multi-disc albums.""" + + added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None + r"""In units of seconds since the epoch, returns the time at which the item was added to the library.""" + + art: Optional[Any] = None + r"""When present, the URL for the background artwork for the item.""" + + audience_rating: Annotated[ + Optional[float], pydantic.Field(alias="audienceRating") + ] = None + r"""Some rating systems separate reviewer ratings from audience ratings""" + + audience_rating_image: Annotated[ + Optional[Any], pydantic.Field(alias="audienceRatingImage") + ] = None + r"""A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).""" + + autotag: Annotated[Optional[List[Tag]], pydantic.Field(alias="Autotag")] = None + + banner: Optional[Any] = None + r"""When present, the URL for a banner graphic for the item.""" + + chapter_source: Annotated[Optional[Any], pydantic.Field(alias="chapterSource")] = ( + None + ) + r"""When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).""" + + content_rating: Annotated[Optional[Any], pydantic.Field(alias="contentRating")] = ( + None + ) + r"""If known, the content rating (e.g. MPAA) for an item.""" + + country: Annotated[Optional[List[Tag]], pydantic.Field(alias="Country")] = None + + director: Annotated[Optional[List[Tag]], pydantic.Field(alias="Director")] = None + + filter_: Annotated[Optional[List[Filter]], pydantic.Field(alias="Filter")] = None + r"""Typically only seen in metadata at a library's top level""" + + genre: Annotated[Optional[List[Tag]], pydantic.Field(alias="Genre")] = None + + grandparent_art: Annotated[ + Optional[str], pydantic.Field(alias="grandparentArt") + ] = None + r"""The `art` of the grandparent""" + + grandparent_hero: Annotated[ + Optional[str], pydantic.Field(alias="grandparentHero") + ] = None + r"""The `hero` of the grandparent""" + + grandparent_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentKey") + ] = None + r"""The `key` of the grandparent""" + + grandparent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentRatingKey") + ] = None + r"""The `ratingKey` of the grandparent""" + + grandparent_theme: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTheme") + ] = None + r"""The `theme` of the grandparent""" + + grandparent_thumb: Annotated[ + Optional[str], pydantic.Field(alias="grandparentThumb") + ] = None + r"""The `thumb` of the grandparent""" + + grandparent_title: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTitle") + ] = None + r"""The `title` of the grandparent""" + + guid: Annotated[Optional[List[Tag]], pydantic.Field(alias="Guid")] = None + + hero: Optional[Any] = None + r"""When present, the URL for a hero image for the item.""" + + image: Annotated[Optional[List[Image]], pydantic.Field(alias="Image")] = None + + index: Optional[int] = None + r"""When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.""" + + last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( + None + ) + r"""When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.""" + + media: Annotated[Optional[List[Media]], pydantic.Field(alias="Media")] = None + + originally_available_at: Annotated[ + Optional[Any], pydantic.Field(alias="originallyAvailableAt") + ] = None + r"""When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.""" + + original_title: Annotated[Optional[Any], pydantic.Field(alias="originalTitle")] = ( + None + ) + r"""When present, used to indicate an item's original title, e.g. a movie's foreign title.""" + + parent_hero: Annotated[Optional[str], pydantic.Field(alias="parentHero")] = None + r"""The `hero` of the parent""" + + parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None + r"""The `index` of the parent""" + + parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None + r"""The `key` of the parent""" + + parent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="parentRatingKey") + ] = None + r"""The `ratingKey` of the parent""" + + parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None + r"""The `thumb` of the parent""" + + parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None + r"""The `title` of the parent""" + + primary_extra_key: Annotated[ + Optional[Any], pydantic.Field(alias="primaryExtraKey") + ] = None + r"""Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.""" + + prompt: Optional[str] = None + r"""Prompt to give the user for this directory (such as `Search Movies`)""" + + rating: Optional[float] = None + r"""When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.""" + + rating_array: Annotated[Optional[List[Tag]], pydantic.Field(alias="Rating")] = None + + rating_count: Annotated[Optional[int], pydantic.Field(alias="ratingCount")] = None + r"""Number of ratings under this metadata""" + + rating_image: Annotated[Optional[Any], pydantic.Field(alias="ratingImage")] = None + r"""When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.""" + + rating_key: Annotated[Optional[Any], pydantic.Field(alias="ratingKey")] = None + r"""This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.""" + + role: Annotated[Optional[List[Tag]], pydantic.Field(alias="Role")] = None + + search: Optional[bool] = None + r"""Indicates this is a search directory""" + + secondary: Optional[bool] = None + r"""Used by old clients to provide nested menus allowing for primative (but structured) navigation.""" + + skip_children: Annotated[Optional[bool], pydantic.Field(alias="skipChildren")] = ( + None + ) + r"""When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc.""" + + skip_parent: Annotated[Optional[bool], pydantic.Field(alias="skipParent")] = None + r"""When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show).""" + + sort: Annotated[Optional[List[Sort]], pydantic.Field(alias="Sort")] = None + r"""Typically only seen in metadata at a library's top level""" + + studio: Optional[Any] = None + r"""When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).""" + + subtype: Optional[Any] = None + r"""The subtype of the video item, such as `photo` when the video item is in a photo library""" + + summary: Optional[Any] = None + r"""When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).""" + + tagline: Optional[Any] = None + r"""When present, a pithy one-liner about the item (usually only seen for movies).""" + + theme: Optional[Any] = None + r"""When present, the URL for theme music for the item (usually only for TV shows).""" + + thumb: Optional[Any] = None + r"""When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.""" + + title_sort: Annotated[Optional[Any], pydantic.Field(alias="titleSort")] = None + r"""Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”).""" + + updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None + r"""In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).""" + + user_rating: Annotated[Optional[float], pydantic.Field(alias="userRating")] = None + r"""When the user has rated an item, this contains the user rating""" + + view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None + r"""When a users has completed watched or listened to an item, this attribute contains the number of consumptions.""" + + viewed_leaf_count: Annotated[ + Optional[int], pydantic.Field(alias="viewedLeafCount") + ] = None + r"""For shows and seasons, contains the number of viewed episodes.""" + + view_offset: Annotated[Optional[int], pydantic.Field(alias="viewOffset")] = None + r"""When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.""" + + writer: Annotated[Optional[List[Tag]], pydantic.Field(alias="Writer")] = None + + year: Optional[int] = None + r"""When present, the year associated with the item's release (e.g. release year for a movie).""" + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + +class MediaContainerWithPlaylistMetadataMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + metadata: NotRequired[List[MediaContainerWithPlaylistMetadataMetadataTypedDict]] + + +class MediaContainerWithPlaylistMetadataMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + metadata: Annotated[ + Optional[List[MediaContainerWithPlaylistMetadataMetadata]], + pydantic.Field(alias="Metadata"), + ] = None + + +class MediaContainerWithPlaylistMetadataTypedDict(TypedDict): + media_container: NotRequired[ + MediaContainerWithPlaylistMetadataMediaContainerTypedDict + ] + + +class MediaContainerWithPlaylistMetadata(BaseModel): + media_container: Annotated[ + Optional[MediaContainerWithPlaylistMetadataMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None diff --git a/src/plex_api_client/models/components/mediacontainerwithsettings.py b/src/plex_api_client/models/components/mediacontainerwithsettings.py new file mode 100644 index 0000000..dc630fc --- /dev/null +++ b/src/plex_api_client/models/components/mediacontainerwithsettings.py @@ -0,0 +1,63 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .setting import Setting, SettingTypedDict +from plex_api_client.types import BaseModel +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MediaContainerWithSettingsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + setting: NotRequired[List[SettingTypedDict]] + + +class MediaContainerWithSettingsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + setting: Annotated[Optional[List[Setting]], pydantic.Field(alias="Setting")] = None + + +class MediaContainerWithSettingsTypedDict(TypedDict): + media_container: NotRequired[MediaContainerWithSettingsMediaContainerTypedDict] + + +class MediaContainerWithSettings(BaseModel): + media_container: Annotated[ + Optional[MediaContainerWithSettingsMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None diff --git a/src/plex_api_client/models/components/mediacontainerwithsubscription.py b/src/plex_api_client/models/components/mediacontainerwithsubscription.py new file mode 100644 index 0000000..0c7f1df --- /dev/null +++ b/src/plex_api_client/models/components/mediacontainerwithsubscription.py @@ -0,0 +1,65 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .mediasubscription import MediaSubscription, MediaSubscriptionTypedDict +from plex_api_client.types import BaseModel +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MediaContainerWithSubscriptionMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + media_subscription: NotRequired[List[MediaSubscriptionTypedDict]] + + +class MediaContainerWithSubscriptionMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + media_subscription: Annotated[ + Optional[List[MediaSubscription]], pydantic.Field(alias="MediaSubscription") + ] = None + + +class MediaContainerWithSubscriptionTypedDict(TypedDict): + media_container: NotRequired[MediaContainerWithSubscriptionMediaContainerTypedDict] + + +class MediaContainerWithSubscription(BaseModel): + media_container: Annotated[ + Optional[MediaContainerWithSubscriptionMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None diff --git a/src/plex_api_client/models/components/mediagraboperation.py b/src/plex_api_client/models/components/mediagraboperation.py new file mode 100644 index 0000000..3cef217 --- /dev/null +++ b/src/plex_api_client/models/components/mediagraboperation.py @@ -0,0 +1,82 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .metadata import Metadata, MetadataTypedDict +from enum import Enum +from plex_api_client.types import BaseModel +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class Status(str, Enum): + INACTIVE = "inactive" + SCHEDULED = "scheduled" + INPROGRESS = "inprogress" + COMPLETE = "complete" + CANCELLED = "cancelled" + ERROR = "error" + POSTPROCESSING = "postprocessing" + PAUSED = "paused" + + +class MediaGrabOperationTypedDict(TypedDict): + r"""A media grab opration represents a scheduled or active recording of media""" + + current_size: NotRequired[int] + grabber_identifier: NotRequired[str] + grabber_protocol: NotRequired[str] + id: NotRequired[str] + key: NotRequired[str] + media_index: NotRequired[int] + media_subscription_id: NotRequired[int] + metadata: NotRequired[MetadataTypedDict] + r"""Items in a library are referred to as \"metadata items.\" These metadata items are distinct from \"media items\" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a \"media item\" will have one or more \"media parts\" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + + Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + + Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, \"leaves\" refer to metadata items which has associated media (there is no media for a season nor show). A show will have \"children\" in the form of seasons and a season will have \"children\" in the form of episodes and episodes have \"parent\" in the form of a season which has a \"parent\" in the form of a show. Similarly, a show has \"grandchildren\" in the form of episodse and an episode has a \"grandparent\" in the form of a show. + + """ + percent: NotRequired[float] + provider: NotRequired[str] + status: NotRequired[Status] + + +class MediaGrabOperation(BaseModel): + r"""A media grab opration represents a scheduled or active recording of media""" + + current_size: Annotated[Optional[int], pydantic.Field(alias="currentSize")] = None + + grabber_identifier: Annotated[ + Optional[str], pydantic.Field(alias="grabberIdentifier") + ] = None + + grabber_protocol: Annotated[ + Optional[str], pydantic.Field(alias="grabberProtocol") + ] = None + + id: Optional[str] = None + + key: Optional[str] = None + + media_index: Annotated[Optional[int], pydantic.Field(alias="mediaIndex")] = None + + media_subscription_id: Annotated[ + Optional[int], pydantic.Field(alias="mediaSubscriptionID") + ] = None + + metadata: Annotated[Optional[Metadata], pydantic.Field(alias="Metadata")] = None + r"""Items in a library are referred to as \"metadata items.\" These metadata items are distinct from \"media items\" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a \"media item\" will have one or more \"media parts\" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + + Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + + Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, \"leaves\" refer to metadata items which has associated media (there is no media for a season nor show). A show will have \"children\" in the form of seasons and a season will have \"children\" in the form of episodes and episodes have \"parent\" in the form of a season which has a \"parent\" in the form of a show. Similarly, a show has \"grandchildren\" in the form of episodse and an episode has a \"grandparent\" in the form of a show. + + """ + + percent: Optional[float] = None + + provider: Optional[str] = None + + status: Optional[Status] = None diff --git a/src/plex_api_client/models/components/mediaquery.py b/src/plex_api_client/models/components/mediaquery.py new file mode 100644 index 0000000..23e82a3 --- /dev/null +++ b/src/plex_api_client/models/components/mediaquery.py @@ -0,0 +1,13 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from plex_api_client.types import BaseModel +from typing_extensions import TypedDict + + +class MediaQueryTypedDict(TypedDict): + pass + + +class MediaQuery(BaseModel): + pass diff --git a/src/plex_api_client/models/components/mediasubscription.py b/src/plex_api_client/models/components/mediasubscription.py new file mode 100644 index 0000000..18a30a0 --- /dev/null +++ b/src/plex_api_client/models/components/mediasubscription.py @@ -0,0 +1,104 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .mediagraboperation import MediaGrabOperation, MediaGrabOperationTypedDict +from .setting import Setting, SettingTypedDict +from enum import Enum +from plex_api_client.types import BaseModel +import pydantic +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AiringsType(str, Enum): + NEW_AIRINGS_ONLY = "New Airings Only" + NEW_AND_REPEAT_AIRINGS = "New and Repeat Airings" + + +class MediaSubscriptionTypedDict(TypedDict): + r"""A media subscription contains a representation of metadata desired to be recorded""" + + title: NotRequired[str] + type: NotRequired[int] + r"""The metadata type of the root item of the subscription""" + airings_type: NotRequired[AiringsType] + created_at: NotRequired[int] + directory: NotRequired[Dict[str, Any]] + r"""Media Matching Hints""" + duration_total: NotRequired[int] + r"""Only included if `includeStorage` is specified""" + key: NotRequired[str] + library_section_title: NotRequired[str] + location_path: NotRequired[str] + media_grab_operation: NotRequired[List[MediaGrabOperationTypedDict]] + playlist: NotRequired[Dict[str, Any]] + r"""Media Matching Hints""" + setting: NotRequired[List[SettingTypedDict]] + storage_total: NotRequired[int] + r"""Only included if `includeStorage` is specified""" + target_library_section_id: NotRequired[int] + r"""The library section id for where the item is to be recorded""" + target_section_location_id: NotRequired[int] + r"""The library section location id for where the item is to be recorded""" + video: NotRequired[Dict[str, Any]] + r"""Media Matching Hints""" + + +class MediaSubscription(BaseModel): + r"""A media subscription contains a representation of metadata desired to be recorded""" + + title: Optional[str] = None + + type: Optional[int] = None + r"""The metadata type of the root item of the subscription""" + + airings_type: Annotated[ + Optional[AiringsType], pydantic.Field(alias="airingsType") + ] = None + + created_at: Annotated[Optional[int], pydantic.Field(alias="createdAt")] = None + + directory: Annotated[ + Optional[Dict[str, Any]], pydantic.Field(alias="Directory") + ] = None + r"""Media Matching Hints""" + + duration_total: Annotated[Optional[int], pydantic.Field(alias="durationTotal")] = ( + None + ) + r"""Only included if `includeStorage` is specified""" + + key: Optional[str] = None + + library_section_title: Annotated[ + Optional[str], pydantic.Field(alias="librarySectionTitle") + ] = None + + location_path: Annotated[Optional[str], pydantic.Field(alias="locationPath")] = None + + media_grab_operation: Annotated[ + Optional[List[MediaGrabOperation]], pydantic.Field(alias="MediaGrabOperation") + ] = None + + playlist: Annotated[Optional[Dict[str, Any]], pydantic.Field(alias="Playlist")] = ( + None + ) + r"""Media Matching Hints""" + + setting: Annotated[Optional[List[Setting]], pydantic.Field(alias="Setting")] = None + + storage_total: Annotated[Optional[int], pydantic.Field(alias="storageTotal")] = None + r"""Only included if `includeStorage` is specified""" + + target_library_section_id: Annotated[ + Optional[int], pydantic.Field(alias="targetLibrarySectionID") + ] = None + r"""The library section id for where the item is to be recorded""" + + target_section_location_id: Annotated[ + Optional[int], pydantic.Field(alias="targetSectionLocationID") + ] = None + r"""The library section location id for where the item is to be recorded""" + + video: Annotated[Optional[Dict[str, Any]], pydantic.Field(alias="Video")] = None + r"""Media Matching Hints""" diff --git a/src/plex_api_client/models/components/metadata.py b/src/plex_api_client/models/components/metadata.py new file mode 100644 index 0000000..32e57ef --- /dev/null +++ b/src/plex_api_client/models/components/metadata.py @@ -0,0 +1,400 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .filter_ import Filter, FilterTypedDict +from .image import Image, ImageTypedDict +from .media import Media, MediaTypedDict +from .sort import Sort, SortTypedDict +from .tag import Tag, TagTypedDict +from plex_api_client.types import BaseModel +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MetadataTypedDict(TypedDict): + r"""Items in a library are referred to as \"metadata items.\" These metadata items are distinct from \"media items\" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a \"media item\" will have one or more \"media parts\" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + + Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + + Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, \"leaves\" refer to metadata items which has associated media (there is no media for a season nor show). A show will have \"children\" in the form of seasons and a season will have \"children\" in the form of episodes and episodes have \"parent\" in the form of a season which has a \"parent\" in the form of a show. Similarly, a show has \"grandchildren\" in the form of episodse and an episode has a \"grandparent\" in the form of a show. + + """ + + title: NotRequired[Any] + r"""The title of the item (e.g. “300” or “The Simpsons”)""" + type: NotRequired[Any] + r"""The type of the video item, such as `movie`, `episode`, or `clip`.""" + absolute_index: NotRequired[int] + r"""When present, contains the disc number for a track on multi-disc albums.""" + added_at: NotRequired[int] + r"""In units of seconds since the epoch, returns the time at which the item was added to the library.""" + art: NotRequired[Any] + r"""When present, the URL for the background artwork for the item.""" + audience_rating: NotRequired[float] + r"""Some rating systems separate reviewer ratings from audience ratings""" + audience_rating_image: NotRequired[Any] + r"""A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).""" + autotag: NotRequired[List[TagTypedDict]] + banner: NotRequired[Any] + r"""When present, the URL for a banner graphic for the item.""" + chapter_source: NotRequired[Any] + r"""When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).""" + composite: NotRequired[Any] + r"""When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).""" + content_rating: NotRequired[Any] + r"""If known, the content rating (e.g. MPAA) for an item.""" + country: NotRequired[List[TagTypedDict]] + director: NotRequired[List[TagTypedDict]] + duration: NotRequired[int] + r"""When present, the duration for the item, in units of milliseconds.""" + filter_: NotRequired[List[FilterTypedDict]] + r"""Typically only seen in metadata at a library's top level""" + genre: NotRequired[List[TagTypedDict]] + grandparent_art: NotRequired[str] + r"""The `art` of the grandparent""" + grandparent_hero: NotRequired[str] + r"""The `hero` of the grandparent""" + grandparent_key: NotRequired[str] + r"""The `key` of the grandparent""" + grandparent_rating_key: NotRequired[str] + r"""The `ratingKey` of the grandparent""" + grandparent_theme: NotRequired[str] + r"""The `theme` of the grandparent""" + grandparent_thumb: NotRequired[str] + r"""The `thumb` of the grandparent""" + grandparent_title: NotRequired[str] + r"""The `title` of the grandparent""" + guid: NotRequired[List[TagTypedDict]] + hero: NotRequired[Any] + r"""When present, the URL for a hero image for the item.""" + image: NotRequired[List[ImageTypedDict]] + index: NotRequired[int] + r"""When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.""" + key: NotRequired[Any] + r"""The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.""" + last_viewed_at: NotRequired[int] + r"""When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.""" + leaf_count: NotRequired[int] + r"""For shows and seasons, contains the number of total episodes.""" + media: NotRequired[List[MediaTypedDict]] + originally_available_at: NotRequired[Any] + r"""When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.""" + original_title: NotRequired[Any] + r"""When present, used to indicate an item's original title, e.g. a movie's foreign title.""" + parent_hero: NotRequired[str] + r"""The `hero` of the parent""" + parent_index: NotRequired[int] + r"""The `index` of the parent""" + parent_key: NotRequired[str] + r"""The `key` of the parent""" + parent_rating_key: NotRequired[str] + r"""The `ratingKey` of the parent""" + parent_thumb: NotRequired[str] + r"""The `thumb` of the parent""" + parent_title: NotRequired[str] + r"""The `title` of the parent""" + primary_extra_key: NotRequired[Any] + r"""Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.""" + prompt: NotRequired[str] + r"""Prompt to give the user for this directory (such as `Search Movies`)""" + rating: NotRequired[float] + r"""When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.""" + rating_array: NotRequired[List[TagTypedDict]] + rating_count: NotRequired[int] + r"""Number of ratings under this metadata""" + rating_image: NotRequired[Any] + r"""When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.""" + rating_key: NotRequired[Any] + r"""This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.""" + role: NotRequired[List[TagTypedDict]] + search: NotRequired[bool] + r"""Indicates this is a search directory""" + secondary: NotRequired[bool] + r"""Used by old clients to provide nested menus allowing for primative (but structured) navigation.""" + skip_children: NotRequired[bool] + r"""When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc.""" + skip_parent: NotRequired[bool] + r"""When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show).""" + sort: NotRequired[List[SortTypedDict]] + r"""Typically only seen in metadata at a library's top level""" + studio: NotRequired[Any] + r"""When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).""" + subtype: NotRequired[Any] + r"""The subtype of the video item, such as `photo` when the video item is in a photo library""" + summary: NotRequired[Any] + r"""When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).""" + tagline: NotRequired[Any] + r"""When present, a pithy one-liner about the item (usually only seen for movies).""" + theme: NotRequired[Any] + r"""When present, the URL for theme music for the item (usually only for TV shows).""" + thumb: NotRequired[Any] + r"""When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.""" + title_sort: NotRequired[Any] + r"""Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”).""" + updated_at: NotRequired[int] + r"""In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).""" + user_rating: NotRequired[float] + r"""When the user has rated an item, this contains the user rating""" + view_count: NotRequired[int] + r"""When a users has completed watched or listened to an item, this attribute contains the number of consumptions.""" + viewed_leaf_count: NotRequired[int] + r"""For shows and seasons, contains the number of viewed episodes.""" + view_offset: NotRequired[int] + r"""When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.""" + writer: NotRequired[List[TagTypedDict]] + year: NotRequired[int] + r"""When present, the year associated with the item's release (e.g. release year for a movie).""" + + +class Metadata(BaseModel): + r"""Items in a library are referred to as \"metadata items.\" These metadata items are distinct from \"media items\" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a \"media item\" will have one or more \"media parts\" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + + Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + + Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, \"leaves\" refer to metadata items which has associated media (there is no media for a season nor show). A show will have \"children\" in the form of seasons and a season will have \"children\" in the form of episodes and episodes have \"parent\" in the form of a season which has a \"parent\" in the form of a show. Similarly, a show has \"grandchildren\" in the form of episodse and an episode has a \"grandparent\" in the form of a show. + + """ + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + title: Optional[Any] = None + r"""The title of the item (e.g. “300” or “The Simpsons”)""" + + type: Optional[Any] = None + r"""The type of the video item, such as `movie`, `episode`, or `clip`.""" + + absolute_index: Annotated[Optional[int], pydantic.Field(alias="absoluteIndex")] = ( + None + ) + r"""When present, contains the disc number for a track on multi-disc albums.""" + + added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None + r"""In units of seconds since the epoch, returns the time at which the item was added to the library.""" + + art: Optional[Any] = None + r"""When present, the URL for the background artwork for the item.""" + + audience_rating: Annotated[ + Optional[float], pydantic.Field(alias="audienceRating") + ] = None + r"""Some rating systems separate reviewer ratings from audience ratings""" + + audience_rating_image: Annotated[ + Optional[Any], pydantic.Field(alias="audienceRatingImage") + ] = None + r"""A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).""" + + autotag: Annotated[Optional[List[Tag]], pydantic.Field(alias="Autotag")] = None + + banner: Optional[Any] = None + r"""When present, the URL for a banner graphic for the item.""" + + chapter_source: Annotated[Optional[Any], pydantic.Field(alias="chapterSource")] = ( + None + ) + r"""When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).""" + + composite: Optional[Any] = None + r"""When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).""" + + content_rating: Annotated[Optional[Any], pydantic.Field(alias="contentRating")] = ( + None + ) + r"""If known, the content rating (e.g. MPAA) for an item.""" + + country: Annotated[Optional[List[Tag]], pydantic.Field(alias="Country")] = None + + director: Annotated[Optional[List[Tag]], pydantic.Field(alias="Director")] = None + + duration: Optional[int] = None + r"""When present, the duration for the item, in units of milliseconds.""" + + filter_: Annotated[Optional[List[Filter]], pydantic.Field(alias="Filter")] = None + r"""Typically only seen in metadata at a library's top level""" + + genre: Annotated[Optional[List[Tag]], pydantic.Field(alias="Genre")] = None + + grandparent_art: Annotated[ + Optional[str], pydantic.Field(alias="grandparentArt") + ] = None + r"""The `art` of the grandparent""" + + grandparent_hero: Annotated[ + Optional[str], pydantic.Field(alias="grandparentHero") + ] = None + r"""The `hero` of the grandparent""" + + grandparent_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentKey") + ] = None + r"""The `key` of the grandparent""" + + grandparent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentRatingKey") + ] = None + r"""The `ratingKey` of the grandparent""" + + grandparent_theme: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTheme") + ] = None + r"""The `theme` of the grandparent""" + + grandparent_thumb: Annotated[ + Optional[str], pydantic.Field(alias="grandparentThumb") + ] = None + r"""The `thumb` of the grandparent""" + + grandparent_title: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTitle") + ] = None + r"""The `title` of the grandparent""" + + guid: Annotated[Optional[List[Tag]], pydantic.Field(alias="Guid")] = None + + hero: Optional[Any] = None + r"""When present, the URL for a hero image for the item.""" + + image: Annotated[Optional[List[Image]], pydantic.Field(alias="Image")] = None + + index: Optional[int] = None + r"""When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.""" + + key: Optional[Any] = None + r"""The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.""" + + last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( + None + ) + r"""When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.""" + + leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None + r"""For shows and seasons, contains the number of total episodes.""" + + media: Annotated[Optional[List[Media]], pydantic.Field(alias="Media")] = None + + originally_available_at: Annotated[ + Optional[Any], pydantic.Field(alias="originallyAvailableAt") + ] = None + r"""When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.""" + + original_title: Annotated[Optional[Any], pydantic.Field(alias="originalTitle")] = ( + None + ) + r"""When present, used to indicate an item's original title, e.g. a movie's foreign title.""" + + parent_hero: Annotated[Optional[str], pydantic.Field(alias="parentHero")] = None + r"""The `hero` of the parent""" + + parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None + r"""The `index` of the parent""" + + parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None + r"""The `key` of the parent""" + + parent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="parentRatingKey") + ] = None + r"""The `ratingKey` of the parent""" + + parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None + r"""The `thumb` of the parent""" + + parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None + r"""The `title` of the parent""" + + primary_extra_key: Annotated[ + Optional[Any], pydantic.Field(alias="primaryExtraKey") + ] = None + r"""Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.""" + + prompt: Optional[str] = None + r"""Prompt to give the user for this directory (such as `Search Movies`)""" + + rating: Optional[float] = None + r"""When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.""" + + rating_array: Annotated[Optional[List[Tag]], pydantic.Field(alias="Rating")] = None + + rating_count: Annotated[Optional[int], pydantic.Field(alias="ratingCount")] = None + r"""Number of ratings under this metadata""" + + rating_image: Annotated[Optional[Any], pydantic.Field(alias="ratingImage")] = None + r"""When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.""" + + rating_key: Annotated[Optional[Any], pydantic.Field(alias="ratingKey")] = None + r"""This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.""" + + role: Annotated[Optional[List[Tag]], pydantic.Field(alias="Role")] = None + + search: Optional[bool] = None + r"""Indicates this is a search directory""" + + secondary: Optional[bool] = None + r"""Used by old clients to provide nested menus allowing for primative (but structured) navigation.""" + + skip_children: Annotated[Optional[bool], pydantic.Field(alias="skipChildren")] = ( + None + ) + r"""When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc.""" + + skip_parent: Annotated[Optional[bool], pydantic.Field(alias="skipParent")] = None + r"""When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show).""" + + sort: Annotated[Optional[List[Sort]], pydantic.Field(alias="Sort")] = None + r"""Typically only seen in metadata at a library's top level""" + + studio: Optional[Any] = None + r"""When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).""" + + subtype: Optional[Any] = None + r"""The subtype of the video item, such as `photo` when the video item is in a photo library""" + + summary: Optional[Any] = None + r"""When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).""" + + tagline: Optional[Any] = None + r"""When present, a pithy one-liner about the item (usually only seen for movies).""" + + theme: Optional[Any] = None + r"""When present, the URL for theme music for the item (usually only for TV shows).""" + + thumb: Optional[Any] = None + r"""When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.""" + + title_sort: Annotated[Optional[Any], pydantic.Field(alias="titleSort")] = None + r"""Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”).""" + + updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None + r"""In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).""" + + user_rating: Annotated[Optional[float], pydantic.Field(alias="userRating")] = None + r"""When the user has rated an item, this contains the user rating""" + + view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None + r"""When a users has completed watched or listened to an item, this attribute contains the number of consumptions.""" + + viewed_leaf_count: Annotated[ + Optional[int], pydantic.Field(alias="viewedLeafCount") + ] = None + r"""For shows and seasons, contains the number of viewed episodes.""" + + view_offset: Annotated[Optional[int], pydantic.Field(alias="viewOffset")] = None + r"""When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.""" + + writer: Annotated[Optional[List[Tag]], pydantic.Field(alias="Writer")] = None + + year: Optional[int] = None + r"""When present, the year associated with the item's release (e.g. release year for a movie).""" + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] diff --git a/src/plex_api_client/models/components/part.py b/src/plex_api_client/models/components/part.py new file mode 100644 index 0000000..75c8149 --- /dev/null +++ b/src/plex_api_client/models/components/part.py @@ -0,0 +1,78 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .stream import Stream, StreamTypedDict +from plex_api_client.types import BaseModel +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PartTypedDict(TypedDict): + r"""`Part` represents a particular file or \"part\" of a media item. The part is the playable unit of the media hierarchy. Suppose that a movie library contains a movie that is broken up into files, reminiscent of a movie split across two BDs. The metadata item represents information about the movie, the media item represents this instance of the movie at this resolution and quality, and the part items represent the two playable files. If another media were added which contained the joining of these two parts transcoded down to a lower resolution, then this metadata would contain 2 medias, one with 2 parts and one with 1 part.""" + + audio_profile: NotRequired[Any] + container: NotRequired[Any] + r"""The container of the media file, such as `mp4` or `mkv`""" + duration: NotRequired[int] + r"""The duration of the media item, in milliseconds""" + file: NotRequired[Any] + r"""The local file path at which the part is stored on the server""" + has64bit_offsets: NotRequired[bool] + id: NotRequired[int] + key: NotRequired[Any] + r"""The key from which the media can be streamed""" + optimized_for_streaming: NotRequired[bool] + size: NotRequired[int] + r"""The size of the media, in bytes""" + stream: NotRequired[List[StreamTypedDict]] + video_profile: NotRequired[Any] + + +class Part(BaseModel): + r"""`Part` represents a particular file or \"part\" of a media item. The part is the playable unit of the media hierarchy. Suppose that a movie library contains a movie that is broken up into files, reminiscent of a movie split across two BDs. The metadata item represents information about the movie, the media item represents this instance of the movie at this resolution and quality, and the part items represent the two playable files. If another media were added which contained the joining of these two parts transcoded down to a lower resolution, then this metadata would contain 2 medias, one with 2 parts and one with 1 part.""" + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + audio_profile: Annotated[Optional[Any], pydantic.Field(alias="audioProfile")] = None + + container: Optional[Any] = None + r"""The container of the media file, such as `mp4` or `mkv`""" + + duration: Optional[int] = None + r"""The duration of the media item, in milliseconds""" + + file: Optional[Any] = None + r"""The local file path at which the part is stored on the server""" + + has64bit_offsets: Annotated[ + Optional[bool], pydantic.Field(alias="has64bitOffsets") + ] = None + + id: Optional[int] = None + + key: Optional[Any] = None + r"""The key from which the media can be streamed""" + + optimized_for_streaming: Annotated[ + Optional[bool], pydantic.Field(alias="optimizedForStreaming") + ] = None + + size: Optional[int] = None + r"""The size of the media, in bytes""" + + stream: Annotated[Optional[List[Stream]], pydantic.Field(alias="Stream")] = None + + video_profile: Annotated[Optional[Any], pydantic.Field(alias="videoProfile")] = None + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] diff --git a/src/plex_api_client/models/components/player.py b/src/plex_api_client/models/components/player.py new file mode 100644 index 0000000..e7c4758 --- /dev/null +++ b/src/plex_api_client/models/components/player.py @@ -0,0 +1,97 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from plex_api_client.types import BaseModel +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PlayerTypedDict(TypedDict): + r"""Information about the player being used for playback""" + + title: NotRequired[str] + r"""The title of the client""" + address: NotRequired[str] + r"""The remote address""" + local: NotRequired[bool] + r"""Indicating if the client is playing from the local LAN""" + machine_identifier: NotRequired[str] + r"""The identifier of the client""" + model: NotRequired[str] + r"""The model of the client""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The platformVersion of the client""" + product: NotRequired[str] + r"""The product name of the client""" + relayed: NotRequired[bool] + r"""Indicating if the client is playing over a relay connection""" + remote_public_address: NotRequired[str] + r"""The client's public address""" + secure: NotRequired[bool] + r"""Indicating if the client is playing over HTTPS""" + state: NotRequired[str] + r"""The client's last reported state""" + user_id: NotRequired[int] + r"""The id of the user""" + vendor: NotRequired[str] + r"""The vendor of the client""" + version: NotRequired[str] + r"""The version of the client""" + + +class Player(BaseModel): + r"""Information about the player being used for playback""" + + title: Optional[str] = None + r"""The title of the client""" + + address: Optional[str] = None + r"""The remote address""" + + local: Optional[bool] = None + r"""Indicating if the client is playing from the local LAN""" + + machine_identifier: Annotated[ + Optional[str], pydantic.Field(alias="machineIdentifier") + ] = None + r"""The identifier of the client""" + + model: Optional[str] = None + r"""The model of the client""" + + platform: Optional[str] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], pydantic.Field(alias="platformVersion") + ] = None + r"""The platformVersion of the client""" + + product: Optional[str] = None + r"""The product name of the client""" + + relayed: Optional[bool] = None + r"""Indicating if the client is playing over a relay connection""" + + remote_public_address: Annotated[ + Optional[str], pydantic.Field(alias="remotePublicAddress") + ] = None + r"""The client's public address""" + + secure: Optional[bool] = None + r"""Indicating if the client is playing over HTTPS""" + + state: Optional[str] = None + r"""The client's last reported state""" + + user_id: Annotated[Optional[int], pydantic.Field(alias="userID")] = None + r"""The id of the user""" + + vendor: Optional[str] = None + r"""The vendor of the client""" + + version: Optional[str] = None + r"""The version of the client""" diff --git a/src/plex_api_client/models/components/post_responses_200.py b/src/plex_api_client/models/components/post_responses_200.py new file mode 100644 index 0000000..e1d389e --- /dev/null +++ b/src/plex_api_client/models/components/post_responses_200.py @@ -0,0 +1,107 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from plex_api_client.types import BaseModel +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class PostResponses200Type(str, Enum): + INTRO = "intro" + COMMERCIAL = "commercial" + BOOKMARK = "bookmark" + RESUME = "resume" + CREDIT = "credit" + + +class PostResponses200MediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + color: NotRequired[str] + end_time_offset: NotRequired[int] + id: NotRequired[int] + start_time_offset: NotRequired[int] + title: NotRequired[str] + type: NotRequired[PostResponses200Type] + + +class PostResponses200MediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + color: Optional[str] = None + + end_time_offset: Annotated[Optional[int], pydantic.Field(alias="endTimeOffset")] = ( + None + ) + + id: Optional[int] = None + + start_time_offset: Annotated[ + Optional[int], pydantic.Field(alias="startTimeOffset") + ] = None + + title: Optional[str] = None + + type: Optional[PostResponses200Type] = None + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + +class PostResponses200TypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[PostResponses200MediaContainerTypedDict] + + +class PostResponses200(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[PostResponses200MediaContainer], pydantic.Field(alias="MediaContainer") + ] = None diff --git a/src/plex_api_client/models/components/protocol.py b/src/plex_api_client/models/components/protocol.py new file mode 100644 index 0000000..b10b2a2 --- /dev/null +++ b/src/plex_api_client/models/components/protocol.py @@ -0,0 +1,10 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum + + +class Protocol(str, Enum): + HTTP = "http" + HLS = "hls" + DASH = "dash" diff --git a/src/plex_api_client/models/components/requesthandler_slash_get_responses_200.py b/src/plex_api_client/models/components/requesthandler_slash_get_responses_200.py new file mode 100644 index 0000000..591f1ff --- /dev/null +++ b/src/plex_api_client/models/components/requesthandler_slash_get_responses_200.py @@ -0,0 +1,297 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from plex_api_client.types import BaseModel +import pydantic +from typing import Any, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class RequestHandlerSlashGetResponses200DirectoryTypedDict(TypedDict): + count: NotRequired[int] + key: NotRequired[str] + r"""The key where this directory is found""" + title: NotRequired[str] + + +class RequestHandlerSlashGetResponses200Directory(BaseModel): + count: Optional[int] = None + + key: Optional[str] = None + r"""The key where this directory is found""" + + title: Optional[str] = None + + +class RequestHandlerSlashGetResponses200MediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + allow_camera_upload: NotRequired[bool] + allow_channel_access: NotRequired[bool] + allow_media_deletion: NotRequired[bool] + allow_sharing: NotRequired[bool] + allow_sync: NotRequired[bool] + allow_tuners: NotRequired[bool] + background_processing: NotRequired[bool] + certificate: NotRequired[bool] + companion_proxy: NotRequired[bool] + country_code: NotRequired[str] + diagnostics: NotRequired[str] + event_stream: NotRequired[bool] + friendly_name: NotRequired[str] + hub_search: NotRequired[bool] + item_clusters: NotRequired[bool] + livetv: NotRequired[int] + machine_identifier: NotRequired[Any] + media_providers: NotRequired[bool] + multiuser: NotRequired[bool] + music_analysis: NotRequired[int] + my_plex: NotRequired[bool] + my_plex_mapping_state: NotRequired[Any] + my_plex_signin_state: NotRequired[Any] + my_plex_subscription: NotRequired[bool] + my_plex_username: NotRequired[str] + offline_transcode: NotRequired[Any] + owner_features: NotRequired[str] + r"""A comma-separated list of features which are enabled for the server owner""" + platform: NotRequired[str] + platform_version: NotRequired[str] + plugin_host: NotRequired[bool] + push_notifications: NotRequired[bool] + read_only_libraries: NotRequired[bool] + streaming_brain_abr_version: NotRequired[int] + streaming_brain_version: NotRequired[int] + sync: NotRequired[bool] + transcoder_active_video_sessions: NotRequired[int] + transcoder_audio: NotRequired[bool] + transcoder_lyrics: NotRequired[bool] + transcoder_photo: NotRequired[bool] + transcoder_subtitles: NotRequired[bool] + transcoder_video: NotRequired[bool] + transcoder_video_bitrates: NotRequired[Any] + r"""The suggested video quality bitrates to present to the user""" + transcoder_video_qualities: NotRequired[str] + transcoder_video_resolutions: NotRequired[Any] + r"""The suggested video resolutions to the above quality bitrates""" + updated_at: NotRequired[int] + updater: NotRequired[bool] + version: NotRequired[str] + voice_search: NotRequired[bool] + directory: NotRequired[List[RequestHandlerSlashGetResponses200DirectoryTypedDict]] + + +class RequestHandlerSlashGetResponses200MediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + allow_camera_upload: Annotated[ + Optional[bool], pydantic.Field(alias="allowCameraUpload") + ] = None + + allow_channel_access: Annotated[ + Optional[bool], pydantic.Field(alias="allowChannelAccess") + ] = None + + allow_media_deletion: Annotated[ + Optional[bool], pydantic.Field(alias="allowMediaDeletion") + ] = None + + allow_sharing: Annotated[Optional[bool], pydantic.Field(alias="allowSharing")] = ( + None + ) + + allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None + + allow_tuners: Annotated[Optional[bool], pydantic.Field(alias="allowTuners")] = None + + background_processing: Annotated[ + Optional[bool], pydantic.Field(alias="backgroundProcessing") + ] = None + + certificate: Optional[bool] = None + + companion_proxy: Annotated[ + Optional[bool], pydantic.Field(alias="companionProxy") + ] = None + + country_code: Annotated[Optional[str], pydantic.Field(alias="countryCode")] = None + + diagnostics: Optional[str] = None + + event_stream: Annotated[Optional[bool], pydantic.Field(alias="eventStream")] = None + + friendly_name: Annotated[Optional[str], pydantic.Field(alias="friendlyName")] = None + + hub_search: Annotated[Optional[bool], pydantic.Field(alias="hubSearch")] = None + + item_clusters: Annotated[Optional[bool], pydantic.Field(alias="itemClusters")] = ( + None + ) + + livetv: Optional[int] = None + + machine_identifier: Annotated[ + Optional[Any], pydantic.Field(alias="machineIdentifier") + ] = None + + media_providers: Annotated[ + Optional[bool], pydantic.Field(alias="mediaProviders") + ] = None + + multiuser: Optional[bool] = None + + music_analysis: Annotated[Optional[int], pydantic.Field(alias="musicAnalysis")] = ( + None + ) + + my_plex: Annotated[Optional[bool], pydantic.Field(alias="myPlex")] = None + + my_plex_mapping_state: Annotated[ + Optional[Any], pydantic.Field(alias="myPlexMappingState") + ] = None + + my_plex_signin_state: Annotated[ + Optional[Any], pydantic.Field(alias="myPlexSigninState") + ] = None + + my_plex_subscription: Annotated[ + Optional[bool], pydantic.Field(alias="myPlexSubscription") + ] = None + + my_plex_username: Annotated[ + Optional[str], pydantic.Field(alias="myPlexUsername") + ] = None + + offline_transcode: Annotated[ + Optional[Any], pydantic.Field(alias="offlineTranscode") + ] = None + + owner_features: Annotated[Optional[str], pydantic.Field(alias="ownerFeatures")] = ( + None + ) + r"""A comma-separated list of features which are enabled for the server owner""" + + platform: Optional[str] = None + + platform_version: Annotated[ + Optional[str], pydantic.Field(alias="platformVersion") + ] = None + + plugin_host: Annotated[Optional[bool], pydantic.Field(alias="pluginHost")] = None + + push_notifications: Annotated[ + Optional[bool], pydantic.Field(alias="pushNotifications") + ] = None + + read_only_libraries: Annotated[ + Optional[bool], pydantic.Field(alias="readOnlyLibraries") + ] = None + + streaming_brain_abr_version: Annotated[ + Optional[int], pydantic.Field(alias="streamingBrainABRVersion") + ] = None + + streaming_brain_version: Annotated[ + Optional[int], pydantic.Field(alias="streamingBrainVersion") + ] = None + + sync: Optional[bool] = None + + transcoder_active_video_sessions: Annotated[ + Optional[int], pydantic.Field(alias="transcoderActiveVideoSessions") + ] = None + + transcoder_audio: Annotated[ + Optional[bool], pydantic.Field(alias="transcoderAudio") + ] = None + + transcoder_lyrics: Annotated[ + Optional[bool], pydantic.Field(alias="transcoderLyrics") + ] = None + + transcoder_photo: Annotated[ + Optional[bool], pydantic.Field(alias="transcoderPhoto") + ] = None + + transcoder_subtitles: Annotated[ + Optional[bool], pydantic.Field(alias="transcoderSubtitles") + ] = None + + transcoder_video: Annotated[ + Optional[bool], pydantic.Field(alias="transcoderVideo") + ] = None + + transcoder_video_bitrates: Annotated[ + Optional[Any], pydantic.Field(alias="transcoderVideoBitrates") + ] = None + r"""The suggested video quality bitrates to present to the user""" + + transcoder_video_qualities: Annotated[ + Optional[str], pydantic.Field(alias="transcoderVideoQualities") + ] = None + + transcoder_video_resolutions: Annotated[ + Optional[Any], pydantic.Field(alias="transcoderVideoResolutions") + ] = None + r"""The suggested video resolutions to the above quality bitrates""" + + updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None + + updater: Optional[bool] = None + + version: Optional[str] = None + + voice_search: Annotated[Optional[bool], pydantic.Field(alias="voiceSearch")] = None + + directory: Annotated[ + Optional[List[RequestHandlerSlashGetResponses200Directory]], + pydantic.Field(alias="Directory"), + ] = None + + +class RequestHandlerSlashGetResponses200TypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[ + RequestHandlerSlashGetResponses200MediaContainerTypedDict + ] + + +class RequestHandlerSlashGetResponses200(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[RequestHandlerSlashGetResponses200MediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None diff --git a/src/plex_api_client/models/components/security.py b/src/plex_api_client/models/components/security.py index cf851f6..34daf1a 100644 --- a/src/plex_api_client/models/components/security.py +++ b/src/plex_api_client/models/components/security.py @@ -8,11 +8,11 @@ from typing_extensions import Annotated, NotRequired, TypedDict class SecurityTypedDict(TypedDict): - access_token: NotRequired[str] + token: NotRequired[str] class Security(BaseModel): - access_token: Annotated[ + token: Annotated[ Optional[str], FieldMetadata( security=SecurityMetadata( diff --git a/src/plex_api_client/models/components/session.py b/src/plex_api_client/models/components/session.py new file mode 100644 index 0000000..cc568d9 --- /dev/null +++ b/src/plex_api_client/models/components/session.py @@ -0,0 +1,38 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from plex_api_client.types import BaseModel +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class SessionLocation(str, Enum): + r"""The location of the client""" + + LAN = "lan" + WAN = "wan" + + +class SessionTypedDict(TypedDict): + r"""Information about the playback session""" + + bandwidth: NotRequired[int] + r"""The bandwidth used by this client's playback in kbps""" + id: NotRequired[str] + r"""The id of the playback session""" + location: NotRequired[SessionLocation] + r"""The location of the client""" + + +class Session(BaseModel): + r"""Information about the playback session""" + + bandwidth: Optional[int] = None + r"""The bandwidth used by this client's playback in kbps""" + + id: Optional[str] = None + r"""The id of the playback session""" + + location: Optional[SessionLocation] = None + r"""The location of the client""" diff --git a/src/plex_api_client/models/components/setting.py b/src/plex_api_client/models/components/setting.py new file mode 100644 index 0000000..ce9629a --- /dev/null +++ b/src/plex_api_client/models/components/setting.py @@ -0,0 +1,92 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from plex_api_client.types import BaseModel +import pydantic +from typing import Optional, Union +from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict + + +class Type(str, Enum): + r"""The type of the value of this setting""" + + BOOL = "bool" + INT = "int" + TEXT = "text" + DOUBLE = "double" + + +DefaultTypedDict = TypeAliasType("DefaultTypedDict", Union[str, float, bool]) +r"""The default value of this setting""" + + +Default = TypeAliasType("Default", Union[str, float, bool]) +r"""The default value of this setting""" + + +ValueTypedDict = TypeAliasType("ValueTypedDict", Union[str, float, bool]) +r"""The current value of this setting""" + + +Value = TypeAliasType("Value", Union[str, float, bool]) +r"""The current value of this setting""" + + +class SettingTypedDict(TypedDict): + r"""A configuration setting or preference""" + + type: NotRequired[Type] + r"""The type of the value of this setting""" + default: NotRequired[DefaultTypedDict] + r"""The default value of this setting""" + advanced: NotRequired[bool] + r"""Whether the setting is considered advanced and normally hidden from the user""" + enum_values: NotRequired[str] + r"""The possible values for this setting if restricted. The list is `|` separated with `value:name` entries.""" + group: NotRequired[str] + r"""The group name of this setting to aid in display of a hierarchy""" + hidden: NotRequired[bool] + r"""Whether the setting is hidden or not""" + id: NotRequired[str] + r"""The query parameter name for this setting""" + label: NotRequired[str] + r"""A user-friendly name for the setting""" + summary: NotRequired[str] + r"""A description of the setting""" + value: NotRequired[ValueTypedDict] + r"""The current value of this setting""" + + +class Setting(BaseModel): + r"""A configuration setting or preference""" + + type: Optional[Type] = None + r"""The type of the value of this setting""" + + default: Optional[Default] = None + r"""The default value of this setting""" + + advanced: Optional[bool] = None + r"""Whether the setting is considered advanced and normally hidden from the user""" + + enum_values: Annotated[Optional[str], pydantic.Field(alias="enumValues")] = None + r"""The possible values for this setting if restricted. The list is `|` separated with `value:name` entries.""" + + group: Optional[str] = None + r"""The group name of this setting to aid in display of a hierarchy""" + + hidden: Optional[bool] = None + r"""Whether the setting is hidden or not""" + + id: Optional[str] = None + r"""The query parameter name for this setting""" + + label: Optional[str] = None + r"""A user-friendly name for the setting""" + + summary: Optional[str] = None + r"""A description of the setting""" + + value: Optional[Value] = None + r"""The current value of this setting""" diff --git a/src/plex_api_client/models/components/slash_get_responses_200.py b/src/plex_api_client/models/components/slash_get_responses_200.py new file mode 100644 index 0000000..0bb52ab --- /dev/null +++ b/src/plex_api_client/models/components/slash_get_responses_200.py @@ -0,0 +1,88 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .metadata import Metadata, MetadataTypedDict +from plex_api_client.types import BaseModel +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SlashGetResponses200MediaContainerTypedDict(TypedDict): + content: NotRequired[str] + r"""The flavors of directory found here: + - Primary: (e.g. all, On Deck) These are still used in some clients to provide \"shortcuts\" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users. + - Secondary: These are marked with `\"secondary\": true` and were used by old clients to provide nested menus allowing for primative (but structured) navigation. + - Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `\"search\": true` which used to be used to allow clients to build search dialogs on the fly. + """ + allow_sync: NotRequired[bool] + art: NotRequired[str] + directory: NotRequired[List[MetadataTypedDict]] + identifier: NotRequired[str] + library_section_id: NotRequired[int] + media_tag_prefix: NotRequired[str] + media_tag_version: NotRequired[int] + size: NotRequired[int] + sort_asc: NotRequired[bool] + thumb: NotRequired[str] + title1: NotRequired[str] + view_group: NotRequired[str] + view_mode: NotRequired[int] + + +class SlashGetResponses200MediaContainer(BaseModel): + content: Optional[str] = None + r"""The flavors of directory found here: + - Primary: (e.g. all, On Deck) These are still used in some clients to provide \"shortcuts\" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users. + - Secondary: These are marked with `\"secondary\": true` and were used by old clients to provide nested menus allowing for primative (but structured) navigation. + - Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `\"search\": true` which used to be used to allow clients to build search dialogs on the fly. + """ + + allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None + + art: Optional[str] = None + + directory: Annotated[ + Optional[List[Metadata]], pydantic.Field(alias="Directory") + ] = None + + identifier: Optional[str] = None + + library_section_id: Annotated[ + Optional[int], pydantic.Field(alias="librarySectionID") + ] = None + + media_tag_prefix: Annotated[ + Optional[str], pydantic.Field(alias="mediaTagPrefix") + ] = None + + media_tag_version: Annotated[ + Optional[int], pydantic.Field(alias="mediaTagVersion") + ] = None + + size: Optional[int] = None + + sort_asc: Annotated[Optional[bool], pydantic.Field(alias="sortAsc")] = None + + thumb: Optional[str] = None + + title1: Optional[str] = None + + view_group: Annotated[Optional[str], pydantic.Field(alias="viewGroup")] = None + + view_mode: Annotated[Optional[int], pydantic.Field(alias="viewMode")] = None + + +class SlashGetResponses200TypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[SlashGetResponses200MediaContainerTypedDict] + + +class SlashGetResponses200(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[SlashGetResponses200MediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None diff --git a/src/plex_api_client/models/components/sort.py b/src/plex_api_client/models/components/sort.py new file mode 100644 index 0000000..7a96dbf --- /dev/null +++ b/src/plex_api_client/models/components/sort.py @@ -0,0 +1,145 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +from plex_api_client.types import BaseModel +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SortPivotTypedDict(TypedDict): + title: NotRequired[str] + type: NotRequired[str] + context: NotRequired[str] + id: NotRequired[str] + key: NotRequired[str] + symbol: NotRequired[str] + + +class SortPivot(BaseModel): + title: Optional[str] = None + + type: Optional[str] = None + + context: Optional[str] = None + + id: Optional[str] = None + + key: Optional[str] = None + + symbol: Optional[str] = None + + +class SortDefault(str, Enum): + r"""If present, this sort is the default and in this direction""" + + ASC = "asc" + DESC = "desc" + + +class DefaultDirection(str, Enum): + r"""This default diction of this sort""" + + ASC = "asc" + DESC = "desc" + + +class SortTypedDict(TypedDict): + r"""Each `Sort` object contains a description of the sort field.""" + + title: NotRequired[str] + r"""The title of the field.""" + type: NotRequired[str] + art: NotRequired[str] + content: NotRequired[bool] + filter_: NotRequired[str] + has_prefs: NotRequired[bool] + has_store_services: NotRequired[bool] + hub_key: NotRequired[str] + identifier: NotRequired[str] + key: NotRequired[str] + r"""The key to use in the sort field to make items sort by this item""" + last_accessed_at: NotRequired[int] + pivot: NotRequired[List[SortPivotTypedDict]] + share: NotRequired[int] + thumb: NotRequired[str] + title_bar: NotRequired[str] + default: NotRequired[SortDefault] + r"""If present, this sort is the default and in this direction""" + default_direction: NotRequired[DefaultDirection] + r"""This default diction of this sort""" + desc_key: NotRequired[str] + r"""The key for sorting this field in reverse order""" + first_character_key: NotRequired[str] + r"""The key to use to get items sorted by this field and indexed by the first character""" + + +class Sort(BaseModel): + r"""Each `Sort` object contains a description of the sort field.""" + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + title: Optional[str] = None + r"""The title of the field.""" + + type: Optional[str] = None + + art: Optional[str] = None + + content: Optional[bool] = None + + filter_: Annotated[Optional[str], pydantic.Field(alias="filter")] = None + + has_prefs: Annotated[Optional[bool], pydantic.Field(alias="hasPrefs")] = None + + has_store_services: Annotated[ + Optional[bool], pydantic.Field(alias="hasStoreServices") + ] = None + + hub_key: Annotated[Optional[str], pydantic.Field(alias="hubKey")] = None + + identifier: Optional[str] = None + + key: Optional[str] = None + r"""The key to use in the sort field to make items sort by this item""" + + last_accessed_at: Annotated[ + Optional[int], pydantic.Field(alias="lastAccessedAt") + ] = None + + pivot: Annotated[Optional[List[SortPivot]], pydantic.Field(alias="Pivot")] = None + + share: Optional[int] = None + + thumb: Optional[str] = None + + title_bar: Annotated[Optional[str], pydantic.Field(alias="titleBar")] = None + + default: Optional[SortDefault] = None + r"""If present, this sort is the default and in this direction""" + + default_direction: Annotated[ + Optional[DefaultDirection], pydantic.Field(alias="defaultDirection") + ] = None + r"""This default diction of this sort""" + + desc_key: Annotated[Optional[str], pydantic.Field(alias="descKey")] = None + r"""The key for sorting this field in reverse order""" + + first_character_key: Annotated[ + Optional[str], pydantic.Field(alias="firstCharacterKey") + ] = None + r"""The key to use to get items sorted by this field and indexed by the first character""" + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] diff --git a/src/plex_api_client/models/components/stream.py b/src/plex_api_client/models/components/stream.py new file mode 100644 index 0000000..94b6608 --- /dev/null +++ b/src/plex_api_client/models/components/stream.py @@ -0,0 +1,143 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from plex_api_client.types import BaseModel +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class StreamTypedDict(TypedDict): + r"""`Stream` represents a particular stream from a media item, such as the video stream, audio stream, or subtitle stream. The stream may either be part of the file represented by the parent `Part` or, especially for subtitles, an external file. The stream contains more detailed information about the specific stream. For example, a video may include the `aspectRatio` at the `Media` level, but detailed information about the video stream like the color space will be included on the `Stream` for the video stream. Note that photos do not have streams (mostly as an optimization).""" + + default: NotRequired[bool] + audio_channel_layout: NotRequired[Any] + bit_depth: NotRequired[int] + bitrate: NotRequired[int] + can_auto_sync: NotRequired[bool] + r"""For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video.""" + chroma_location: NotRequired[Any] + chroma_subsampling: NotRequired[Any] + codec: NotRequired[Any] + r"""The codec of the stream, such as `h264` or `aac`""" + color_primaries: NotRequired[Any] + color_range: NotRequired[Any] + color_space: NotRequired[Any] + color_trc: NotRequired[Any] + display_title: NotRequired[Any] + r"""A friendly name for the stream, often comprised of the language and codec information""" + frame_rate: NotRequired[float] + has_scaling_matrix: NotRequired[Any] + height: NotRequired[int] + id: NotRequired[int] + index: NotRequired[int] + r"""If the stream is part of the `Part` and not an external resource, the index of the stream within that part""" + key: NotRequired[Any] + r"""If the stream is independently streamable, the key from which it can be streamed""" + language: NotRequired[Any] + language_code: NotRequired[Any] + r"""The three character language code for the stream contents""" + level: NotRequired[int] + profile: NotRequired[Any] + ref_frames: NotRequired[int] + sampling_rate: NotRequired[int] + selected: NotRequired[bool] + stream_identifier: NotRequired[int] + stream_type: NotRequired[int] + r"""A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics""" + width: NotRequired[int] + + +class Stream(BaseModel): + r"""`Stream` represents a particular stream from a media item, such as the video stream, audio stream, or subtitle stream. The stream may either be part of the file represented by the parent `Part` or, especially for subtitles, an external file. The stream contains more detailed information about the specific stream. For example, a video may include the `aspectRatio` at the `Media` level, but detailed information about the video stream like the color space will be included on the `Stream` for the video stream. Note that photos do not have streams (mostly as an optimization).""" + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + default: Optional[bool] = None + + audio_channel_layout: Annotated[ + Optional[Any], pydantic.Field(alias="audioChannelLayout") + ] = None + + bit_depth: Annotated[Optional[int], pydantic.Field(alias="bitDepth")] = None + + bitrate: Optional[int] = None + + can_auto_sync: Annotated[Optional[bool], pydantic.Field(alias="canAutoSync")] = None + r"""For subtitle streams only. If `true` then the server can attempt to automatically sync the subtitle timestamps with the video.""" + + chroma_location: Annotated[ + Optional[Any], pydantic.Field(alias="chromaLocation") + ] = None + + chroma_subsampling: Annotated[ + Optional[Any], pydantic.Field(alias="chromaSubsampling") + ] = None + + codec: Optional[Any] = None + r"""The codec of the stream, such as `h264` or `aac`""" + + color_primaries: Annotated[ + Optional[Any], pydantic.Field(alias="colorPrimaries") + ] = None + + color_range: Annotated[Optional[Any], pydantic.Field(alias="colorRange")] = None + + color_space: Annotated[Optional[Any], pydantic.Field(alias="colorSpace")] = None + + color_trc: Annotated[Optional[Any], pydantic.Field(alias="colorTrc")] = None + + display_title: Annotated[Optional[Any], pydantic.Field(alias="displayTitle")] = None + r"""A friendly name for the stream, often comprised of the language and codec information""" + + frame_rate: Annotated[Optional[float], pydantic.Field(alias="frameRate")] = None + + has_scaling_matrix: Annotated[ + Optional[Any], pydantic.Field(alias="hasScalingMatrix") + ] = None + + height: Optional[int] = None + + id: Optional[int] = None + + index: Optional[int] = None + r"""If the stream is part of the `Part` and not an external resource, the index of the stream within that part""" + + key: Optional[Any] = None + r"""If the stream is independently streamable, the key from which it can be streamed""" + + language: Optional[Any] = None + + language_code: Annotated[Optional[Any], pydantic.Field(alias="languageCode")] = None + r"""The three character language code for the stream contents""" + + level: Optional[int] = None + + profile: Optional[Any] = None + + ref_frames: Annotated[Optional[int], pydantic.Field(alias="refFrames")] = None + + sampling_rate: Annotated[Optional[int], pydantic.Field(alias="samplingRate")] = None + + selected: Optional[bool] = None + + stream_identifier: Annotated[ + Optional[int], pydantic.Field(alias="streamIdentifier") + ] = None + + stream_type: Annotated[Optional[int], pydantic.Field(alias="streamType")] = None + r"""A number indicating the type of the stream. `1` for video, `2` for audio, `3` for subtitles, `4` for lyrics""" + + width: Optional[int] = None + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] diff --git a/src/plex_api_client/models/components/subtitles.py b/src/plex_api_client/models/components/subtitles.py new file mode 100644 index 0000000..567c083 --- /dev/null +++ b/src/plex_api_client/models/components/subtitles.py @@ -0,0 +1,14 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum + + +class Subtitles(str, Enum): + AUTO = "auto" + BURN = "burn" + NONE = "none" + SIDECAR = "sidecar" + EMBEDDED = "embedded" + SEGMENTED = "segmented" + UNKNOWN = "unknown" diff --git a/src/plex_api_client/models/components/tag.py b/src/plex_api_client/models/components/tag.py new file mode 100644 index 0000000..17c5877 --- /dev/null +++ b/src/plex_api_client/models/components/tag.py @@ -0,0 +1,56 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from plex_api_client.types import BaseModel +import pydantic +from typing import Any, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class TagTypedDict(TypedDict): + r"""A variety of extra information about a metadata item is included as tags. These tags use their own element names such as `Genre`, `Writer`, `Directory`, and `Role`. Individual tag types may introduce their own extra attributes.""" + + confidence: NotRequired[float] + r"""Measure of the confidence of an automatic tag""" + context: NotRequired[str] + filter_: NotRequired[Any] + r"""A filter parameter that can be used to query for more content that matches this tag value.""" + id: NotRequired[int] + rating_key: NotRequired[str] + role: NotRequired[Any] + r"""The role this actor played""" + tag: NotRequired[Any] + r"""The value of the tag (the name)""" + tag_key: NotRequired[Any] + r"""Plex identifier for this tag which can be used to fetch additional information from plex.tv""" + tag_type: NotRequired[int] + thumb: NotRequired[Any] + + +class Tag(BaseModel): + r"""A variety of extra information about a metadata item is included as tags. These tags use their own element names such as `Genre`, `Writer`, `Directory`, and `Role`. Individual tag types may introduce their own extra attributes.""" + + confidence: Optional[float] = None + r"""Measure of the confidence of an automatic tag""" + + context: Optional[str] = None + + filter_: Annotated[Optional[Any], pydantic.Field(alias="filter")] = None + r"""A filter parameter that can be used to query for more content that matches this tag value.""" + + id: Optional[int] = None + + rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None + + role: Optional[Any] = None + r"""The role this actor played""" + + tag: Optional[Any] = None + r"""The value of the tag (the name)""" + + tag_key: Annotated[Optional[Any], pydantic.Field(alias="tagKey")] = None + r"""Plex identifier for this tag which can be used to fetch additional information from plex.tv""" + + tag_type: Annotated[Optional[int], pydantic.Field(alias="tagType")] = None + + thumb: Optional[Any] = None diff --git a/src/plex_api_client/models/components/transcodesession.py b/src/plex_api_client/models/components/transcodesession.py new file mode 100644 index 0000000..7739b22 --- /dev/null +++ b/src/plex_api_client/models/components/transcodesession.py @@ -0,0 +1,66 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from plex_api_client.types import BaseModel +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class TranscodeSessionTypedDict(TypedDict): + r"""The transcode session if item is currently being transcoded""" + + complete: NotRequired[bool] + context: NotRequired[str] + duration: NotRequired[int] + error: NotRequired[bool] + key: NotRequired[str] + progress: NotRequired[float] + protocol: NotRequired[str] + size: NotRequired[int] + source_audio_codec: NotRequired[str] + source_video_codec: NotRequired[str] + speed: NotRequired[float] + throttled: NotRequired[bool] + transcode_hw_full_pipeline: NotRequired[bool] + transcode_hw_requested: NotRequired[bool] + + +class TranscodeSession(BaseModel): + r"""The transcode session if item is currently being transcoded""" + + complete: Optional[bool] = None + + context: Optional[str] = None + + duration: Optional[int] = None + + error: Optional[bool] = None + + key: Optional[str] = None + + progress: Optional[float] = None + + protocol: Optional[str] = None + + size: Optional[int] = None + + source_audio_codec: Annotated[ + Optional[str], pydantic.Field(alias="sourceAudioCodec") + ] = None + + source_video_codec: Annotated[ + Optional[str], pydantic.Field(alias="sourceVideoCodec") + ] = None + + speed: Optional[float] = None + + throttled: Optional[bool] = None + + transcode_hw_full_pipeline: Annotated[ + Optional[bool], pydantic.Field(alias="transcodeHwFullPipeline") + ] = None + + transcode_hw_requested: Annotated[ + Optional[bool], pydantic.Field(alias="transcodeHwRequested") + ] = None diff --git a/src/plex_api_client/models/components/transcodetype.py b/src/plex_api_client/models/components/transcodetype.py new file mode 100644 index 0000000..2610f81 --- /dev/null +++ b/src/plex_api_client/models/components/transcodetype.py @@ -0,0 +1,11 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum + + +class TranscodeType(str, Enum): + VIDEO = "video" + MUSIC = "music" + AUDIO = "audio" + SUBTITLES = "subtitles" diff --git a/src/plex_api_client/models/components/user.py b/src/plex_api_client/models/components/user.py new file mode 100644 index 0000000..2ca4546 --- /dev/null +++ b/src/plex_api_client/models/components/user.py @@ -0,0 +1,30 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from plex_api_client.types import BaseModel +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class UserTypedDict(TypedDict): + r"""The user playing the content""" + + title: NotRequired[str] + r"""The username""" + id: NotRequired[str] + r"""The id of the user""" + thumb: NotRequired[str] + r"""Thumb image to display for the user""" + + +class User(BaseModel): + r"""The user playing the content""" + + title: Optional[str] = None + r"""The username""" + + id: Optional[str] = None + r"""The id of the user""" + + thumb: Optional[str] = None + r"""Thumb image to display for the user""" diff --git a/src/plex_api_client/models/errors/__init__.py b/src/plex_api_client/models/errors/__init__.py index c9d3afa..bc5e2c7 100644 --- a/src/plex_api_client/models/errors/__init__.py +++ b/src/plex_api_client/models/errors/__init__.py @@ -7,2045 +7,16 @@ import builtins import sys if TYPE_CHECKING: - from .addplaylistcontents import ( - AddPlaylistContentsBadRequest, - AddPlaylistContentsBadRequestData, - AddPlaylistContentsErrors, - AddPlaylistContentsErrorsTypedDict, - AddPlaylistContentsPlaylistsErrors, - AddPlaylistContentsPlaylistsErrorsTypedDict, - AddPlaylistContentsUnauthorized, - AddPlaylistContentsUnauthorizedData, - ) - from .applyupdates import ( - ApplyUpdatesBadRequest, - ApplyUpdatesBadRequestData, - ApplyUpdatesErrors, - ApplyUpdatesErrorsTypedDict, - ApplyUpdatesUnauthorized, - ApplyUpdatesUnauthorizedData, - ApplyUpdatesUpdaterErrors, - ApplyUpdatesUpdaterErrorsTypedDict, - ) - from .cancelserveractivities import ( - CancelServerActivitiesActivitiesErrors, - CancelServerActivitiesActivitiesErrorsTypedDict, - CancelServerActivitiesBadRequest, - CancelServerActivitiesBadRequestData, - CancelServerActivitiesErrors, - CancelServerActivitiesErrorsTypedDict, - CancelServerActivitiesUnauthorized, - CancelServerActivitiesUnauthorizedData, - ) - from .checkforupdates import ( - CheckForUpdatesBadRequest, - CheckForUpdatesBadRequestData, - CheckForUpdatesErrors, - CheckForUpdatesErrorsTypedDict, - CheckForUpdatesUnauthorized, - CheckForUpdatesUnauthorizedData, - CheckForUpdatesUpdaterErrors, - CheckForUpdatesUpdaterErrorsTypedDict, - ) - from .clearplaylistcontents import ( - ClearPlaylistContentsBadRequest, - ClearPlaylistContentsBadRequestData, - ClearPlaylistContentsErrors, - ClearPlaylistContentsErrorsTypedDict, - ClearPlaylistContentsPlaylistsErrors, - ClearPlaylistContentsPlaylistsErrorsTypedDict, - ClearPlaylistContentsUnauthorized, - ClearPlaylistContentsUnauthorizedData, - ) - from .createplaylist import ( - CreatePlaylistBadRequest, - CreatePlaylistBadRequestData, - CreatePlaylistErrors, - CreatePlaylistErrorsTypedDict, - CreatePlaylistPlaylistsErrors, - CreatePlaylistPlaylistsErrorsTypedDict, - CreatePlaylistUnauthorized, - CreatePlaylistUnauthorizedData, - ) - from .deletelibrary import ( - DeleteLibraryBadRequest, - DeleteLibraryBadRequestData, - DeleteLibraryErrors, - DeleteLibraryErrorsTypedDict, - DeleteLibraryLibraryErrors, - DeleteLibraryLibraryErrorsTypedDict, - DeleteLibraryUnauthorized, - DeleteLibraryUnauthorizedData, - ) - from .deleteplaylist import ( - DeletePlaylistBadRequest, - DeletePlaylistBadRequestData, - DeletePlaylistErrors, - DeletePlaylistErrorsTypedDict, - DeletePlaylistPlaylistsErrors, - DeletePlaylistPlaylistsErrorsTypedDict, - DeletePlaylistUnauthorized, - DeletePlaylistUnauthorizedData, - ) - from .enablepapertrail import ( - EnablePaperTrailBadRequest, - EnablePaperTrailBadRequestData, - EnablePaperTrailErrors, - EnablePaperTrailErrorsTypedDict, - EnablePaperTrailLogErrors, - EnablePaperTrailLogErrorsTypedDict, - EnablePaperTrailUnauthorized, - EnablePaperTrailUnauthorizedData, - ) - from .get_actors_library import ( - GetActorsLibraryBadRequest, - GetActorsLibraryBadRequestData, - GetActorsLibraryErrors, - GetActorsLibraryErrorsTypedDict, - GetActorsLibraryLibraryErrors, - GetActorsLibraryLibraryErrorsTypedDict, - GetActorsLibraryUnauthorized, - GetActorsLibraryUnauthorizedData, - ) - from .get_all_libraries import ( - GetAllLibrariesBadRequest, - GetAllLibrariesBadRequestData, - GetAllLibrariesErrors, - GetAllLibrariesErrorsTypedDict, - GetAllLibrariesLibraryErrors, - GetAllLibrariesLibraryErrorsTypedDict, - GetAllLibrariesUnauthorized, - GetAllLibrariesUnauthorizedData, - ) - from .get_banner_image import ( - GetBannerImageBadRequest, - GetBannerImageBadRequestData, - GetBannerImageErrors, - GetBannerImageErrorsTypedDict, - GetBannerImageMediaErrors, - GetBannerImageMediaErrorsTypedDict, - GetBannerImageUnauthorized, - GetBannerImageUnauthorizedData, - ) - from .get_countries_library import ( - GetCountriesLibraryBadRequest, - GetCountriesLibraryBadRequestData, - GetCountriesLibraryErrors, - GetCountriesLibraryErrorsTypedDict, - GetCountriesLibraryLibraryErrors, - GetCountriesLibraryLibraryErrorsTypedDict, - GetCountriesLibraryUnauthorized, - GetCountriesLibraryUnauthorizedData, - ) - from .get_genres_library import ( - GetGenresLibraryBadRequest, - GetGenresLibraryBadRequestData, - GetGenresLibraryErrors, - GetGenresLibraryErrorsTypedDict, - GetGenresLibraryLibraryErrors, - GetGenresLibraryLibraryErrorsTypedDict, - GetGenresLibraryUnauthorized, - GetGenresLibraryUnauthorizedData, - ) - from .get_library_details import ( - GetLibraryDetailsBadRequest, - GetLibraryDetailsBadRequestData, - GetLibraryDetailsErrors, - GetLibraryDetailsErrorsTypedDict, - GetLibraryDetailsLibraryErrors, - GetLibraryDetailsLibraryErrorsTypedDict, - GetLibraryDetailsUnauthorized, - GetLibraryDetailsUnauthorizedData, - ) - from .get_library_items import ( - GetLibraryItemsBadRequest, - GetLibraryItemsBadRequestData, - GetLibraryItemsErrors, - GetLibraryItemsErrorsTypedDict, - GetLibraryItemsLibraryErrors, - GetLibraryItemsLibraryErrorsTypedDict, - GetLibraryItemsUnauthorized, - GetLibraryItemsUnauthorizedData, - ) - from .get_library_sections_all import ( - GetLibrarySectionsAllBadRequest, - GetLibrarySectionsAllBadRequestData, - GetLibrarySectionsAllErrors, - GetLibrarySectionsAllErrorsTypedDict, - GetLibrarySectionsAllLibraryErrors, - GetLibrarySectionsAllLibraryErrorsTypedDict, - GetLibrarySectionsAllUnauthorized, - GetLibrarySectionsAllUnauthorizedData, - ) - from .get_media_meta_data import ( - GetMediaMetaDataBadRequest, - GetMediaMetaDataBadRequestData, - GetMediaMetaDataErrors, - GetMediaMetaDataErrorsTypedDict, - GetMediaMetaDataLibraryErrors, - GetMediaMetaDataLibraryErrorsTypedDict, - GetMediaMetaDataUnauthorized, - GetMediaMetaDataUnauthorizedData, - ) - from .get_media_providers import ( - GetMediaProvidersBadRequest, - GetMediaProvidersBadRequestData, - GetMediaProvidersErrors, - GetMediaProvidersErrorsTypedDict, - GetMediaProvidersServerErrors, - GetMediaProvidersServerErrorsTypedDict, - GetMediaProvidersUnauthorized, - GetMediaProvidersUnauthorizedData, - ) - from .get_recently_added_library import ( - GetRecentlyAddedLibraryBadRequest, - GetRecentlyAddedLibraryBadRequestData, - GetRecentlyAddedLibraryErrors, - GetRecentlyAddedLibraryErrorsTypedDict, - GetRecentlyAddedLibraryLibraryErrors, - GetRecentlyAddedLibraryLibraryErrorsTypedDict, - GetRecentlyAddedLibraryUnauthorized, - GetRecentlyAddedLibraryUnauthorizedData, - ) - from .get_refresh_library_metadata import ( - GetRefreshLibraryMetadataBadRequest, - GetRefreshLibraryMetadataBadRequestData, - GetRefreshLibraryMetadataErrors, - GetRefreshLibraryMetadataErrorsTypedDict, - GetRefreshLibraryMetadataLibraryErrors, - GetRefreshLibraryMetadataLibraryErrorsTypedDict, - GetRefreshLibraryMetadataUnauthorized, - GetRefreshLibraryMetadataUnauthorizedData, - ) - from .get_search_all_libraries import ( - GetSearchAllLibrariesBadRequest, - GetSearchAllLibrariesBadRequestData, - GetSearchAllLibrariesErrors, - GetSearchAllLibrariesErrorsTypedDict, - GetSearchAllLibrariesLibraryErrors, - GetSearchAllLibrariesLibraryErrorsTypedDict, - GetSearchAllLibrariesUnauthorized, - GetSearchAllLibrariesUnauthorizedData, - ) - from .get_search_library import ( - GetSearchLibraryBadRequest, - GetSearchLibraryBadRequestData, - GetSearchLibraryErrors, - GetSearchLibraryErrorsTypedDict, - GetSearchLibraryLibraryErrors, - GetSearchLibraryLibraryErrorsTypedDict, - GetSearchLibraryUnauthorized, - GetSearchLibraryUnauthorizedData, - ) - from .get_server_identity import ( - GetServerIdentityRequestTimeout, - GetServerIdentityRequestTimeoutData, - ) - from .get_server_resources import ( - GetServerResourcesBadRequest, - GetServerResourcesBadRequestData, - GetServerResourcesErrors, - GetServerResourcesErrorsTypedDict, - GetServerResourcesPlexErrors, - GetServerResourcesPlexErrorsTypedDict, - GetServerResourcesUnauthorized, - GetServerResourcesUnauthorizedData, - ) - from .get_thumb_image import ( - GetThumbImageBadRequest, - GetThumbImageBadRequestData, - GetThumbImageErrors, - GetThumbImageErrorsTypedDict, - GetThumbImageMediaErrors, - GetThumbImageMediaErrorsTypedDict, - GetThumbImageUnauthorized, - GetThumbImageUnauthorizedData, - ) - from .get_users import ( - GetUsersBadRequest, - GetUsersBadRequestData, - GetUsersErrors, - GetUsersErrorsTypedDict, - GetUsersUnauthorized, - GetUsersUnauthorizedData, - GetUsersUsersErrors, - GetUsersUsersErrorsTypedDict, - ) - from .get_watch_list import ( - GetWatchListBadRequest, - GetWatchListBadRequestData, - GetWatchListErrors, - GetWatchListErrorsTypedDict, - GetWatchListUnauthorized, - GetWatchListUnauthorizedData, - GetWatchListWatchlistErrors, - GetWatchListWatchlistErrorsTypedDict, - ) - from .getavailableclients import ( - GetAvailableClientsBadRequest, - GetAvailableClientsBadRequestData, - GetAvailableClientsErrors, - GetAvailableClientsErrorsTypedDict, - GetAvailableClientsServerErrors, - GetAvailableClientsServerErrorsTypedDict, - GetAvailableClientsUnauthorized, - GetAvailableClientsUnauthorizedData, - ) - from .getbandwidthstatistics import ( - GetBandwidthStatisticsBadRequest, - GetBandwidthStatisticsBadRequestData, - GetBandwidthStatisticsErrors, - GetBandwidthStatisticsErrorsTypedDict, - GetBandwidthStatisticsStatisticsErrors, - GetBandwidthStatisticsStatisticsErrorsTypedDict, - GetBandwidthStatisticsUnauthorized, - GetBandwidthStatisticsUnauthorizedData, - ) - from .getbutlertasks import ( - GetButlerTasksBadRequest, - GetButlerTasksBadRequestData, - GetButlerTasksButlerErrors, - GetButlerTasksButlerErrorsTypedDict, - GetButlerTasksErrors, - GetButlerTasksErrorsTypedDict, - GetButlerTasksUnauthorized, - GetButlerTasksUnauthorizedData, - ) - from .getcompanionsdata import ( - GetCompanionsDataBadRequest, - GetCompanionsDataBadRequestData, - GetCompanionsDataErrors, - GetCompanionsDataErrorsTypedDict, - GetCompanionsDataPlexErrors, - GetCompanionsDataPlexErrorsTypedDict, - GetCompanionsDataUnauthorized, - GetCompanionsDataUnauthorizedData, - ) - from .getdevices import ( - GetDevicesBadRequest, - GetDevicesBadRequestData, - GetDevicesErrors, - GetDevicesErrorsTypedDict, - GetDevicesServerErrors, - GetDevicesServerErrorsTypedDict, - GetDevicesUnauthorized, - GetDevicesUnauthorizedData, - ) - from .getfilehash import ( - GetFileHashBadRequest, - GetFileHashBadRequestData, - GetFileHashErrors, - GetFileHashErrorsTypedDict, - GetFileHashLibraryErrors, - GetFileHashLibraryErrorsTypedDict, - GetFileHashUnauthorized, - GetFileHashUnauthorizedData, - ) - from .getgeodata import ( - GetGeoDataBadRequest, - GetGeoDataBadRequestData, - GetGeoDataErrors, - GetGeoDataErrorsTypedDict, - GetGeoDataPlexErrors, - GetGeoDataPlexErrorsTypedDict, - GetGeoDataUnauthorized, - GetGeoDataUnauthorizedData, - ) - from .getglobalhubs import ( - GetGlobalHubsBadRequest, - GetGlobalHubsBadRequestData, - GetGlobalHubsErrors, - GetGlobalHubsErrorsTypedDict, - GetGlobalHubsHubsErrors, - GetGlobalHubsHubsErrorsTypedDict, - GetGlobalHubsUnauthorized, - GetGlobalHubsUnauthorizedData, - ) - from .gethomedata import ( - GetHomeDataBadRequest, - GetHomeDataBadRequestData, - GetHomeDataErrors, - GetHomeDataErrorsTypedDict, - GetHomeDataPlexErrors, - GetHomeDataPlexErrorsTypedDict, - GetHomeDataUnauthorized, - GetHomeDataUnauthorizedData, - ) - from .getlibraryhubs import ( - GetLibraryHubsBadRequest, - GetLibraryHubsBadRequestData, - GetLibraryHubsErrors, - GetLibraryHubsErrorsTypedDict, - GetLibraryHubsHubsErrors, - GetLibraryHubsHubsErrorsTypedDict, - GetLibraryHubsUnauthorized, - GetLibraryHubsUnauthorizedData, - ) - from .getmetadatachildren import ( - GetMetadataChildrenBadRequest, - GetMetadataChildrenBadRequestData, - GetMetadataChildrenErrors, - GetMetadataChildrenErrorsTypedDict, - GetMetadataChildrenLibraryErrors, - GetMetadataChildrenLibraryErrorsTypedDict, - GetMetadataChildrenUnauthorized, - GetMetadataChildrenUnauthorizedData, - ) - from .getmyplexaccount import ( - GetMyPlexAccountBadRequest, - GetMyPlexAccountBadRequestData, - GetMyPlexAccountErrors, - GetMyPlexAccountErrorsTypedDict, - GetMyPlexAccountServerErrors, - GetMyPlexAccountServerErrorsTypedDict, - GetMyPlexAccountUnauthorized, - GetMyPlexAccountUnauthorizedData, - ) - from .getpin import ( - GetPinBadRequest, - GetPinBadRequestData, - GetPinErrors, - GetPinErrorsTypedDict, - ) - from .getplaylist import ( - GetPlaylistBadRequest, - GetPlaylistBadRequestData, - GetPlaylistErrors, - GetPlaylistErrorsTypedDict, - GetPlaylistPlaylistsErrors, - GetPlaylistPlaylistsErrorsTypedDict, - GetPlaylistUnauthorized, - GetPlaylistUnauthorizedData, - ) - from .getplaylistcontents import ( - GetPlaylistContentsBadRequest, - GetPlaylistContentsBadRequestData, - GetPlaylistContentsErrors, - GetPlaylistContentsErrorsTypedDict, - GetPlaylistContentsPlaylistsErrors, - GetPlaylistContentsPlaylistsErrorsTypedDict, - GetPlaylistContentsUnauthorized, - GetPlaylistContentsUnauthorizedData, - ) - from .getplaylists import ( - GetPlaylistsBadRequest, - GetPlaylistsBadRequestData, - GetPlaylistsErrors, - GetPlaylistsErrorsTypedDict, - GetPlaylistsPlaylistsErrors, - GetPlaylistsPlaylistsErrorsTypedDict, - GetPlaylistsUnauthorized, - GetPlaylistsUnauthorizedData, - ) - from .getresizedphoto import ( - GetResizedPhotoBadRequest, - GetResizedPhotoBadRequestData, - GetResizedPhotoErrors, - GetResizedPhotoErrorsTypedDict, - GetResizedPhotoServerErrors, - GetResizedPhotoServerErrorsTypedDict, - GetResizedPhotoUnauthorized, - GetResizedPhotoUnauthorizedData, - ) - from .getresourcesstatistics import ( - GetResourcesStatisticsBadRequest, - GetResourcesStatisticsBadRequestData, - GetResourcesStatisticsErrors, - GetResourcesStatisticsErrorsTypedDict, - GetResourcesStatisticsStatisticsErrors, - GetResourcesStatisticsStatisticsErrorsTypedDict, - GetResourcesStatisticsUnauthorized, - GetResourcesStatisticsUnauthorizedData, - ) - from .getsearchresults import ( - GetSearchResultsBadRequest, - GetSearchResultsBadRequestData, - GetSearchResultsErrors, - GetSearchResultsErrorsTypedDict, - GetSearchResultsSearchErrors, - GetSearchResultsSearchErrorsTypedDict, - GetSearchResultsUnauthorized, - GetSearchResultsUnauthorizedData, - ) - from .getserveractivities import ( - GetServerActivitiesActivitiesErrors, - GetServerActivitiesActivitiesErrorsTypedDict, - GetServerActivitiesBadRequest, - GetServerActivitiesBadRequestData, - GetServerActivitiesErrors, - GetServerActivitiesErrorsTypedDict, - GetServerActivitiesUnauthorized, - GetServerActivitiesUnauthorizedData, - ) - from .getservercapabilities import ( - Errors, - ErrorsTypedDict, - GetServerCapabilitiesBadRequest, - GetServerCapabilitiesBadRequestData, - GetServerCapabilitiesErrors, - GetServerCapabilitiesErrorsTypedDict, - GetServerCapabilitiesUnauthorized, - GetServerCapabilitiesUnauthorizedData, - ) - from .getserverlist import ( - GetServerListBadRequest, - GetServerListBadRequestData, - GetServerListErrors, - GetServerListErrorsTypedDict, - GetServerListServerErrors, - GetServerListServerErrorsTypedDict, - GetServerListUnauthorized, - GetServerListUnauthorizedData, - ) - from .getserverpreferences import ( - GetServerPreferencesBadRequest, - GetServerPreferencesBadRequestData, - GetServerPreferencesErrors, - GetServerPreferencesErrorsTypedDict, - GetServerPreferencesServerErrors, - GetServerPreferencesServerErrorsTypedDict, - GetServerPreferencesUnauthorized, - GetServerPreferencesUnauthorizedData, - ) - from .getsessionhistory import ( - GetSessionHistoryBadRequest, - GetSessionHistoryBadRequestData, - GetSessionHistoryErrors, - GetSessionHistoryErrorsTypedDict, - GetSessionHistorySessionsErrors, - GetSessionHistorySessionsErrorsTypedDict, - GetSessionHistoryUnauthorized, - GetSessionHistoryUnauthorizedData, - ) - from .getsessions import ( - GetSessionsBadRequest, - GetSessionsBadRequestData, - GetSessionsErrors, - GetSessionsErrorsTypedDict, - GetSessionsSessionsErrors, - GetSessionsSessionsErrorsTypedDict, - GetSessionsUnauthorized, - GetSessionsUnauthorizedData, - ) - from .getsourceconnectioninformation import ( - GetSourceConnectionInformationAuthenticationErrors, - GetSourceConnectionInformationAuthenticationErrorsTypedDict, - GetSourceConnectionInformationBadRequest, - GetSourceConnectionInformationBadRequestData, - GetSourceConnectionInformationErrors, - GetSourceConnectionInformationErrorsTypedDict, - GetSourceConnectionInformationUnauthorized, - GetSourceConnectionInformationUnauthorizedData, - ) - from .getstatistics import ( - GetStatisticsBadRequest, - GetStatisticsBadRequestData, - GetStatisticsErrors, - GetStatisticsErrorsTypedDict, - GetStatisticsStatisticsErrors, - GetStatisticsStatisticsErrorsTypedDict, - GetStatisticsUnauthorized, - GetStatisticsUnauthorizedData, - ) - from .gettimeline import ( - GetTimelineBadRequest, - GetTimelineBadRequestData, - GetTimelineErrors, - GetTimelineErrorsTypedDict, - GetTimelineUnauthorized, - GetTimelineUnauthorizedData, - GetTimelineVideoErrors, - GetTimelineVideoErrorsTypedDict, - ) - from .gettokenbypinid import ( - GetTokenByPinIDBadRequest, - GetTokenByPinIDBadRequestData, - GetTokenByPinIDErrors, - GetTokenByPinIDErrorsTypedDict, - GetTokenByPinIDPlexErrors, - GetTokenByPinIDPlexErrorsTypedDict, - GetTokenByPinIDResponseBody, - GetTokenByPinIDResponseBodyData, - ) - from .gettokendetails import ( - GetTokenDetailsAuthenticationErrors, - GetTokenDetailsAuthenticationErrorsTypedDict, - GetTokenDetailsBadRequest, - GetTokenDetailsBadRequestData, - GetTokenDetailsErrors, - GetTokenDetailsErrorsTypedDict, - GetTokenDetailsUnauthorized, - GetTokenDetailsUnauthorizedData, - ) - from .gettopwatchedcontent import ( - GetTopWatchedContentBadRequest, - GetTopWatchedContentBadRequestData, - GetTopWatchedContentErrors, - GetTopWatchedContentErrorsTypedDict, - GetTopWatchedContentLibraryErrors, - GetTopWatchedContentLibraryErrorsTypedDict, - GetTopWatchedContentUnauthorized, - GetTopWatchedContentUnauthorizedData, - ) - from .gettranscodesessions import ( - GetTranscodeSessionsBadRequest, - GetTranscodeSessionsBadRequestData, - GetTranscodeSessionsErrors, - GetTranscodeSessionsErrorsTypedDict, - GetTranscodeSessionsSessionsErrors, - GetTranscodeSessionsSessionsErrorsTypedDict, - GetTranscodeSessionsUnauthorized, - GetTranscodeSessionsUnauthorizedData, - ) - from .gettransienttoken import ( - GetTransientTokenAuthenticationErrors, - GetTransientTokenAuthenticationErrorsTypedDict, - GetTransientTokenBadRequest, - GetTransientTokenBadRequestData, - GetTransientTokenErrors, - GetTransientTokenErrorsTypedDict, - GetTransientTokenUnauthorized, - GetTransientTokenUnauthorizedData, - ) - from .getupdatestatus import ( - GetUpdateStatusBadRequest, - GetUpdateStatusBadRequestData, - GetUpdateStatusErrors, - GetUpdateStatusErrorsTypedDict, - GetUpdateStatusUnauthorized, - GetUpdateStatusUnauthorizedData, - GetUpdateStatusUpdaterErrors, - GetUpdateStatusUpdaterErrorsTypedDict, - ) - from .getuserfriends import ( - GetUserFriendsBadRequest, - GetUserFriendsBadRequestData, - GetUserFriendsErrors, - GetUserFriendsErrorsTypedDict, - GetUserFriendsPlexErrors, - GetUserFriendsPlexErrorsTypedDict, - GetUserFriendsUnauthorized, - GetUserFriendsUnauthorizedData, - ) - from .logline import ( - LogLineBadRequest, - LogLineBadRequestData, - LogLineErrors, - LogLineErrorsTypedDict, - LogLineLogErrors, - LogLineLogErrorsTypedDict, - LogLineUnauthorized, - LogLineUnauthorizedData, - ) - from .logmultiline import ( - LogMultiLineBadRequest, - LogMultiLineBadRequestData, - LogMultiLineErrors, - LogMultiLineErrorsTypedDict, - LogMultiLineLogErrors, - LogMultiLineLogErrorsTypedDict, - LogMultiLineUnauthorized, - LogMultiLineUnauthorizedData, - ) - from .markplayed import ( - MarkPlayedBadRequest, - MarkPlayedBadRequestData, - MarkPlayedErrors, - MarkPlayedErrorsTypedDict, - MarkPlayedMediaErrors, - MarkPlayedMediaErrorsTypedDict, - MarkPlayedUnauthorized, - MarkPlayedUnauthorizedData, - ) - from .markunplayed import ( - MarkUnplayedBadRequest, - MarkUnplayedBadRequestData, - MarkUnplayedErrors, - MarkUnplayedErrorsTypedDict, - MarkUnplayedMediaErrors, - MarkUnplayedMediaErrorsTypedDict, - MarkUnplayedUnauthorized, - MarkUnplayedUnauthorizedData, - ) from .no_response_error import NoResponseError - from .performsearch import ( - PerformSearchBadRequest, - PerformSearchBadRequestData, - PerformSearchErrors, - PerformSearchErrorsTypedDict, - PerformSearchSearchErrors, - PerformSearchSearchErrorsTypedDict, - PerformSearchUnauthorized, - PerformSearchUnauthorizedData, - ) - from .performvoicesearch import ( - PerformVoiceSearchBadRequest, - PerformVoiceSearchBadRequestData, - PerformVoiceSearchErrors, - PerformVoiceSearchErrorsTypedDict, - PerformVoiceSearchSearchErrors, - PerformVoiceSearchSearchErrorsTypedDict, - PerformVoiceSearchUnauthorized, - PerformVoiceSearchUnauthorizedData, - ) - from .post_users_sign_in_data import ( - PostUsersSignInDataAuthenticationErrors, - PostUsersSignInDataAuthenticationErrorsTypedDict, - PostUsersSignInDataBadRequest, - PostUsersSignInDataBadRequestData, - PostUsersSignInDataErrors, - PostUsersSignInDataErrorsTypedDict, - PostUsersSignInDataUnauthorized, - PostUsersSignInDataUnauthorizedData, - ) from .responsevalidationerror import ResponseValidationError from .sdkerror import SDKError - from .startalltasks import ( - StartAllTasksBadRequest, - StartAllTasksBadRequestData, - StartAllTasksButlerErrors, - StartAllTasksButlerErrorsTypedDict, - StartAllTasksErrors, - StartAllTasksErrorsTypedDict, - StartAllTasksUnauthorized, - StartAllTasksUnauthorizedData, - ) - from .starttask import ( - StartTaskBadRequest, - StartTaskBadRequestData, - StartTaskButlerErrors, - StartTaskButlerErrorsTypedDict, - StartTaskErrors, - StartTaskErrorsTypedDict, - StartTaskUnauthorized, - StartTaskUnauthorizedData, - ) - from .startuniversaltranscode import ( - StartUniversalTranscodeBadRequest, - StartUniversalTranscodeBadRequestData, - StartUniversalTranscodeErrors, - StartUniversalTranscodeErrorsTypedDict, - StartUniversalTranscodeUnauthorized, - StartUniversalTranscodeUnauthorizedData, - StartUniversalTranscodeVideoErrors, - StartUniversalTranscodeVideoErrorsTypedDict, - ) - from .stopalltasks import ( - StopAllTasksBadRequest, - StopAllTasksBadRequestData, - StopAllTasksButlerErrors, - StopAllTasksButlerErrorsTypedDict, - StopAllTasksErrors, - StopAllTasksErrorsTypedDict, - StopAllTasksUnauthorized, - StopAllTasksUnauthorizedData, - ) - from .stoptask import ( - StopTaskBadRequest, - StopTaskBadRequestData, - StopTaskButlerErrors, - StopTaskButlerErrorsTypedDict, - StopTaskErrors, - StopTaskErrorsTypedDict, - StopTaskUnauthorized, - StopTaskUnauthorizedData, - ) - from .stoptranscodesession import ( - StopTranscodeSessionBadRequest, - StopTranscodeSessionBadRequestData, - StopTranscodeSessionErrors, - StopTranscodeSessionErrorsTypedDict, - StopTranscodeSessionSessionsErrors, - StopTranscodeSessionSessionsErrorsTypedDict, - StopTranscodeSessionUnauthorized, - StopTranscodeSessionUnauthorizedData, - ) - from .updateplaylist import ( - UpdatePlaylistBadRequest, - UpdatePlaylistBadRequestData, - UpdatePlaylistErrors, - UpdatePlaylistErrorsTypedDict, - UpdatePlaylistPlaylistsErrors, - UpdatePlaylistPlaylistsErrorsTypedDict, - UpdatePlaylistUnauthorized, - UpdatePlaylistUnauthorizedData, - ) - from .updateplayprogress import ( - UpdatePlayProgressBadRequest, - UpdatePlayProgressBadRequestData, - UpdatePlayProgressErrors, - UpdatePlayProgressErrorsTypedDict, - UpdatePlayProgressMediaErrors, - UpdatePlayProgressMediaErrorsTypedDict, - UpdatePlayProgressUnauthorized, - UpdatePlayProgressUnauthorizedData, - ) - from .uploadplaylist import ( - UploadPlaylistBadRequest, - UploadPlaylistBadRequestData, - UploadPlaylistErrors, - UploadPlaylistErrorsTypedDict, - UploadPlaylistPlaylistsErrors, - UploadPlaylistPlaylistsErrorsTypedDict, - UploadPlaylistUnauthorized, - UploadPlaylistUnauthorizedData, - ) -__all__ = [ - "AddPlaylistContentsBadRequest", - "AddPlaylistContentsBadRequestData", - "AddPlaylistContentsErrors", - "AddPlaylistContentsErrorsTypedDict", - "AddPlaylistContentsPlaylistsErrors", - "AddPlaylistContentsPlaylistsErrorsTypedDict", - "AddPlaylistContentsUnauthorized", - "AddPlaylistContentsUnauthorizedData", - "ApplyUpdatesBadRequest", - "ApplyUpdatesBadRequestData", - "ApplyUpdatesErrors", - "ApplyUpdatesErrorsTypedDict", - "ApplyUpdatesUnauthorized", - "ApplyUpdatesUnauthorizedData", - "ApplyUpdatesUpdaterErrors", - "ApplyUpdatesUpdaterErrorsTypedDict", - "CancelServerActivitiesActivitiesErrors", - "CancelServerActivitiesActivitiesErrorsTypedDict", - "CancelServerActivitiesBadRequest", - "CancelServerActivitiesBadRequestData", - "CancelServerActivitiesErrors", - "CancelServerActivitiesErrorsTypedDict", - "CancelServerActivitiesUnauthorized", - "CancelServerActivitiesUnauthorizedData", - "CheckForUpdatesBadRequest", - "CheckForUpdatesBadRequestData", - "CheckForUpdatesErrors", - "CheckForUpdatesErrorsTypedDict", - "CheckForUpdatesUnauthorized", - "CheckForUpdatesUnauthorizedData", - "CheckForUpdatesUpdaterErrors", - "CheckForUpdatesUpdaterErrorsTypedDict", - "ClearPlaylistContentsBadRequest", - "ClearPlaylistContentsBadRequestData", - "ClearPlaylistContentsErrors", - "ClearPlaylistContentsErrorsTypedDict", - "ClearPlaylistContentsPlaylistsErrors", - "ClearPlaylistContentsPlaylistsErrorsTypedDict", - "ClearPlaylistContentsUnauthorized", - "ClearPlaylistContentsUnauthorizedData", - "CreatePlaylistBadRequest", - "CreatePlaylistBadRequestData", - "CreatePlaylistErrors", - "CreatePlaylistErrorsTypedDict", - "CreatePlaylistPlaylistsErrors", - "CreatePlaylistPlaylistsErrorsTypedDict", - "CreatePlaylistUnauthorized", - "CreatePlaylistUnauthorizedData", - "DeleteLibraryBadRequest", - "DeleteLibraryBadRequestData", - "DeleteLibraryErrors", - "DeleteLibraryErrorsTypedDict", - "DeleteLibraryLibraryErrors", - "DeleteLibraryLibraryErrorsTypedDict", - "DeleteLibraryUnauthorized", - "DeleteLibraryUnauthorizedData", - "DeletePlaylistBadRequest", - "DeletePlaylistBadRequestData", - "DeletePlaylistErrors", - "DeletePlaylistErrorsTypedDict", - "DeletePlaylistPlaylistsErrors", - "DeletePlaylistPlaylistsErrorsTypedDict", - "DeletePlaylistUnauthorized", - "DeletePlaylistUnauthorizedData", - "EnablePaperTrailBadRequest", - "EnablePaperTrailBadRequestData", - "EnablePaperTrailErrors", - "EnablePaperTrailErrorsTypedDict", - "EnablePaperTrailLogErrors", - "EnablePaperTrailLogErrorsTypedDict", - "EnablePaperTrailUnauthorized", - "EnablePaperTrailUnauthorizedData", - "Errors", - "ErrorsTypedDict", - "GetActorsLibraryBadRequest", - "GetActorsLibraryBadRequestData", - "GetActorsLibraryErrors", - "GetActorsLibraryErrorsTypedDict", - "GetActorsLibraryLibraryErrors", - "GetActorsLibraryLibraryErrorsTypedDict", - "GetActorsLibraryUnauthorized", - "GetActorsLibraryUnauthorizedData", - "GetAllLibrariesBadRequest", - "GetAllLibrariesBadRequestData", - "GetAllLibrariesErrors", - "GetAllLibrariesErrorsTypedDict", - "GetAllLibrariesLibraryErrors", - "GetAllLibrariesLibraryErrorsTypedDict", - "GetAllLibrariesUnauthorized", - "GetAllLibrariesUnauthorizedData", - "GetAvailableClientsBadRequest", - "GetAvailableClientsBadRequestData", - "GetAvailableClientsErrors", - "GetAvailableClientsErrorsTypedDict", - "GetAvailableClientsServerErrors", - "GetAvailableClientsServerErrorsTypedDict", - "GetAvailableClientsUnauthorized", - "GetAvailableClientsUnauthorizedData", - "GetBandwidthStatisticsBadRequest", - "GetBandwidthStatisticsBadRequestData", - "GetBandwidthStatisticsErrors", - "GetBandwidthStatisticsErrorsTypedDict", - "GetBandwidthStatisticsStatisticsErrors", - "GetBandwidthStatisticsStatisticsErrorsTypedDict", - "GetBandwidthStatisticsUnauthorized", - "GetBandwidthStatisticsUnauthorizedData", - "GetBannerImageBadRequest", - "GetBannerImageBadRequestData", - "GetBannerImageErrors", - "GetBannerImageErrorsTypedDict", - "GetBannerImageMediaErrors", - "GetBannerImageMediaErrorsTypedDict", - "GetBannerImageUnauthorized", - "GetBannerImageUnauthorizedData", - "GetButlerTasksBadRequest", - "GetButlerTasksBadRequestData", - "GetButlerTasksButlerErrors", - "GetButlerTasksButlerErrorsTypedDict", - "GetButlerTasksErrors", - "GetButlerTasksErrorsTypedDict", - "GetButlerTasksUnauthorized", - "GetButlerTasksUnauthorizedData", - "GetCompanionsDataBadRequest", - "GetCompanionsDataBadRequestData", - "GetCompanionsDataErrors", - "GetCompanionsDataErrorsTypedDict", - "GetCompanionsDataPlexErrors", - "GetCompanionsDataPlexErrorsTypedDict", - "GetCompanionsDataUnauthorized", - "GetCompanionsDataUnauthorizedData", - "GetCountriesLibraryBadRequest", - "GetCountriesLibraryBadRequestData", - "GetCountriesLibraryErrors", - "GetCountriesLibraryErrorsTypedDict", - "GetCountriesLibraryLibraryErrors", - "GetCountriesLibraryLibraryErrorsTypedDict", - "GetCountriesLibraryUnauthorized", - "GetCountriesLibraryUnauthorizedData", - "GetDevicesBadRequest", - "GetDevicesBadRequestData", - "GetDevicesErrors", - "GetDevicesErrorsTypedDict", - "GetDevicesServerErrors", - "GetDevicesServerErrorsTypedDict", - "GetDevicesUnauthorized", - "GetDevicesUnauthorizedData", - "GetFileHashBadRequest", - "GetFileHashBadRequestData", - "GetFileHashErrors", - "GetFileHashErrorsTypedDict", - "GetFileHashLibraryErrors", - "GetFileHashLibraryErrorsTypedDict", - "GetFileHashUnauthorized", - "GetFileHashUnauthorizedData", - "GetGenresLibraryBadRequest", - "GetGenresLibraryBadRequestData", - "GetGenresLibraryErrors", - "GetGenresLibraryErrorsTypedDict", - "GetGenresLibraryLibraryErrors", - "GetGenresLibraryLibraryErrorsTypedDict", - "GetGenresLibraryUnauthorized", - "GetGenresLibraryUnauthorizedData", - "GetGeoDataBadRequest", - "GetGeoDataBadRequestData", - "GetGeoDataErrors", - "GetGeoDataErrorsTypedDict", - "GetGeoDataPlexErrors", - "GetGeoDataPlexErrorsTypedDict", - "GetGeoDataUnauthorized", - "GetGeoDataUnauthorizedData", - "GetGlobalHubsBadRequest", - "GetGlobalHubsBadRequestData", - "GetGlobalHubsErrors", - "GetGlobalHubsErrorsTypedDict", - "GetGlobalHubsHubsErrors", - "GetGlobalHubsHubsErrorsTypedDict", - "GetGlobalHubsUnauthorized", - "GetGlobalHubsUnauthorizedData", - "GetHomeDataBadRequest", - "GetHomeDataBadRequestData", - "GetHomeDataErrors", - "GetHomeDataErrorsTypedDict", - "GetHomeDataPlexErrors", - "GetHomeDataPlexErrorsTypedDict", - "GetHomeDataUnauthorized", - "GetHomeDataUnauthorizedData", - "GetLibraryDetailsBadRequest", - "GetLibraryDetailsBadRequestData", - "GetLibraryDetailsErrors", - "GetLibraryDetailsErrorsTypedDict", - "GetLibraryDetailsLibraryErrors", - "GetLibraryDetailsLibraryErrorsTypedDict", - "GetLibraryDetailsUnauthorized", - "GetLibraryDetailsUnauthorizedData", - "GetLibraryHubsBadRequest", - "GetLibraryHubsBadRequestData", - "GetLibraryHubsErrors", - "GetLibraryHubsErrorsTypedDict", - "GetLibraryHubsHubsErrors", - "GetLibraryHubsHubsErrorsTypedDict", - "GetLibraryHubsUnauthorized", - "GetLibraryHubsUnauthorizedData", - "GetLibraryItemsBadRequest", - "GetLibraryItemsBadRequestData", - "GetLibraryItemsErrors", - "GetLibraryItemsErrorsTypedDict", - "GetLibraryItemsLibraryErrors", - "GetLibraryItemsLibraryErrorsTypedDict", - "GetLibraryItemsUnauthorized", - "GetLibraryItemsUnauthorizedData", - "GetLibrarySectionsAllBadRequest", - "GetLibrarySectionsAllBadRequestData", - "GetLibrarySectionsAllErrors", - "GetLibrarySectionsAllErrorsTypedDict", - "GetLibrarySectionsAllLibraryErrors", - "GetLibrarySectionsAllLibraryErrorsTypedDict", - "GetLibrarySectionsAllUnauthorized", - "GetLibrarySectionsAllUnauthorizedData", - "GetMediaMetaDataBadRequest", - "GetMediaMetaDataBadRequestData", - "GetMediaMetaDataErrors", - "GetMediaMetaDataErrorsTypedDict", - "GetMediaMetaDataLibraryErrors", - "GetMediaMetaDataLibraryErrorsTypedDict", - "GetMediaMetaDataUnauthorized", - "GetMediaMetaDataUnauthorizedData", - "GetMediaProvidersBadRequest", - "GetMediaProvidersBadRequestData", - "GetMediaProvidersErrors", - "GetMediaProvidersErrorsTypedDict", - "GetMediaProvidersServerErrors", - "GetMediaProvidersServerErrorsTypedDict", - "GetMediaProvidersUnauthorized", - "GetMediaProvidersUnauthorizedData", - "GetMetadataChildrenBadRequest", - "GetMetadataChildrenBadRequestData", - "GetMetadataChildrenErrors", - "GetMetadataChildrenErrorsTypedDict", - "GetMetadataChildrenLibraryErrors", - "GetMetadataChildrenLibraryErrorsTypedDict", - "GetMetadataChildrenUnauthorized", - "GetMetadataChildrenUnauthorizedData", - "GetMyPlexAccountBadRequest", - "GetMyPlexAccountBadRequestData", - "GetMyPlexAccountErrors", - "GetMyPlexAccountErrorsTypedDict", - "GetMyPlexAccountServerErrors", - "GetMyPlexAccountServerErrorsTypedDict", - "GetMyPlexAccountUnauthorized", - "GetMyPlexAccountUnauthorizedData", - "GetPinBadRequest", - "GetPinBadRequestData", - "GetPinErrors", - "GetPinErrorsTypedDict", - "GetPlaylistBadRequest", - "GetPlaylistBadRequestData", - "GetPlaylistContentsBadRequest", - "GetPlaylistContentsBadRequestData", - "GetPlaylistContentsErrors", - "GetPlaylistContentsErrorsTypedDict", - "GetPlaylistContentsPlaylistsErrors", - "GetPlaylistContentsPlaylistsErrorsTypedDict", - "GetPlaylistContentsUnauthorized", - "GetPlaylistContentsUnauthorizedData", - "GetPlaylistErrors", - "GetPlaylistErrorsTypedDict", - "GetPlaylistPlaylistsErrors", - "GetPlaylistPlaylistsErrorsTypedDict", - "GetPlaylistUnauthorized", - "GetPlaylistUnauthorizedData", - "GetPlaylistsBadRequest", - "GetPlaylistsBadRequestData", - "GetPlaylistsErrors", - "GetPlaylistsErrorsTypedDict", - "GetPlaylistsPlaylistsErrors", - "GetPlaylistsPlaylistsErrorsTypedDict", - "GetPlaylistsUnauthorized", - "GetPlaylistsUnauthorizedData", - "GetRecentlyAddedLibraryBadRequest", - "GetRecentlyAddedLibraryBadRequestData", - "GetRecentlyAddedLibraryErrors", - "GetRecentlyAddedLibraryErrorsTypedDict", - "GetRecentlyAddedLibraryLibraryErrors", - "GetRecentlyAddedLibraryLibraryErrorsTypedDict", - "GetRecentlyAddedLibraryUnauthorized", - "GetRecentlyAddedLibraryUnauthorizedData", - "GetRefreshLibraryMetadataBadRequest", - "GetRefreshLibraryMetadataBadRequestData", - "GetRefreshLibraryMetadataErrors", - "GetRefreshLibraryMetadataErrorsTypedDict", - "GetRefreshLibraryMetadataLibraryErrors", - "GetRefreshLibraryMetadataLibraryErrorsTypedDict", - "GetRefreshLibraryMetadataUnauthorized", - "GetRefreshLibraryMetadataUnauthorizedData", - "GetResizedPhotoBadRequest", - "GetResizedPhotoBadRequestData", - "GetResizedPhotoErrors", - "GetResizedPhotoErrorsTypedDict", - "GetResizedPhotoServerErrors", - "GetResizedPhotoServerErrorsTypedDict", - "GetResizedPhotoUnauthorized", - "GetResizedPhotoUnauthorizedData", - "GetResourcesStatisticsBadRequest", - "GetResourcesStatisticsBadRequestData", - "GetResourcesStatisticsErrors", - "GetResourcesStatisticsErrorsTypedDict", - "GetResourcesStatisticsStatisticsErrors", - "GetResourcesStatisticsStatisticsErrorsTypedDict", - "GetResourcesStatisticsUnauthorized", - "GetResourcesStatisticsUnauthorizedData", - "GetSearchAllLibrariesBadRequest", - "GetSearchAllLibrariesBadRequestData", - "GetSearchAllLibrariesErrors", - "GetSearchAllLibrariesErrorsTypedDict", - "GetSearchAllLibrariesLibraryErrors", - "GetSearchAllLibrariesLibraryErrorsTypedDict", - "GetSearchAllLibrariesUnauthorized", - "GetSearchAllLibrariesUnauthorizedData", - "GetSearchLibraryBadRequest", - "GetSearchLibraryBadRequestData", - "GetSearchLibraryErrors", - "GetSearchLibraryErrorsTypedDict", - "GetSearchLibraryLibraryErrors", - "GetSearchLibraryLibraryErrorsTypedDict", - "GetSearchLibraryUnauthorized", - "GetSearchLibraryUnauthorizedData", - "GetSearchResultsBadRequest", - "GetSearchResultsBadRequestData", - "GetSearchResultsErrors", - "GetSearchResultsErrorsTypedDict", - "GetSearchResultsSearchErrors", - "GetSearchResultsSearchErrorsTypedDict", - "GetSearchResultsUnauthorized", - "GetSearchResultsUnauthorizedData", - "GetServerActivitiesActivitiesErrors", - "GetServerActivitiesActivitiesErrorsTypedDict", - "GetServerActivitiesBadRequest", - "GetServerActivitiesBadRequestData", - "GetServerActivitiesErrors", - "GetServerActivitiesErrorsTypedDict", - "GetServerActivitiesUnauthorized", - "GetServerActivitiesUnauthorizedData", - "GetServerCapabilitiesBadRequest", - "GetServerCapabilitiesBadRequestData", - "GetServerCapabilitiesErrors", - "GetServerCapabilitiesErrorsTypedDict", - "GetServerCapabilitiesUnauthorized", - "GetServerCapabilitiesUnauthorizedData", - "GetServerIdentityRequestTimeout", - "GetServerIdentityRequestTimeoutData", - "GetServerListBadRequest", - "GetServerListBadRequestData", - "GetServerListErrors", - "GetServerListErrorsTypedDict", - "GetServerListServerErrors", - "GetServerListServerErrorsTypedDict", - "GetServerListUnauthorized", - "GetServerListUnauthorizedData", - "GetServerPreferencesBadRequest", - "GetServerPreferencesBadRequestData", - "GetServerPreferencesErrors", - "GetServerPreferencesErrorsTypedDict", - "GetServerPreferencesServerErrors", - "GetServerPreferencesServerErrorsTypedDict", - "GetServerPreferencesUnauthorized", - "GetServerPreferencesUnauthorizedData", - "GetServerResourcesBadRequest", - "GetServerResourcesBadRequestData", - "GetServerResourcesErrors", - "GetServerResourcesErrorsTypedDict", - "GetServerResourcesPlexErrors", - "GetServerResourcesPlexErrorsTypedDict", - "GetServerResourcesUnauthorized", - "GetServerResourcesUnauthorizedData", - "GetSessionHistoryBadRequest", - "GetSessionHistoryBadRequestData", - "GetSessionHistoryErrors", - "GetSessionHistoryErrorsTypedDict", - "GetSessionHistorySessionsErrors", - "GetSessionHistorySessionsErrorsTypedDict", - "GetSessionHistoryUnauthorized", - "GetSessionHistoryUnauthorizedData", - "GetSessionsBadRequest", - "GetSessionsBadRequestData", - "GetSessionsErrors", - "GetSessionsErrorsTypedDict", - "GetSessionsSessionsErrors", - "GetSessionsSessionsErrorsTypedDict", - "GetSessionsUnauthorized", - "GetSessionsUnauthorizedData", - "GetSourceConnectionInformationAuthenticationErrors", - "GetSourceConnectionInformationAuthenticationErrorsTypedDict", - "GetSourceConnectionInformationBadRequest", - "GetSourceConnectionInformationBadRequestData", - "GetSourceConnectionInformationErrors", - "GetSourceConnectionInformationErrorsTypedDict", - "GetSourceConnectionInformationUnauthorized", - "GetSourceConnectionInformationUnauthorizedData", - "GetStatisticsBadRequest", - "GetStatisticsBadRequestData", - "GetStatisticsErrors", - "GetStatisticsErrorsTypedDict", - "GetStatisticsStatisticsErrors", - "GetStatisticsStatisticsErrorsTypedDict", - "GetStatisticsUnauthorized", - "GetStatisticsUnauthorizedData", - "GetThumbImageBadRequest", - "GetThumbImageBadRequestData", - "GetThumbImageErrors", - "GetThumbImageErrorsTypedDict", - "GetThumbImageMediaErrors", - "GetThumbImageMediaErrorsTypedDict", - "GetThumbImageUnauthorized", - "GetThumbImageUnauthorizedData", - "GetTimelineBadRequest", - "GetTimelineBadRequestData", - "GetTimelineErrors", - "GetTimelineErrorsTypedDict", - "GetTimelineUnauthorized", - "GetTimelineUnauthorizedData", - "GetTimelineVideoErrors", - "GetTimelineVideoErrorsTypedDict", - "GetTokenByPinIDBadRequest", - "GetTokenByPinIDBadRequestData", - "GetTokenByPinIDErrors", - "GetTokenByPinIDErrorsTypedDict", - "GetTokenByPinIDPlexErrors", - "GetTokenByPinIDPlexErrorsTypedDict", - "GetTokenByPinIDResponseBody", - "GetTokenByPinIDResponseBodyData", - "GetTokenDetailsAuthenticationErrors", - "GetTokenDetailsAuthenticationErrorsTypedDict", - "GetTokenDetailsBadRequest", - "GetTokenDetailsBadRequestData", - "GetTokenDetailsErrors", - "GetTokenDetailsErrorsTypedDict", - "GetTokenDetailsUnauthorized", - "GetTokenDetailsUnauthorizedData", - "GetTopWatchedContentBadRequest", - "GetTopWatchedContentBadRequestData", - "GetTopWatchedContentErrors", - "GetTopWatchedContentErrorsTypedDict", - "GetTopWatchedContentLibraryErrors", - "GetTopWatchedContentLibraryErrorsTypedDict", - "GetTopWatchedContentUnauthorized", - "GetTopWatchedContentUnauthorizedData", - "GetTranscodeSessionsBadRequest", - "GetTranscodeSessionsBadRequestData", - "GetTranscodeSessionsErrors", - "GetTranscodeSessionsErrorsTypedDict", - "GetTranscodeSessionsSessionsErrors", - "GetTranscodeSessionsSessionsErrorsTypedDict", - "GetTranscodeSessionsUnauthorized", - "GetTranscodeSessionsUnauthorizedData", - "GetTransientTokenAuthenticationErrors", - "GetTransientTokenAuthenticationErrorsTypedDict", - "GetTransientTokenBadRequest", - "GetTransientTokenBadRequestData", - "GetTransientTokenErrors", - "GetTransientTokenErrorsTypedDict", - "GetTransientTokenUnauthorized", - "GetTransientTokenUnauthorizedData", - "GetUpdateStatusBadRequest", - "GetUpdateStatusBadRequestData", - "GetUpdateStatusErrors", - "GetUpdateStatusErrorsTypedDict", - "GetUpdateStatusUnauthorized", - "GetUpdateStatusUnauthorizedData", - "GetUpdateStatusUpdaterErrors", - "GetUpdateStatusUpdaterErrorsTypedDict", - "GetUserFriendsBadRequest", - "GetUserFriendsBadRequestData", - "GetUserFriendsErrors", - "GetUserFriendsErrorsTypedDict", - "GetUserFriendsPlexErrors", - "GetUserFriendsPlexErrorsTypedDict", - "GetUserFriendsUnauthorized", - "GetUserFriendsUnauthorizedData", - "GetUsersBadRequest", - "GetUsersBadRequestData", - "GetUsersErrors", - "GetUsersErrorsTypedDict", - "GetUsersUnauthorized", - "GetUsersUnauthorizedData", - "GetUsersUsersErrors", - "GetUsersUsersErrorsTypedDict", - "GetWatchListBadRequest", - "GetWatchListBadRequestData", - "GetWatchListErrors", - "GetWatchListErrorsTypedDict", - "GetWatchListUnauthorized", - "GetWatchListUnauthorizedData", - "GetWatchListWatchlistErrors", - "GetWatchListWatchlistErrorsTypedDict", - "LogLineBadRequest", - "LogLineBadRequestData", - "LogLineErrors", - "LogLineErrorsTypedDict", - "LogLineLogErrors", - "LogLineLogErrorsTypedDict", - "LogLineUnauthorized", - "LogLineUnauthorizedData", - "LogMultiLineBadRequest", - "LogMultiLineBadRequestData", - "LogMultiLineErrors", - "LogMultiLineErrorsTypedDict", - "LogMultiLineLogErrors", - "LogMultiLineLogErrorsTypedDict", - "LogMultiLineUnauthorized", - "LogMultiLineUnauthorizedData", - "MarkPlayedBadRequest", - "MarkPlayedBadRequestData", - "MarkPlayedErrors", - "MarkPlayedErrorsTypedDict", - "MarkPlayedMediaErrors", - "MarkPlayedMediaErrorsTypedDict", - "MarkPlayedUnauthorized", - "MarkPlayedUnauthorizedData", - "MarkUnplayedBadRequest", - "MarkUnplayedBadRequestData", - "MarkUnplayedErrors", - "MarkUnplayedErrorsTypedDict", - "MarkUnplayedMediaErrors", - "MarkUnplayedMediaErrorsTypedDict", - "MarkUnplayedUnauthorized", - "MarkUnplayedUnauthorizedData", - "NoResponseError", - "PerformSearchBadRequest", - "PerformSearchBadRequestData", - "PerformSearchErrors", - "PerformSearchErrorsTypedDict", - "PerformSearchSearchErrors", - "PerformSearchSearchErrorsTypedDict", - "PerformSearchUnauthorized", - "PerformSearchUnauthorizedData", - "PerformVoiceSearchBadRequest", - "PerformVoiceSearchBadRequestData", - "PerformVoiceSearchErrors", - "PerformVoiceSearchErrorsTypedDict", - "PerformVoiceSearchSearchErrors", - "PerformVoiceSearchSearchErrorsTypedDict", - "PerformVoiceSearchUnauthorized", - "PerformVoiceSearchUnauthorizedData", - "PlexAPIError", - "PostUsersSignInDataAuthenticationErrors", - "PostUsersSignInDataAuthenticationErrorsTypedDict", - "PostUsersSignInDataBadRequest", - "PostUsersSignInDataBadRequestData", - "PostUsersSignInDataErrors", - "PostUsersSignInDataErrorsTypedDict", - "PostUsersSignInDataUnauthorized", - "PostUsersSignInDataUnauthorizedData", - "ResponseValidationError", - "SDKError", - "StartAllTasksBadRequest", - "StartAllTasksBadRequestData", - "StartAllTasksButlerErrors", - "StartAllTasksButlerErrorsTypedDict", - "StartAllTasksErrors", - "StartAllTasksErrorsTypedDict", - "StartAllTasksUnauthorized", - "StartAllTasksUnauthorizedData", - "StartTaskBadRequest", - "StartTaskBadRequestData", - "StartTaskButlerErrors", - "StartTaskButlerErrorsTypedDict", - "StartTaskErrors", - "StartTaskErrorsTypedDict", - "StartTaskUnauthorized", - "StartTaskUnauthorizedData", - "StartUniversalTranscodeBadRequest", - "StartUniversalTranscodeBadRequestData", - "StartUniversalTranscodeErrors", - "StartUniversalTranscodeErrorsTypedDict", - "StartUniversalTranscodeUnauthorized", - "StartUniversalTranscodeUnauthorizedData", - "StartUniversalTranscodeVideoErrors", - "StartUniversalTranscodeVideoErrorsTypedDict", - "StopAllTasksBadRequest", - "StopAllTasksBadRequestData", - "StopAllTasksButlerErrors", - "StopAllTasksButlerErrorsTypedDict", - "StopAllTasksErrors", - "StopAllTasksErrorsTypedDict", - "StopAllTasksUnauthorized", - "StopAllTasksUnauthorizedData", - "StopTaskBadRequest", - "StopTaskBadRequestData", - "StopTaskButlerErrors", - "StopTaskButlerErrorsTypedDict", - "StopTaskErrors", - "StopTaskErrorsTypedDict", - "StopTaskUnauthorized", - "StopTaskUnauthorizedData", - "StopTranscodeSessionBadRequest", - "StopTranscodeSessionBadRequestData", - "StopTranscodeSessionErrors", - "StopTranscodeSessionErrorsTypedDict", - "StopTranscodeSessionSessionsErrors", - "StopTranscodeSessionSessionsErrorsTypedDict", - "StopTranscodeSessionUnauthorized", - "StopTranscodeSessionUnauthorizedData", - "UpdatePlayProgressBadRequest", - "UpdatePlayProgressBadRequestData", - "UpdatePlayProgressErrors", - "UpdatePlayProgressErrorsTypedDict", - "UpdatePlayProgressMediaErrors", - "UpdatePlayProgressMediaErrorsTypedDict", - "UpdatePlayProgressUnauthorized", - "UpdatePlayProgressUnauthorizedData", - "UpdatePlaylistBadRequest", - "UpdatePlaylistBadRequestData", - "UpdatePlaylistErrors", - "UpdatePlaylistErrorsTypedDict", - "UpdatePlaylistPlaylistsErrors", - "UpdatePlaylistPlaylistsErrorsTypedDict", - "UpdatePlaylistUnauthorized", - "UpdatePlaylistUnauthorizedData", - "UploadPlaylistBadRequest", - "UploadPlaylistBadRequestData", - "UploadPlaylistErrors", - "UploadPlaylistErrorsTypedDict", - "UploadPlaylistPlaylistsErrors", - "UploadPlaylistPlaylistsErrorsTypedDict", - "UploadPlaylistUnauthorized", - "UploadPlaylistUnauthorizedData", -] +__all__ = ["NoResponseError", "PlexAPIError", "ResponseValidationError", "SDKError"] _dynamic_imports: dict[str, str] = { - "AddPlaylistContentsBadRequest": ".addplaylistcontents", - "AddPlaylistContentsBadRequestData": ".addplaylistcontents", - "AddPlaylistContentsErrors": ".addplaylistcontents", - "AddPlaylistContentsErrorsTypedDict": ".addplaylistcontents", - "AddPlaylistContentsPlaylistsErrors": ".addplaylistcontents", - "AddPlaylistContentsPlaylistsErrorsTypedDict": ".addplaylistcontents", - "AddPlaylistContentsUnauthorized": ".addplaylistcontents", - "AddPlaylistContentsUnauthorizedData": ".addplaylistcontents", - "ApplyUpdatesBadRequest": ".applyupdates", - "ApplyUpdatesBadRequestData": ".applyupdates", - "ApplyUpdatesErrors": ".applyupdates", - "ApplyUpdatesErrorsTypedDict": ".applyupdates", - "ApplyUpdatesUnauthorized": ".applyupdates", - "ApplyUpdatesUnauthorizedData": ".applyupdates", - "ApplyUpdatesUpdaterErrors": ".applyupdates", - "ApplyUpdatesUpdaterErrorsTypedDict": ".applyupdates", - "CancelServerActivitiesActivitiesErrors": ".cancelserveractivities", - "CancelServerActivitiesActivitiesErrorsTypedDict": ".cancelserveractivities", - "CancelServerActivitiesBadRequest": ".cancelserveractivities", - "CancelServerActivitiesBadRequestData": ".cancelserveractivities", - "CancelServerActivitiesErrors": ".cancelserveractivities", - "CancelServerActivitiesErrorsTypedDict": ".cancelserveractivities", - "CancelServerActivitiesUnauthorized": ".cancelserveractivities", - "CancelServerActivitiesUnauthorizedData": ".cancelserveractivities", - "CheckForUpdatesBadRequest": ".checkforupdates", - "CheckForUpdatesBadRequestData": ".checkforupdates", - "CheckForUpdatesErrors": ".checkforupdates", - "CheckForUpdatesErrorsTypedDict": ".checkforupdates", - "CheckForUpdatesUnauthorized": ".checkforupdates", - "CheckForUpdatesUnauthorizedData": ".checkforupdates", - "CheckForUpdatesUpdaterErrors": ".checkforupdates", - "CheckForUpdatesUpdaterErrorsTypedDict": ".checkforupdates", - "ClearPlaylistContentsBadRequest": ".clearplaylistcontents", - "ClearPlaylistContentsBadRequestData": ".clearplaylistcontents", - "ClearPlaylistContentsErrors": ".clearplaylistcontents", - "ClearPlaylistContentsErrorsTypedDict": ".clearplaylistcontents", - "ClearPlaylistContentsPlaylistsErrors": ".clearplaylistcontents", - "ClearPlaylistContentsPlaylistsErrorsTypedDict": ".clearplaylistcontents", - "ClearPlaylistContentsUnauthorized": ".clearplaylistcontents", - "ClearPlaylistContentsUnauthorizedData": ".clearplaylistcontents", - "CreatePlaylistBadRequest": ".createplaylist", - "CreatePlaylistBadRequestData": ".createplaylist", - "CreatePlaylistErrors": ".createplaylist", - "CreatePlaylistErrorsTypedDict": ".createplaylist", - "CreatePlaylistPlaylistsErrors": ".createplaylist", - "CreatePlaylistPlaylistsErrorsTypedDict": ".createplaylist", - "CreatePlaylistUnauthorized": ".createplaylist", - "CreatePlaylistUnauthorizedData": ".createplaylist", - "DeleteLibraryBadRequest": ".deletelibrary", - "DeleteLibraryBadRequestData": ".deletelibrary", - "DeleteLibraryErrors": ".deletelibrary", - "DeleteLibraryErrorsTypedDict": ".deletelibrary", - "DeleteLibraryLibraryErrors": ".deletelibrary", - "DeleteLibraryLibraryErrorsTypedDict": ".deletelibrary", - "DeleteLibraryUnauthorized": ".deletelibrary", - "DeleteLibraryUnauthorizedData": ".deletelibrary", - "DeletePlaylistBadRequest": ".deleteplaylist", - "DeletePlaylistBadRequestData": ".deleteplaylist", - "DeletePlaylistErrors": ".deleteplaylist", - "DeletePlaylistErrorsTypedDict": ".deleteplaylist", - "DeletePlaylistPlaylistsErrors": ".deleteplaylist", - "DeletePlaylistPlaylistsErrorsTypedDict": ".deleteplaylist", - "DeletePlaylistUnauthorized": ".deleteplaylist", - "DeletePlaylistUnauthorizedData": ".deleteplaylist", - "EnablePaperTrailBadRequest": ".enablepapertrail", - "EnablePaperTrailBadRequestData": ".enablepapertrail", - "EnablePaperTrailErrors": ".enablepapertrail", - "EnablePaperTrailErrorsTypedDict": ".enablepapertrail", - "EnablePaperTrailLogErrors": ".enablepapertrail", - "EnablePaperTrailLogErrorsTypedDict": ".enablepapertrail", - "EnablePaperTrailUnauthorized": ".enablepapertrail", - "EnablePaperTrailUnauthorizedData": ".enablepapertrail", - "GetActorsLibraryBadRequest": ".get_actors_library", - "GetActorsLibraryBadRequestData": ".get_actors_library", - "GetActorsLibraryErrors": ".get_actors_library", - "GetActorsLibraryErrorsTypedDict": ".get_actors_library", - "GetActorsLibraryLibraryErrors": ".get_actors_library", - "GetActorsLibraryLibraryErrorsTypedDict": ".get_actors_library", - "GetActorsLibraryUnauthorized": ".get_actors_library", - "GetActorsLibraryUnauthorizedData": ".get_actors_library", - "GetAllLibrariesBadRequest": ".get_all_libraries", - "GetAllLibrariesBadRequestData": ".get_all_libraries", - "GetAllLibrariesErrors": ".get_all_libraries", - "GetAllLibrariesErrorsTypedDict": ".get_all_libraries", - "GetAllLibrariesLibraryErrors": ".get_all_libraries", - "GetAllLibrariesLibraryErrorsTypedDict": ".get_all_libraries", - "GetAllLibrariesUnauthorized": ".get_all_libraries", - "GetAllLibrariesUnauthorizedData": ".get_all_libraries", - "GetBannerImageBadRequest": ".get_banner_image", - "GetBannerImageBadRequestData": ".get_banner_image", - "GetBannerImageErrors": ".get_banner_image", - "GetBannerImageErrorsTypedDict": ".get_banner_image", - "GetBannerImageMediaErrors": ".get_banner_image", - "GetBannerImageMediaErrorsTypedDict": ".get_banner_image", - "GetBannerImageUnauthorized": ".get_banner_image", - "GetBannerImageUnauthorizedData": ".get_banner_image", - "GetCountriesLibraryBadRequest": ".get_countries_library", - "GetCountriesLibraryBadRequestData": ".get_countries_library", - "GetCountriesLibraryErrors": ".get_countries_library", - "GetCountriesLibraryErrorsTypedDict": ".get_countries_library", - "GetCountriesLibraryLibraryErrors": ".get_countries_library", - "GetCountriesLibraryLibraryErrorsTypedDict": ".get_countries_library", - "GetCountriesLibraryUnauthorized": ".get_countries_library", - "GetCountriesLibraryUnauthorizedData": ".get_countries_library", - "GetGenresLibraryBadRequest": ".get_genres_library", - "GetGenresLibraryBadRequestData": ".get_genres_library", - "GetGenresLibraryErrors": ".get_genres_library", - "GetGenresLibraryErrorsTypedDict": ".get_genres_library", - "GetGenresLibraryLibraryErrors": ".get_genres_library", - "GetGenresLibraryLibraryErrorsTypedDict": ".get_genres_library", - "GetGenresLibraryUnauthorized": ".get_genres_library", - "GetGenresLibraryUnauthorizedData": ".get_genres_library", - "GetLibraryDetailsBadRequest": ".get_library_details", - "GetLibraryDetailsBadRequestData": ".get_library_details", - "GetLibraryDetailsErrors": ".get_library_details", - "GetLibraryDetailsErrorsTypedDict": ".get_library_details", - "GetLibraryDetailsLibraryErrors": ".get_library_details", - "GetLibraryDetailsLibraryErrorsTypedDict": ".get_library_details", - "GetLibraryDetailsUnauthorized": ".get_library_details", - "GetLibraryDetailsUnauthorizedData": ".get_library_details", - "GetLibraryItemsBadRequest": ".get_library_items", - "GetLibraryItemsBadRequestData": ".get_library_items", - "GetLibraryItemsErrors": ".get_library_items", - "GetLibraryItemsErrorsTypedDict": ".get_library_items", - "GetLibraryItemsLibraryErrors": ".get_library_items", - "GetLibraryItemsLibraryErrorsTypedDict": ".get_library_items", - "GetLibraryItemsUnauthorized": ".get_library_items", - "GetLibraryItemsUnauthorizedData": ".get_library_items", - "GetLibrarySectionsAllBadRequest": ".get_library_sections_all", - "GetLibrarySectionsAllBadRequestData": ".get_library_sections_all", - "GetLibrarySectionsAllErrors": ".get_library_sections_all", - "GetLibrarySectionsAllErrorsTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllLibraryErrors": ".get_library_sections_all", - "GetLibrarySectionsAllLibraryErrorsTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllUnauthorized": ".get_library_sections_all", - "GetLibrarySectionsAllUnauthorizedData": ".get_library_sections_all", - "GetMediaMetaDataBadRequest": ".get_media_meta_data", - "GetMediaMetaDataBadRequestData": ".get_media_meta_data", - "GetMediaMetaDataErrors": ".get_media_meta_data", - "GetMediaMetaDataErrorsTypedDict": ".get_media_meta_data", - "GetMediaMetaDataLibraryErrors": ".get_media_meta_data", - "GetMediaMetaDataLibraryErrorsTypedDict": ".get_media_meta_data", - "GetMediaMetaDataUnauthorized": ".get_media_meta_data", - "GetMediaMetaDataUnauthorizedData": ".get_media_meta_data", - "GetMediaProvidersBadRequest": ".get_media_providers", - "GetMediaProvidersBadRequestData": ".get_media_providers", - "GetMediaProvidersErrors": ".get_media_providers", - "GetMediaProvidersErrorsTypedDict": ".get_media_providers", - "GetMediaProvidersServerErrors": ".get_media_providers", - "GetMediaProvidersServerErrorsTypedDict": ".get_media_providers", - "GetMediaProvidersUnauthorized": ".get_media_providers", - "GetMediaProvidersUnauthorizedData": ".get_media_providers", - "GetRecentlyAddedLibraryBadRequest": ".get_recently_added_library", - "GetRecentlyAddedLibraryBadRequestData": ".get_recently_added_library", - "GetRecentlyAddedLibraryErrors": ".get_recently_added_library", - "GetRecentlyAddedLibraryErrorsTypedDict": ".get_recently_added_library", - "GetRecentlyAddedLibraryLibraryErrors": ".get_recently_added_library", - "GetRecentlyAddedLibraryLibraryErrorsTypedDict": ".get_recently_added_library", - "GetRecentlyAddedLibraryUnauthorized": ".get_recently_added_library", - "GetRecentlyAddedLibraryUnauthorizedData": ".get_recently_added_library", - "GetRefreshLibraryMetadataBadRequest": ".get_refresh_library_metadata", - "GetRefreshLibraryMetadataBadRequestData": ".get_refresh_library_metadata", - "GetRefreshLibraryMetadataErrors": ".get_refresh_library_metadata", - "GetRefreshLibraryMetadataErrorsTypedDict": ".get_refresh_library_metadata", - "GetRefreshLibraryMetadataLibraryErrors": ".get_refresh_library_metadata", - "GetRefreshLibraryMetadataLibraryErrorsTypedDict": ".get_refresh_library_metadata", - "GetRefreshLibraryMetadataUnauthorized": ".get_refresh_library_metadata", - "GetRefreshLibraryMetadataUnauthorizedData": ".get_refresh_library_metadata", - "GetSearchAllLibrariesBadRequest": ".get_search_all_libraries", - "GetSearchAllLibrariesBadRequestData": ".get_search_all_libraries", - "GetSearchAllLibrariesErrors": ".get_search_all_libraries", - "GetSearchAllLibrariesErrorsTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesLibraryErrors": ".get_search_all_libraries", - "GetSearchAllLibrariesLibraryErrorsTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesUnauthorized": ".get_search_all_libraries", - "GetSearchAllLibrariesUnauthorizedData": ".get_search_all_libraries", - "GetSearchLibraryBadRequest": ".get_search_library", - "GetSearchLibraryBadRequestData": ".get_search_library", - "GetSearchLibraryErrors": ".get_search_library", - "GetSearchLibraryErrorsTypedDict": ".get_search_library", - "GetSearchLibraryLibraryErrors": ".get_search_library", - "GetSearchLibraryLibraryErrorsTypedDict": ".get_search_library", - "GetSearchLibraryUnauthorized": ".get_search_library", - "GetSearchLibraryUnauthorizedData": ".get_search_library", - "GetServerIdentityRequestTimeout": ".get_server_identity", - "GetServerIdentityRequestTimeoutData": ".get_server_identity", - "GetServerResourcesBadRequest": ".get_server_resources", - "GetServerResourcesBadRequestData": ".get_server_resources", - "GetServerResourcesErrors": ".get_server_resources", - "GetServerResourcesErrorsTypedDict": ".get_server_resources", - "GetServerResourcesPlexErrors": ".get_server_resources", - "GetServerResourcesPlexErrorsTypedDict": ".get_server_resources", - "GetServerResourcesUnauthorized": ".get_server_resources", - "GetServerResourcesUnauthorizedData": ".get_server_resources", - "GetThumbImageBadRequest": ".get_thumb_image", - "GetThumbImageBadRequestData": ".get_thumb_image", - "GetThumbImageErrors": ".get_thumb_image", - "GetThumbImageErrorsTypedDict": ".get_thumb_image", - "GetThumbImageMediaErrors": ".get_thumb_image", - "GetThumbImageMediaErrorsTypedDict": ".get_thumb_image", - "GetThumbImageUnauthorized": ".get_thumb_image", - "GetThumbImageUnauthorizedData": ".get_thumb_image", - "GetUsersBadRequest": ".get_users", - "GetUsersBadRequestData": ".get_users", - "GetUsersErrors": ".get_users", - "GetUsersErrorsTypedDict": ".get_users", - "GetUsersUnauthorized": ".get_users", - "GetUsersUnauthorizedData": ".get_users", - "GetUsersUsersErrors": ".get_users", - "GetUsersUsersErrorsTypedDict": ".get_users", - "GetWatchListBadRequest": ".get_watch_list", - "GetWatchListBadRequestData": ".get_watch_list", - "GetWatchListErrors": ".get_watch_list", - "GetWatchListErrorsTypedDict": ".get_watch_list", - "GetWatchListUnauthorized": ".get_watch_list", - "GetWatchListUnauthorizedData": ".get_watch_list", - "GetWatchListWatchlistErrors": ".get_watch_list", - "GetWatchListWatchlistErrorsTypedDict": ".get_watch_list", - "GetAvailableClientsBadRequest": ".getavailableclients", - "GetAvailableClientsBadRequestData": ".getavailableclients", - "GetAvailableClientsErrors": ".getavailableclients", - "GetAvailableClientsErrorsTypedDict": ".getavailableclients", - "GetAvailableClientsServerErrors": ".getavailableclients", - "GetAvailableClientsServerErrorsTypedDict": ".getavailableclients", - "GetAvailableClientsUnauthorized": ".getavailableclients", - "GetAvailableClientsUnauthorizedData": ".getavailableclients", - "GetBandwidthStatisticsBadRequest": ".getbandwidthstatistics", - "GetBandwidthStatisticsBadRequestData": ".getbandwidthstatistics", - "GetBandwidthStatisticsErrors": ".getbandwidthstatistics", - "GetBandwidthStatisticsErrorsTypedDict": ".getbandwidthstatistics", - "GetBandwidthStatisticsStatisticsErrors": ".getbandwidthstatistics", - "GetBandwidthStatisticsStatisticsErrorsTypedDict": ".getbandwidthstatistics", - "GetBandwidthStatisticsUnauthorized": ".getbandwidthstatistics", - "GetBandwidthStatisticsUnauthorizedData": ".getbandwidthstatistics", - "GetButlerTasksBadRequest": ".getbutlertasks", - "GetButlerTasksBadRequestData": ".getbutlertasks", - "GetButlerTasksButlerErrors": ".getbutlertasks", - "GetButlerTasksButlerErrorsTypedDict": ".getbutlertasks", - "GetButlerTasksErrors": ".getbutlertasks", - "GetButlerTasksErrorsTypedDict": ".getbutlertasks", - "GetButlerTasksUnauthorized": ".getbutlertasks", - "GetButlerTasksUnauthorizedData": ".getbutlertasks", - "GetCompanionsDataBadRequest": ".getcompanionsdata", - "GetCompanionsDataBadRequestData": ".getcompanionsdata", - "GetCompanionsDataErrors": ".getcompanionsdata", - "GetCompanionsDataErrorsTypedDict": ".getcompanionsdata", - "GetCompanionsDataPlexErrors": ".getcompanionsdata", - "GetCompanionsDataPlexErrorsTypedDict": ".getcompanionsdata", - "GetCompanionsDataUnauthorized": ".getcompanionsdata", - "GetCompanionsDataUnauthorizedData": ".getcompanionsdata", - "GetDevicesBadRequest": ".getdevices", - "GetDevicesBadRequestData": ".getdevices", - "GetDevicesErrors": ".getdevices", - "GetDevicesErrorsTypedDict": ".getdevices", - "GetDevicesServerErrors": ".getdevices", - "GetDevicesServerErrorsTypedDict": ".getdevices", - "GetDevicesUnauthorized": ".getdevices", - "GetDevicesUnauthorizedData": ".getdevices", - "GetFileHashBadRequest": ".getfilehash", - "GetFileHashBadRequestData": ".getfilehash", - "GetFileHashErrors": ".getfilehash", - "GetFileHashErrorsTypedDict": ".getfilehash", - "GetFileHashLibraryErrors": ".getfilehash", - "GetFileHashLibraryErrorsTypedDict": ".getfilehash", - "GetFileHashUnauthorized": ".getfilehash", - "GetFileHashUnauthorizedData": ".getfilehash", - "GetGeoDataBadRequest": ".getgeodata", - "GetGeoDataBadRequestData": ".getgeodata", - "GetGeoDataErrors": ".getgeodata", - "GetGeoDataErrorsTypedDict": ".getgeodata", - "GetGeoDataPlexErrors": ".getgeodata", - "GetGeoDataPlexErrorsTypedDict": ".getgeodata", - "GetGeoDataUnauthorized": ".getgeodata", - "GetGeoDataUnauthorizedData": ".getgeodata", - "GetGlobalHubsBadRequest": ".getglobalhubs", - "GetGlobalHubsBadRequestData": ".getglobalhubs", - "GetGlobalHubsErrors": ".getglobalhubs", - "GetGlobalHubsErrorsTypedDict": ".getglobalhubs", - "GetGlobalHubsHubsErrors": ".getglobalhubs", - "GetGlobalHubsHubsErrorsTypedDict": ".getglobalhubs", - "GetGlobalHubsUnauthorized": ".getglobalhubs", - "GetGlobalHubsUnauthorizedData": ".getglobalhubs", - "GetHomeDataBadRequest": ".gethomedata", - "GetHomeDataBadRequestData": ".gethomedata", - "GetHomeDataErrors": ".gethomedata", - "GetHomeDataErrorsTypedDict": ".gethomedata", - "GetHomeDataPlexErrors": ".gethomedata", - "GetHomeDataPlexErrorsTypedDict": ".gethomedata", - "GetHomeDataUnauthorized": ".gethomedata", - "GetHomeDataUnauthorizedData": ".gethomedata", - "GetLibraryHubsBadRequest": ".getlibraryhubs", - "GetLibraryHubsBadRequestData": ".getlibraryhubs", - "GetLibraryHubsErrors": ".getlibraryhubs", - "GetLibraryHubsErrorsTypedDict": ".getlibraryhubs", - "GetLibraryHubsHubsErrors": ".getlibraryhubs", - "GetLibraryHubsHubsErrorsTypedDict": ".getlibraryhubs", - "GetLibraryHubsUnauthorized": ".getlibraryhubs", - "GetLibraryHubsUnauthorizedData": ".getlibraryhubs", - "GetMetadataChildrenBadRequest": ".getmetadatachildren", - "GetMetadataChildrenBadRequestData": ".getmetadatachildren", - "GetMetadataChildrenErrors": ".getmetadatachildren", - "GetMetadataChildrenErrorsTypedDict": ".getmetadatachildren", - "GetMetadataChildrenLibraryErrors": ".getmetadatachildren", - "GetMetadataChildrenLibraryErrorsTypedDict": ".getmetadatachildren", - "GetMetadataChildrenUnauthorized": ".getmetadatachildren", - "GetMetadataChildrenUnauthorizedData": ".getmetadatachildren", - "GetMyPlexAccountBadRequest": ".getmyplexaccount", - "GetMyPlexAccountBadRequestData": ".getmyplexaccount", - "GetMyPlexAccountErrors": ".getmyplexaccount", - "GetMyPlexAccountErrorsTypedDict": ".getmyplexaccount", - "GetMyPlexAccountServerErrors": ".getmyplexaccount", - "GetMyPlexAccountServerErrorsTypedDict": ".getmyplexaccount", - "GetMyPlexAccountUnauthorized": ".getmyplexaccount", - "GetMyPlexAccountUnauthorizedData": ".getmyplexaccount", - "GetPinBadRequest": ".getpin", - "GetPinBadRequestData": ".getpin", - "GetPinErrors": ".getpin", - "GetPinErrorsTypedDict": ".getpin", - "GetPlaylistBadRequest": ".getplaylist", - "GetPlaylistBadRequestData": ".getplaylist", - "GetPlaylistErrors": ".getplaylist", - "GetPlaylistErrorsTypedDict": ".getplaylist", - "GetPlaylistPlaylistsErrors": ".getplaylist", - "GetPlaylistPlaylistsErrorsTypedDict": ".getplaylist", - "GetPlaylistUnauthorized": ".getplaylist", - "GetPlaylistUnauthorizedData": ".getplaylist", - "GetPlaylistContentsBadRequest": ".getplaylistcontents", - "GetPlaylistContentsBadRequestData": ".getplaylistcontents", - "GetPlaylistContentsErrors": ".getplaylistcontents", - "GetPlaylistContentsErrorsTypedDict": ".getplaylistcontents", - "GetPlaylistContentsPlaylistsErrors": ".getplaylistcontents", - "GetPlaylistContentsPlaylistsErrorsTypedDict": ".getplaylistcontents", - "GetPlaylistContentsUnauthorized": ".getplaylistcontents", - "GetPlaylistContentsUnauthorizedData": ".getplaylistcontents", - "GetPlaylistsBadRequest": ".getplaylists", - "GetPlaylistsBadRequestData": ".getplaylists", - "GetPlaylistsErrors": ".getplaylists", - "GetPlaylistsErrorsTypedDict": ".getplaylists", - "GetPlaylistsPlaylistsErrors": ".getplaylists", - "GetPlaylistsPlaylistsErrorsTypedDict": ".getplaylists", - "GetPlaylistsUnauthorized": ".getplaylists", - "GetPlaylistsUnauthorizedData": ".getplaylists", - "GetResizedPhotoBadRequest": ".getresizedphoto", - "GetResizedPhotoBadRequestData": ".getresizedphoto", - "GetResizedPhotoErrors": ".getresizedphoto", - "GetResizedPhotoErrorsTypedDict": ".getresizedphoto", - "GetResizedPhotoServerErrors": ".getresizedphoto", - "GetResizedPhotoServerErrorsTypedDict": ".getresizedphoto", - "GetResizedPhotoUnauthorized": ".getresizedphoto", - "GetResizedPhotoUnauthorizedData": ".getresizedphoto", - "GetResourcesStatisticsBadRequest": ".getresourcesstatistics", - "GetResourcesStatisticsBadRequestData": ".getresourcesstatistics", - "GetResourcesStatisticsErrors": ".getresourcesstatistics", - "GetResourcesStatisticsErrorsTypedDict": ".getresourcesstatistics", - "GetResourcesStatisticsStatisticsErrors": ".getresourcesstatistics", - "GetResourcesStatisticsStatisticsErrorsTypedDict": ".getresourcesstatistics", - "GetResourcesStatisticsUnauthorized": ".getresourcesstatistics", - "GetResourcesStatisticsUnauthorizedData": ".getresourcesstatistics", - "GetSearchResultsBadRequest": ".getsearchresults", - "GetSearchResultsBadRequestData": ".getsearchresults", - "GetSearchResultsErrors": ".getsearchresults", - "GetSearchResultsErrorsTypedDict": ".getsearchresults", - "GetSearchResultsSearchErrors": ".getsearchresults", - "GetSearchResultsSearchErrorsTypedDict": ".getsearchresults", - "GetSearchResultsUnauthorized": ".getsearchresults", - "GetSearchResultsUnauthorizedData": ".getsearchresults", - "GetServerActivitiesActivitiesErrors": ".getserveractivities", - "GetServerActivitiesActivitiesErrorsTypedDict": ".getserveractivities", - "GetServerActivitiesBadRequest": ".getserveractivities", - "GetServerActivitiesBadRequestData": ".getserveractivities", - "GetServerActivitiesErrors": ".getserveractivities", - "GetServerActivitiesErrorsTypedDict": ".getserveractivities", - "GetServerActivitiesUnauthorized": ".getserveractivities", - "GetServerActivitiesUnauthorizedData": ".getserveractivities", - "Errors": ".getservercapabilities", - "ErrorsTypedDict": ".getservercapabilities", - "GetServerCapabilitiesBadRequest": ".getservercapabilities", - "GetServerCapabilitiesBadRequestData": ".getservercapabilities", - "GetServerCapabilitiesErrors": ".getservercapabilities", - "GetServerCapabilitiesErrorsTypedDict": ".getservercapabilities", - "GetServerCapabilitiesUnauthorized": ".getservercapabilities", - "GetServerCapabilitiesUnauthorizedData": ".getservercapabilities", - "GetServerListBadRequest": ".getserverlist", - "GetServerListBadRequestData": ".getserverlist", - "GetServerListErrors": ".getserverlist", - "GetServerListErrorsTypedDict": ".getserverlist", - "GetServerListServerErrors": ".getserverlist", - "GetServerListServerErrorsTypedDict": ".getserverlist", - "GetServerListUnauthorized": ".getserverlist", - "GetServerListUnauthorizedData": ".getserverlist", - "GetServerPreferencesBadRequest": ".getserverpreferences", - "GetServerPreferencesBadRequestData": ".getserverpreferences", - "GetServerPreferencesErrors": ".getserverpreferences", - "GetServerPreferencesErrorsTypedDict": ".getserverpreferences", - "GetServerPreferencesServerErrors": ".getserverpreferences", - "GetServerPreferencesServerErrorsTypedDict": ".getserverpreferences", - "GetServerPreferencesUnauthorized": ".getserverpreferences", - "GetServerPreferencesUnauthorizedData": ".getserverpreferences", - "GetSessionHistoryBadRequest": ".getsessionhistory", - "GetSessionHistoryBadRequestData": ".getsessionhistory", - "GetSessionHistoryErrors": ".getsessionhistory", - "GetSessionHistoryErrorsTypedDict": ".getsessionhistory", - "GetSessionHistorySessionsErrors": ".getsessionhistory", - "GetSessionHistorySessionsErrorsTypedDict": ".getsessionhistory", - "GetSessionHistoryUnauthorized": ".getsessionhistory", - "GetSessionHistoryUnauthorizedData": ".getsessionhistory", - "GetSessionsBadRequest": ".getsessions", - "GetSessionsBadRequestData": ".getsessions", - "GetSessionsErrors": ".getsessions", - "GetSessionsErrorsTypedDict": ".getsessions", - "GetSessionsSessionsErrors": ".getsessions", - "GetSessionsSessionsErrorsTypedDict": ".getsessions", - "GetSessionsUnauthorized": ".getsessions", - "GetSessionsUnauthorizedData": ".getsessions", - "GetSourceConnectionInformationAuthenticationErrors": ".getsourceconnectioninformation", - "GetSourceConnectionInformationAuthenticationErrorsTypedDict": ".getsourceconnectioninformation", - "GetSourceConnectionInformationBadRequest": ".getsourceconnectioninformation", - "GetSourceConnectionInformationBadRequestData": ".getsourceconnectioninformation", - "GetSourceConnectionInformationErrors": ".getsourceconnectioninformation", - "GetSourceConnectionInformationErrorsTypedDict": ".getsourceconnectioninformation", - "GetSourceConnectionInformationUnauthorized": ".getsourceconnectioninformation", - "GetSourceConnectionInformationUnauthorizedData": ".getsourceconnectioninformation", - "GetStatisticsBadRequest": ".getstatistics", - "GetStatisticsBadRequestData": ".getstatistics", - "GetStatisticsErrors": ".getstatistics", - "GetStatisticsErrorsTypedDict": ".getstatistics", - "GetStatisticsStatisticsErrors": ".getstatistics", - "GetStatisticsStatisticsErrorsTypedDict": ".getstatistics", - "GetStatisticsUnauthorized": ".getstatistics", - "GetStatisticsUnauthorizedData": ".getstatistics", - "GetTimelineBadRequest": ".gettimeline", - "GetTimelineBadRequestData": ".gettimeline", - "GetTimelineErrors": ".gettimeline", - "GetTimelineErrorsTypedDict": ".gettimeline", - "GetTimelineUnauthorized": ".gettimeline", - "GetTimelineUnauthorizedData": ".gettimeline", - "GetTimelineVideoErrors": ".gettimeline", - "GetTimelineVideoErrorsTypedDict": ".gettimeline", - "GetTokenByPinIDBadRequest": ".gettokenbypinid", - "GetTokenByPinIDBadRequestData": ".gettokenbypinid", - "GetTokenByPinIDErrors": ".gettokenbypinid", - "GetTokenByPinIDErrorsTypedDict": ".gettokenbypinid", - "GetTokenByPinIDPlexErrors": ".gettokenbypinid", - "GetTokenByPinIDPlexErrorsTypedDict": ".gettokenbypinid", - "GetTokenByPinIDResponseBody": ".gettokenbypinid", - "GetTokenByPinIDResponseBodyData": ".gettokenbypinid", - "GetTokenDetailsAuthenticationErrors": ".gettokendetails", - "GetTokenDetailsAuthenticationErrorsTypedDict": ".gettokendetails", - "GetTokenDetailsBadRequest": ".gettokendetails", - "GetTokenDetailsBadRequestData": ".gettokendetails", - "GetTokenDetailsErrors": ".gettokendetails", - "GetTokenDetailsErrorsTypedDict": ".gettokendetails", - "GetTokenDetailsUnauthorized": ".gettokendetails", - "GetTokenDetailsUnauthorizedData": ".gettokendetails", - "GetTopWatchedContentBadRequest": ".gettopwatchedcontent", - "GetTopWatchedContentBadRequestData": ".gettopwatchedcontent", - "GetTopWatchedContentErrors": ".gettopwatchedcontent", - "GetTopWatchedContentErrorsTypedDict": ".gettopwatchedcontent", - "GetTopWatchedContentLibraryErrors": ".gettopwatchedcontent", - "GetTopWatchedContentLibraryErrorsTypedDict": ".gettopwatchedcontent", - "GetTopWatchedContentUnauthorized": ".gettopwatchedcontent", - "GetTopWatchedContentUnauthorizedData": ".gettopwatchedcontent", - "GetTranscodeSessionsBadRequest": ".gettranscodesessions", - "GetTranscodeSessionsBadRequestData": ".gettranscodesessions", - "GetTranscodeSessionsErrors": ".gettranscodesessions", - "GetTranscodeSessionsErrorsTypedDict": ".gettranscodesessions", - "GetTranscodeSessionsSessionsErrors": ".gettranscodesessions", - "GetTranscodeSessionsSessionsErrorsTypedDict": ".gettranscodesessions", - "GetTranscodeSessionsUnauthorized": ".gettranscodesessions", - "GetTranscodeSessionsUnauthorizedData": ".gettranscodesessions", - "GetTransientTokenAuthenticationErrors": ".gettransienttoken", - "GetTransientTokenAuthenticationErrorsTypedDict": ".gettransienttoken", - "GetTransientTokenBadRequest": ".gettransienttoken", - "GetTransientTokenBadRequestData": ".gettransienttoken", - "GetTransientTokenErrors": ".gettransienttoken", - "GetTransientTokenErrorsTypedDict": ".gettransienttoken", - "GetTransientTokenUnauthorized": ".gettransienttoken", - "GetTransientTokenUnauthorizedData": ".gettransienttoken", - "GetUpdateStatusBadRequest": ".getupdatestatus", - "GetUpdateStatusBadRequestData": ".getupdatestatus", - "GetUpdateStatusErrors": ".getupdatestatus", - "GetUpdateStatusErrorsTypedDict": ".getupdatestatus", - "GetUpdateStatusUnauthorized": ".getupdatestatus", - "GetUpdateStatusUnauthorizedData": ".getupdatestatus", - "GetUpdateStatusUpdaterErrors": ".getupdatestatus", - "GetUpdateStatusUpdaterErrorsTypedDict": ".getupdatestatus", - "GetUserFriendsBadRequest": ".getuserfriends", - "GetUserFriendsBadRequestData": ".getuserfriends", - "GetUserFriendsErrors": ".getuserfriends", - "GetUserFriendsErrorsTypedDict": ".getuserfriends", - "GetUserFriendsPlexErrors": ".getuserfriends", - "GetUserFriendsPlexErrorsTypedDict": ".getuserfriends", - "GetUserFriendsUnauthorized": ".getuserfriends", - "GetUserFriendsUnauthorizedData": ".getuserfriends", - "LogLineBadRequest": ".logline", - "LogLineBadRequestData": ".logline", - "LogLineErrors": ".logline", - "LogLineErrorsTypedDict": ".logline", - "LogLineLogErrors": ".logline", - "LogLineLogErrorsTypedDict": ".logline", - "LogLineUnauthorized": ".logline", - "LogLineUnauthorizedData": ".logline", - "LogMultiLineBadRequest": ".logmultiline", - "LogMultiLineBadRequestData": ".logmultiline", - "LogMultiLineErrors": ".logmultiline", - "LogMultiLineErrorsTypedDict": ".logmultiline", - "LogMultiLineLogErrors": ".logmultiline", - "LogMultiLineLogErrorsTypedDict": ".logmultiline", - "LogMultiLineUnauthorized": ".logmultiline", - "LogMultiLineUnauthorizedData": ".logmultiline", - "MarkPlayedBadRequest": ".markplayed", - "MarkPlayedBadRequestData": ".markplayed", - "MarkPlayedErrors": ".markplayed", - "MarkPlayedErrorsTypedDict": ".markplayed", - "MarkPlayedMediaErrors": ".markplayed", - "MarkPlayedMediaErrorsTypedDict": ".markplayed", - "MarkPlayedUnauthorized": ".markplayed", - "MarkPlayedUnauthorizedData": ".markplayed", - "MarkUnplayedBadRequest": ".markunplayed", - "MarkUnplayedBadRequestData": ".markunplayed", - "MarkUnplayedErrors": ".markunplayed", - "MarkUnplayedErrorsTypedDict": ".markunplayed", - "MarkUnplayedMediaErrors": ".markunplayed", - "MarkUnplayedMediaErrorsTypedDict": ".markunplayed", - "MarkUnplayedUnauthorized": ".markunplayed", - "MarkUnplayedUnauthorizedData": ".markunplayed", "NoResponseError": ".no_response_error", - "PerformSearchBadRequest": ".performsearch", - "PerformSearchBadRequestData": ".performsearch", - "PerformSearchErrors": ".performsearch", - "PerformSearchErrorsTypedDict": ".performsearch", - "PerformSearchSearchErrors": ".performsearch", - "PerformSearchSearchErrorsTypedDict": ".performsearch", - "PerformSearchUnauthorized": ".performsearch", - "PerformSearchUnauthorizedData": ".performsearch", - "PerformVoiceSearchBadRequest": ".performvoicesearch", - "PerformVoiceSearchBadRequestData": ".performvoicesearch", - "PerformVoiceSearchErrors": ".performvoicesearch", - "PerformVoiceSearchErrorsTypedDict": ".performvoicesearch", - "PerformVoiceSearchSearchErrors": ".performvoicesearch", - "PerformVoiceSearchSearchErrorsTypedDict": ".performvoicesearch", - "PerformVoiceSearchUnauthorized": ".performvoicesearch", - "PerformVoiceSearchUnauthorizedData": ".performvoicesearch", - "PostUsersSignInDataAuthenticationErrors": ".post_users_sign_in_data", - "PostUsersSignInDataAuthenticationErrorsTypedDict": ".post_users_sign_in_data", - "PostUsersSignInDataBadRequest": ".post_users_sign_in_data", - "PostUsersSignInDataBadRequestData": ".post_users_sign_in_data", - "PostUsersSignInDataErrors": ".post_users_sign_in_data", - "PostUsersSignInDataErrorsTypedDict": ".post_users_sign_in_data", - "PostUsersSignInDataUnauthorized": ".post_users_sign_in_data", - "PostUsersSignInDataUnauthorizedData": ".post_users_sign_in_data", "ResponseValidationError": ".responsevalidationerror", "SDKError": ".sdkerror", - "StartAllTasksBadRequest": ".startalltasks", - "StartAllTasksBadRequestData": ".startalltasks", - "StartAllTasksButlerErrors": ".startalltasks", - "StartAllTasksButlerErrorsTypedDict": ".startalltasks", - "StartAllTasksErrors": ".startalltasks", - "StartAllTasksErrorsTypedDict": ".startalltasks", - "StartAllTasksUnauthorized": ".startalltasks", - "StartAllTasksUnauthorizedData": ".startalltasks", - "StartTaskBadRequest": ".starttask", - "StartTaskBadRequestData": ".starttask", - "StartTaskButlerErrors": ".starttask", - "StartTaskButlerErrorsTypedDict": ".starttask", - "StartTaskErrors": ".starttask", - "StartTaskErrorsTypedDict": ".starttask", - "StartTaskUnauthorized": ".starttask", - "StartTaskUnauthorizedData": ".starttask", - "StartUniversalTranscodeBadRequest": ".startuniversaltranscode", - "StartUniversalTranscodeBadRequestData": ".startuniversaltranscode", - "StartUniversalTranscodeErrors": ".startuniversaltranscode", - "StartUniversalTranscodeErrorsTypedDict": ".startuniversaltranscode", - "StartUniversalTranscodeUnauthorized": ".startuniversaltranscode", - "StartUniversalTranscodeUnauthorizedData": ".startuniversaltranscode", - "StartUniversalTranscodeVideoErrors": ".startuniversaltranscode", - "StartUniversalTranscodeVideoErrorsTypedDict": ".startuniversaltranscode", - "StopAllTasksBadRequest": ".stopalltasks", - "StopAllTasksBadRequestData": ".stopalltasks", - "StopAllTasksButlerErrors": ".stopalltasks", - "StopAllTasksButlerErrorsTypedDict": ".stopalltasks", - "StopAllTasksErrors": ".stopalltasks", - "StopAllTasksErrorsTypedDict": ".stopalltasks", - "StopAllTasksUnauthorized": ".stopalltasks", - "StopAllTasksUnauthorizedData": ".stopalltasks", - "StopTaskBadRequest": ".stoptask", - "StopTaskBadRequestData": ".stoptask", - "StopTaskButlerErrors": ".stoptask", - "StopTaskButlerErrorsTypedDict": ".stoptask", - "StopTaskErrors": ".stoptask", - "StopTaskErrorsTypedDict": ".stoptask", - "StopTaskUnauthorized": ".stoptask", - "StopTaskUnauthorizedData": ".stoptask", - "StopTranscodeSessionBadRequest": ".stoptranscodesession", - "StopTranscodeSessionBadRequestData": ".stoptranscodesession", - "StopTranscodeSessionErrors": ".stoptranscodesession", - "StopTranscodeSessionErrorsTypedDict": ".stoptranscodesession", - "StopTranscodeSessionSessionsErrors": ".stoptranscodesession", - "StopTranscodeSessionSessionsErrorsTypedDict": ".stoptranscodesession", - "StopTranscodeSessionUnauthorized": ".stoptranscodesession", - "StopTranscodeSessionUnauthorizedData": ".stoptranscodesession", - "UpdatePlaylistBadRequest": ".updateplaylist", - "UpdatePlaylistBadRequestData": ".updateplaylist", - "UpdatePlaylistErrors": ".updateplaylist", - "UpdatePlaylistErrorsTypedDict": ".updateplaylist", - "UpdatePlaylistPlaylistsErrors": ".updateplaylist", - "UpdatePlaylistPlaylistsErrorsTypedDict": ".updateplaylist", - "UpdatePlaylistUnauthorized": ".updateplaylist", - "UpdatePlaylistUnauthorizedData": ".updateplaylist", - "UpdatePlayProgressBadRequest": ".updateplayprogress", - "UpdatePlayProgressBadRequestData": ".updateplayprogress", - "UpdatePlayProgressErrors": ".updateplayprogress", - "UpdatePlayProgressErrorsTypedDict": ".updateplayprogress", - "UpdatePlayProgressMediaErrors": ".updateplayprogress", - "UpdatePlayProgressMediaErrorsTypedDict": ".updateplayprogress", - "UpdatePlayProgressUnauthorized": ".updateplayprogress", - "UpdatePlayProgressUnauthorizedData": ".updateplayprogress", - "UploadPlaylistBadRequest": ".uploadplaylist", - "UploadPlaylistBadRequestData": ".uploadplaylist", - "UploadPlaylistErrors": ".uploadplaylist", - "UploadPlaylistErrorsTypedDict": ".uploadplaylist", - "UploadPlaylistPlaylistsErrors": ".uploadplaylist", - "UploadPlaylistPlaylistsErrorsTypedDict": ".uploadplaylist", - "UploadPlaylistUnauthorized": ".uploadplaylist", - "UploadPlaylistUnauthorizedData": ".uploadplaylist", } diff --git a/src/plex_api_client/models/errors/addplaylistcontents.py b/src/plex_api_client/models/errors/addplaylistcontents.py deleted file mode 100644 index 66120ee..0000000 --- a/src/plex_api_client/models/errors/addplaylistcontents.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class AddPlaylistContentsPlaylistsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class AddPlaylistContentsPlaylistsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class AddPlaylistContentsUnauthorizedData(BaseModel): - errors: Optional[List[AddPlaylistContentsPlaylistsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class AddPlaylistContentsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: AddPlaylistContentsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: AddPlaylistContentsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class AddPlaylistContentsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class AddPlaylistContentsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class AddPlaylistContentsBadRequestData(BaseModel): - errors: Optional[List[AddPlaylistContentsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class AddPlaylistContentsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: AddPlaylistContentsBadRequestData = field(hash=False) - - def __init__( - self, - data: AddPlaylistContentsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/applyupdates.py b/src/plex_api_client/models/errors/applyupdates.py deleted file mode 100644 index a92a06e..0000000 --- a/src/plex_api_client/models/errors/applyupdates.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class ApplyUpdatesUpdaterErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class ApplyUpdatesUpdaterErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class ApplyUpdatesUnauthorizedData(BaseModel): - errors: Optional[List[ApplyUpdatesUpdaterErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class ApplyUpdatesUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: ApplyUpdatesUnauthorizedData = field(hash=False) - - def __init__( - self, - data: ApplyUpdatesUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class ApplyUpdatesErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class ApplyUpdatesErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class ApplyUpdatesBadRequestData(BaseModel): - errors: Optional[List[ApplyUpdatesErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class ApplyUpdatesBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: ApplyUpdatesBadRequestData = field(hash=False) - - def __init__( - self, - data: ApplyUpdatesBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/cancelserveractivities.py b/src/plex_api_client/models/errors/cancelserveractivities.py deleted file mode 100644 index b9d9547..0000000 --- a/src/plex_api_client/models/errors/cancelserveractivities.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class CancelServerActivitiesActivitiesErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class CancelServerActivitiesActivitiesErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class CancelServerActivitiesUnauthorizedData(BaseModel): - errors: Optional[List[CancelServerActivitiesActivitiesErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class CancelServerActivitiesUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: CancelServerActivitiesUnauthorizedData = field(hash=False) - - def __init__( - self, - data: CancelServerActivitiesUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class CancelServerActivitiesErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class CancelServerActivitiesErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class CancelServerActivitiesBadRequestData(BaseModel): - errors: Optional[List[CancelServerActivitiesErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class CancelServerActivitiesBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: CancelServerActivitiesBadRequestData = field(hash=False) - - def __init__( - self, - data: CancelServerActivitiesBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/checkforupdates.py b/src/plex_api_client/models/errors/checkforupdates.py deleted file mode 100644 index 2930600..0000000 --- a/src/plex_api_client/models/errors/checkforupdates.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class CheckForUpdatesUpdaterErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class CheckForUpdatesUpdaterErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class CheckForUpdatesUnauthorizedData(BaseModel): - errors: Optional[List[CheckForUpdatesUpdaterErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class CheckForUpdatesUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: CheckForUpdatesUnauthorizedData = field(hash=False) - - def __init__( - self, - data: CheckForUpdatesUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class CheckForUpdatesErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class CheckForUpdatesErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class CheckForUpdatesBadRequestData(BaseModel): - errors: Optional[List[CheckForUpdatesErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class CheckForUpdatesBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: CheckForUpdatesBadRequestData = field(hash=False) - - def __init__( - self, - data: CheckForUpdatesBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/clearplaylistcontents.py b/src/plex_api_client/models/errors/clearplaylistcontents.py deleted file mode 100644 index 152891e..0000000 --- a/src/plex_api_client/models/errors/clearplaylistcontents.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class ClearPlaylistContentsPlaylistsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class ClearPlaylistContentsPlaylistsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class ClearPlaylistContentsUnauthorizedData(BaseModel): - errors: Optional[List[ClearPlaylistContentsPlaylistsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class ClearPlaylistContentsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: ClearPlaylistContentsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: ClearPlaylistContentsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class ClearPlaylistContentsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class ClearPlaylistContentsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class ClearPlaylistContentsBadRequestData(BaseModel): - errors: Optional[List[ClearPlaylistContentsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class ClearPlaylistContentsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: ClearPlaylistContentsBadRequestData = field(hash=False) - - def __init__( - self, - data: ClearPlaylistContentsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/createplaylist.py b/src/plex_api_client/models/errors/createplaylist.py deleted file mode 100644 index 53f6996..0000000 --- a/src/plex_api_client/models/errors/createplaylist.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class CreatePlaylistPlaylistsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class CreatePlaylistPlaylistsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class CreatePlaylistUnauthorizedData(BaseModel): - errors: Optional[List[CreatePlaylistPlaylistsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class CreatePlaylistUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: CreatePlaylistUnauthorizedData = field(hash=False) - - def __init__( - self, - data: CreatePlaylistUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class CreatePlaylistErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class CreatePlaylistErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class CreatePlaylistBadRequestData(BaseModel): - errors: Optional[List[CreatePlaylistErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class CreatePlaylistBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: CreatePlaylistBadRequestData = field(hash=False) - - def __init__( - self, - data: CreatePlaylistBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/deletelibrary.py b/src/plex_api_client/models/errors/deletelibrary.py deleted file mode 100644 index 76e6b33..0000000 --- a/src/plex_api_client/models/errors/deletelibrary.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class DeleteLibraryLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class DeleteLibraryLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class DeleteLibraryUnauthorizedData(BaseModel): - errors: Optional[List[DeleteLibraryLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class DeleteLibraryUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: DeleteLibraryUnauthorizedData = field(hash=False) - - def __init__( - self, - data: DeleteLibraryUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class DeleteLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class DeleteLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class DeleteLibraryBadRequestData(BaseModel): - errors: Optional[List[DeleteLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class DeleteLibraryBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: DeleteLibraryBadRequestData = field(hash=False) - - def __init__( - self, - data: DeleteLibraryBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/deleteplaylist.py b/src/plex_api_client/models/errors/deleteplaylist.py deleted file mode 100644 index 0cbdea4..0000000 --- a/src/plex_api_client/models/errors/deleteplaylist.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class DeletePlaylistPlaylistsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class DeletePlaylistPlaylistsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class DeletePlaylistUnauthorizedData(BaseModel): - errors: Optional[List[DeletePlaylistPlaylistsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class DeletePlaylistUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: DeletePlaylistUnauthorizedData = field(hash=False) - - def __init__( - self, - data: DeletePlaylistUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class DeletePlaylistErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class DeletePlaylistErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class DeletePlaylistBadRequestData(BaseModel): - errors: Optional[List[DeletePlaylistErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class DeletePlaylistBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: DeletePlaylistBadRequestData = field(hash=False) - - def __init__( - self, - data: DeletePlaylistBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/enablepapertrail.py b/src/plex_api_client/models/errors/enablepapertrail.py deleted file mode 100644 index 1252ca9..0000000 --- a/src/plex_api_client/models/errors/enablepapertrail.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class EnablePaperTrailLogErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class EnablePaperTrailLogErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class EnablePaperTrailUnauthorizedData(BaseModel): - errors: Optional[List[EnablePaperTrailLogErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class EnablePaperTrailUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: EnablePaperTrailUnauthorizedData = field(hash=False) - - def __init__( - self, - data: EnablePaperTrailUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class EnablePaperTrailErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class EnablePaperTrailErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class EnablePaperTrailBadRequestData(BaseModel): - errors: Optional[List[EnablePaperTrailErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class EnablePaperTrailBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: EnablePaperTrailBadRequestData = field(hash=False) - - def __init__( - self, - data: EnablePaperTrailBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_actors_library.py b/src/plex_api_client/models/errors/get_actors_library.py deleted file mode 100644 index 5599591..0000000 --- a/src/plex_api_client/models/errors/get_actors_library.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetActorsLibraryLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetActorsLibraryLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetActorsLibraryUnauthorizedData(BaseModel): - errors: Optional[List[GetActorsLibraryLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetActorsLibraryUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetActorsLibraryUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetActorsLibraryUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetActorsLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetActorsLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetActorsLibraryBadRequestData(BaseModel): - errors: Optional[List[GetActorsLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetActorsLibraryBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetActorsLibraryBadRequestData = field(hash=False) - - def __init__( - self, - data: GetActorsLibraryBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_all_libraries.py b/src/plex_api_client/models/errors/get_all_libraries.py deleted file mode 100644 index 744bc1d..0000000 --- a/src/plex_api_client/models/errors/get_all_libraries.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetAllLibrariesLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetAllLibrariesLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetAllLibrariesUnauthorizedData(BaseModel): - errors: Optional[List[GetAllLibrariesLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetAllLibrariesUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetAllLibrariesUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetAllLibrariesUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetAllLibrariesErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetAllLibrariesErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetAllLibrariesBadRequestData(BaseModel): - errors: Optional[List[GetAllLibrariesErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetAllLibrariesBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetAllLibrariesBadRequestData = field(hash=False) - - def __init__( - self, - data: GetAllLibrariesBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_banner_image.py b/src/plex_api_client/models/errors/get_banner_image.py deleted file mode 100644 index 2eb7613..0000000 --- a/src/plex_api_client/models/errors/get_banner_image.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetBannerImageMediaErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetBannerImageMediaErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetBannerImageUnauthorizedData(BaseModel): - errors: Optional[List[GetBannerImageMediaErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetBannerImageUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetBannerImageUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetBannerImageUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetBannerImageErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetBannerImageErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetBannerImageBadRequestData(BaseModel): - errors: Optional[List[GetBannerImageErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetBannerImageBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetBannerImageBadRequestData = field(hash=False) - - def __init__( - self, - data: GetBannerImageBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_countries_library.py b/src/plex_api_client/models/errors/get_countries_library.py deleted file mode 100644 index 7e07efe..0000000 --- a/src/plex_api_client/models/errors/get_countries_library.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetCountriesLibraryLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetCountriesLibraryLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetCountriesLibraryUnauthorizedData(BaseModel): - errors: Optional[List[GetCountriesLibraryLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetCountriesLibraryUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetCountriesLibraryUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetCountriesLibraryUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetCountriesLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetCountriesLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetCountriesLibraryBadRequestData(BaseModel): - errors: Optional[List[GetCountriesLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetCountriesLibraryBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetCountriesLibraryBadRequestData = field(hash=False) - - def __init__( - self, - data: GetCountriesLibraryBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_genres_library.py b/src/plex_api_client/models/errors/get_genres_library.py deleted file mode 100644 index 52f6777..0000000 --- a/src/plex_api_client/models/errors/get_genres_library.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetGenresLibraryLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetGenresLibraryLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetGenresLibraryUnauthorizedData(BaseModel): - errors: Optional[List[GetGenresLibraryLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetGenresLibraryUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetGenresLibraryUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetGenresLibraryUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetGenresLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetGenresLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetGenresLibraryBadRequestData(BaseModel): - errors: Optional[List[GetGenresLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetGenresLibraryBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetGenresLibraryBadRequestData = field(hash=False) - - def __init__( - self, - data: GetGenresLibraryBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_library_details.py b/src/plex_api_client/models/errors/get_library_details.py deleted file mode 100644 index 6307cf1..0000000 --- a/src/plex_api_client/models/errors/get_library_details.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetLibraryDetailsLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetLibraryDetailsLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetLibraryDetailsUnauthorizedData(BaseModel): - errors: Optional[List[GetLibraryDetailsLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetLibraryDetailsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetLibraryDetailsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetLibraryDetailsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetLibraryDetailsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetLibraryDetailsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetLibraryDetailsBadRequestData(BaseModel): - errors: Optional[List[GetLibraryDetailsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetLibraryDetailsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetLibraryDetailsBadRequestData = field(hash=False) - - def __init__( - self, - data: GetLibraryDetailsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_library_items.py b/src/plex_api_client/models/errors/get_library_items.py deleted file mode 100644 index 01a20a6..0000000 --- a/src/plex_api_client/models/errors/get_library_items.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetLibraryItemsLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetLibraryItemsLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetLibraryItemsUnauthorizedData(BaseModel): - errors: Optional[List[GetLibraryItemsLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetLibraryItemsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetLibraryItemsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetLibraryItemsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetLibraryItemsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetLibraryItemsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetLibraryItemsBadRequestData(BaseModel): - errors: Optional[List[GetLibraryItemsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetLibraryItemsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetLibraryItemsBadRequestData = field(hash=False) - - def __init__( - self, - data: GetLibraryItemsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_library_sections_all.py b/src/plex_api_client/models/errors/get_library_sections_all.py deleted file mode 100644 index 7da9bee..0000000 --- a/src/plex_api_client/models/errors/get_library_sections_all.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetLibrarySectionsAllLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetLibrarySectionsAllLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetLibrarySectionsAllUnauthorizedData(BaseModel): - errors: Optional[List[GetLibrarySectionsAllLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetLibrarySectionsAllUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetLibrarySectionsAllUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetLibrarySectionsAllUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetLibrarySectionsAllErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetLibrarySectionsAllErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetLibrarySectionsAllBadRequestData(BaseModel): - errors: Optional[List[GetLibrarySectionsAllErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetLibrarySectionsAllBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetLibrarySectionsAllBadRequestData = field(hash=False) - - def __init__( - self, - data: GetLibrarySectionsAllBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_media_meta_data.py b/src/plex_api_client/models/errors/get_media_meta_data.py deleted file mode 100644 index 821e10f..0000000 --- a/src/plex_api_client/models/errors/get_media_meta_data.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetMediaMetaDataLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetMediaMetaDataLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetMediaMetaDataUnauthorizedData(BaseModel): - errors: Optional[List[GetMediaMetaDataLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetMediaMetaDataUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetMediaMetaDataUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetMediaMetaDataUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetMediaMetaDataErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetMediaMetaDataErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetMediaMetaDataBadRequestData(BaseModel): - errors: Optional[List[GetMediaMetaDataErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetMediaMetaDataBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetMediaMetaDataBadRequestData = field(hash=False) - - def __init__( - self, - data: GetMediaMetaDataBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_media_providers.py b/src/plex_api_client/models/errors/get_media_providers.py deleted file mode 100644 index 2d062da..0000000 --- a/src/plex_api_client/models/errors/get_media_providers.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetMediaProvidersServerErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetMediaProvidersServerErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetMediaProvidersUnauthorizedData(BaseModel): - errors: Optional[List[GetMediaProvidersServerErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetMediaProvidersUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetMediaProvidersUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetMediaProvidersUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetMediaProvidersErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetMediaProvidersErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetMediaProvidersBadRequestData(BaseModel): - errors: Optional[List[GetMediaProvidersErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetMediaProvidersBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetMediaProvidersBadRequestData = field(hash=False) - - def __init__( - self, - data: GetMediaProvidersBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_recently_added_library.py b/src/plex_api_client/models/errors/get_recently_added_library.py deleted file mode 100644 index fffbdce..0000000 --- a/src/plex_api_client/models/errors/get_recently_added_library.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetRecentlyAddedLibraryLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetRecentlyAddedLibraryLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetRecentlyAddedLibraryUnauthorizedData(BaseModel): - errors: Optional[List[GetRecentlyAddedLibraryLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetRecentlyAddedLibraryUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetRecentlyAddedLibraryUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetRecentlyAddedLibraryUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetRecentlyAddedLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetRecentlyAddedLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetRecentlyAddedLibraryBadRequestData(BaseModel): - errors: Optional[List[GetRecentlyAddedLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetRecentlyAddedLibraryBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetRecentlyAddedLibraryBadRequestData = field(hash=False) - - def __init__( - self, - data: GetRecentlyAddedLibraryBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_refresh_library_metadata.py b/src/plex_api_client/models/errors/get_refresh_library_metadata.py deleted file mode 100644 index edd2a2f..0000000 --- a/src/plex_api_client/models/errors/get_refresh_library_metadata.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetRefreshLibraryMetadataLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetRefreshLibraryMetadataLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetRefreshLibraryMetadataUnauthorizedData(BaseModel): - errors: Optional[List[GetRefreshLibraryMetadataLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetRefreshLibraryMetadataUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetRefreshLibraryMetadataUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetRefreshLibraryMetadataUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetRefreshLibraryMetadataErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetRefreshLibraryMetadataErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetRefreshLibraryMetadataBadRequestData(BaseModel): - errors: Optional[List[GetRefreshLibraryMetadataErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetRefreshLibraryMetadataBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetRefreshLibraryMetadataBadRequestData = field(hash=False) - - def __init__( - self, - data: GetRefreshLibraryMetadataBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_search_all_libraries.py b/src/plex_api_client/models/errors/get_search_all_libraries.py deleted file mode 100644 index 08774be..0000000 --- a/src/plex_api_client/models/errors/get_search_all_libraries.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetSearchAllLibrariesLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetSearchAllLibrariesLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetSearchAllLibrariesUnauthorizedData(BaseModel): - errors: Optional[List[GetSearchAllLibrariesLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetSearchAllLibrariesUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetSearchAllLibrariesUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetSearchAllLibrariesUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetSearchAllLibrariesErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetSearchAllLibrariesErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetSearchAllLibrariesBadRequestData(BaseModel): - errors: Optional[List[GetSearchAllLibrariesErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetSearchAllLibrariesBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetSearchAllLibrariesBadRequestData = field(hash=False) - - def __init__( - self, - data: GetSearchAllLibrariesBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_search_library.py b/src/plex_api_client/models/errors/get_search_library.py deleted file mode 100644 index bd66a58..0000000 --- a/src/plex_api_client/models/errors/get_search_library.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetSearchLibraryLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetSearchLibraryLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetSearchLibraryUnauthorizedData(BaseModel): - errors: Optional[List[GetSearchLibraryLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetSearchLibraryUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetSearchLibraryUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetSearchLibraryUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetSearchLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetSearchLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetSearchLibraryBadRequestData(BaseModel): - errors: Optional[List[GetSearchLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetSearchLibraryBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetSearchLibraryBadRequestData = field(hash=False) - - def __init__( - self, - data: GetSearchLibraryBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_server_identity.py b/src/plex_api_client/models/errors/get_server_identity.py deleted file mode 100644 index a93ecab..0000000 --- a/src/plex_api_client/models/errors/get_server_identity.py +++ /dev/null @@ -1,39 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import Optional -from typing_extensions import Annotated - - -class GetServerIdentityRequestTimeoutData(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetServerIdentityRequestTimeout(PlexAPIError): - r"""Request Timeout""" - - data: GetServerIdentityRequestTimeoutData = field(hash=False) - - def __init__( - self, - data: GetServerIdentityRequestTimeoutData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - fallback = body or raw_response.text - message = str(data.message) or fallback - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_server_resources.py b/src/plex_api_client/models/errors/get_server_resources.py deleted file mode 100644 index 87db7d3..0000000 --- a/src/plex_api_client/models/errors/get_server_resources.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetServerResourcesPlexErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetServerResourcesPlexErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetServerResourcesUnauthorizedData(BaseModel): - errors: Optional[List[GetServerResourcesPlexErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetServerResourcesUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetServerResourcesUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetServerResourcesUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetServerResourcesErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetServerResourcesErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetServerResourcesBadRequestData(BaseModel): - errors: Optional[List[GetServerResourcesErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetServerResourcesBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetServerResourcesBadRequestData = field(hash=False) - - def __init__( - self, - data: GetServerResourcesBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_thumb_image.py b/src/plex_api_client/models/errors/get_thumb_image.py deleted file mode 100644 index a4bcd10..0000000 --- a/src/plex_api_client/models/errors/get_thumb_image.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetThumbImageMediaErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetThumbImageMediaErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetThumbImageUnauthorizedData(BaseModel): - errors: Optional[List[GetThumbImageMediaErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetThumbImageUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetThumbImageUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetThumbImageUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetThumbImageErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetThumbImageErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetThumbImageBadRequestData(BaseModel): - errors: Optional[List[GetThumbImageErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetThumbImageBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetThumbImageBadRequestData = field(hash=False) - - def __init__( - self, - data: GetThumbImageBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_users.py b/src/plex_api_client/models/errors/get_users.py deleted file mode 100644 index 5d4d127..0000000 --- a/src/plex_api_client/models/errors/get_users.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetUsersUsersErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetUsersUsersErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetUsersUnauthorizedData(BaseModel): - errors: Optional[List[GetUsersUsersErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetUsersUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetUsersUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetUsersUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetUsersErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetUsersErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetUsersBadRequestData(BaseModel): - errors: Optional[List[GetUsersErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetUsersBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetUsersBadRequestData = field(hash=False) - - def __init__( - self, - data: GetUsersBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/get_watch_list.py b/src/plex_api_client/models/errors/get_watch_list.py deleted file mode 100644 index 48c8fa3..0000000 --- a/src/plex_api_client/models/errors/get_watch_list.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetWatchListWatchlistErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetWatchListWatchlistErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetWatchListUnauthorizedData(BaseModel): - errors: Optional[List[GetWatchListWatchlistErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetWatchListUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetWatchListUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetWatchListUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetWatchListErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetWatchListErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetWatchListBadRequestData(BaseModel): - errors: Optional[List[GetWatchListErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetWatchListBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetWatchListBadRequestData = field(hash=False) - - def __init__( - self, - data: GetWatchListBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getavailableclients.py b/src/plex_api_client/models/errors/getavailableclients.py deleted file mode 100644 index a6a67d5..0000000 --- a/src/plex_api_client/models/errors/getavailableclients.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetAvailableClientsServerErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetAvailableClientsServerErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetAvailableClientsUnauthorizedData(BaseModel): - errors: Optional[List[GetAvailableClientsServerErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetAvailableClientsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetAvailableClientsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetAvailableClientsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetAvailableClientsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetAvailableClientsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetAvailableClientsBadRequestData(BaseModel): - errors: Optional[List[GetAvailableClientsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetAvailableClientsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetAvailableClientsBadRequestData = field(hash=False) - - def __init__( - self, - data: GetAvailableClientsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getbandwidthstatistics.py b/src/plex_api_client/models/errors/getbandwidthstatistics.py deleted file mode 100644 index 37f3c7f..0000000 --- a/src/plex_api_client/models/errors/getbandwidthstatistics.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetBandwidthStatisticsStatisticsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetBandwidthStatisticsStatisticsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetBandwidthStatisticsUnauthorizedData(BaseModel): - errors: Optional[List[GetBandwidthStatisticsStatisticsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetBandwidthStatisticsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetBandwidthStatisticsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetBandwidthStatisticsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetBandwidthStatisticsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetBandwidthStatisticsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetBandwidthStatisticsBadRequestData(BaseModel): - errors: Optional[List[GetBandwidthStatisticsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetBandwidthStatisticsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetBandwidthStatisticsBadRequestData = field(hash=False) - - def __init__( - self, - data: GetBandwidthStatisticsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getbutlertasks.py b/src/plex_api_client/models/errors/getbutlertasks.py deleted file mode 100644 index 94d9e9f..0000000 --- a/src/plex_api_client/models/errors/getbutlertasks.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetButlerTasksButlerErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetButlerTasksButlerErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetButlerTasksUnauthorizedData(BaseModel): - errors: Optional[List[GetButlerTasksButlerErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetButlerTasksUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetButlerTasksUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetButlerTasksUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetButlerTasksErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetButlerTasksErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetButlerTasksBadRequestData(BaseModel): - errors: Optional[List[GetButlerTasksErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetButlerTasksBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetButlerTasksBadRequestData = field(hash=False) - - def __init__( - self, - data: GetButlerTasksBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getcompanionsdata.py b/src/plex_api_client/models/errors/getcompanionsdata.py deleted file mode 100644 index 62c2b2b..0000000 --- a/src/plex_api_client/models/errors/getcompanionsdata.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetCompanionsDataPlexErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetCompanionsDataPlexErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetCompanionsDataUnauthorizedData(BaseModel): - errors: Optional[List[GetCompanionsDataPlexErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetCompanionsDataUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetCompanionsDataUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetCompanionsDataUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetCompanionsDataErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetCompanionsDataErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetCompanionsDataBadRequestData(BaseModel): - errors: Optional[List[GetCompanionsDataErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetCompanionsDataBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetCompanionsDataBadRequestData = field(hash=False) - - def __init__( - self, - data: GetCompanionsDataBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getdevices.py b/src/plex_api_client/models/errors/getdevices.py deleted file mode 100644 index 907062e..0000000 --- a/src/plex_api_client/models/errors/getdevices.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetDevicesServerErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetDevicesServerErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetDevicesUnauthorizedData(BaseModel): - errors: Optional[List[GetDevicesServerErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetDevicesUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetDevicesUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetDevicesUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetDevicesErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetDevicesErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetDevicesBadRequestData(BaseModel): - errors: Optional[List[GetDevicesErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetDevicesBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetDevicesBadRequestData = field(hash=False) - - def __init__( - self, - data: GetDevicesBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getfilehash.py b/src/plex_api_client/models/errors/getfilehash.py deleted file mode 100644 index 40ecee6..0000000 --- a/src/plex_api_client/models/errors/getfilehash.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetFileHashLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetFileHashLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetFileHashUnauthorizedData(BaseModel): - errors: Optional[List[GetFileHashLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetFileHashUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetFileHashUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetFileHashUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetFileHashErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetFileHashErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetFileHashBadRequestData(BaseModel): - errors: Optional[List[GetFileHashErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetFileHashBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetFileHashBadRequestData = field(hash=False) - - def __init__( - self, - data: GetFileHashBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getgeodata.py b/src/plex_api_client/models/errors/getgeodata.py deleted file mode 100644 index 96fa83c..0000000 --- a/src/plex_api_client/models/errors/getgeodata.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetGeoDataPlexErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetGeoDataPlexErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetGeoDataUnauthorizedData(BaseModel): - errors: Optional[List[GetGeoDataPlexErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetGeoDataUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetGeoDataUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetGeoDataUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetGeoDataErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetGeoDataErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetGeoDataBadRequestData(BaseModel): - errors: Optional[List[GetGeoDataErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetGeoDataBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetGeoDataBadRequestData = field(hash=False) - - def __init__( - self, - data: GetGeoDataBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getglobalhubs.py b/src/plex_api_client/models/errors/getglobalhubs.py deleted file mode 100644 index e0fe688..0000000 --- a/src/plex_api_client/models/errors/getglobalhubs.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetGlobalHubsHubsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetGlobalHubsHubsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetGlobalHubsUnauthorizedData(BaseModel): - errors: Optional[List[GetGlobalHubsHubsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetGlobalHubsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetGlobalHubsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetGlobalHubsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetGlobalHubsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetGlobalHubsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetGlobalHubsBadRequestData(BaseModel): - errors: Optional[List[GetGlobalHubsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetGlobalHubsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetGlobalHubsBadRequestData = field(hash=False) - - def __init__( - self, - data: GetGlobalHubsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/gethomedata.py b/src/plex_api_client/models/errors/gethomedata.py deleted file mode 100644 index 8ad40bf..0000000 --- a/src/plex_api_client/models/errors/gethomedata.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetHomeDataPlexErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetHomeDataPlexErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetHomeDataUnauthorizedData(BaseModel): - errors: Optional[List[GetHomeDataPlexErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetHomeDataUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetHomeDataUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetHomeDataUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetHomeDataErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetHomeDataErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetHomeDataBadRequestData(BaseModel): - errors: Optional[List[GetHomeDataErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetHomeDataBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetHomeDataBadRequestData = field(hash=False) - - def __init__( - self, - data: GetHomeDataBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getlibraryhubs.py b/src/plex_api_client/models/errors/getlibraryhubs.py deleted file mode 100644 index af9d407..0000000 --- a/src/plex_api_client/models/errors/getlibraryhubs.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetLibraryHubsHubsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetLibraryHubsHubsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetLibraryHubsUnauthorizedData(BaseModel): - errors: Optional[List[GetLibraryHubsHubsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetLibraryHubsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetLibraryHubsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetLibraryHubsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetLibraryHubsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetLibraryHubsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetLibraryHubsBadRequestData(BaseModel): - errors: Optional[List[GetLibraryHubsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetLibraryHubsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetLibraryHubsBadRequestData = field(hash=False) - - def __init__( - self, - data: GetLibraryHubsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getmetadatachildren.py b/src/plex_api_client/models/errors/getmetadatachildren.py deleted file mode 100644 index 5bccfa5..0000000 --- a/src/plex_api_client/models/errors/getmetadatachildren.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetMetadataChildrenLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetMetadataChildrenLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetMetadataChildrenUnauthorizedData(BaseModel): - errors: Optional[List[GetMetadataChildrenLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetMetadataChildrenUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetMetadataChildrenUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetMetadataChildrenUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetMetadataChildrenErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetMetadataChildrenErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetMetadataChildrenBadRequestData(BaseModel): - errors: Optional[List[GetMetadataChildrenErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetMetadataChildrenBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetMetadataChildrenBadRequestData = field(hash=False) - - def __init__( - self, - data: GetMetadataChildrenBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getmyplexaccount.py b/src/plex_api_client/models/errors/getmyplexaccount.py deleted file mode 100644 index 758528b..0000000 --- a/src/plex_api_client/models/errors/getmyplexaccount.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetMyPlexAccountServerErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetMyPlexAccountServerErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetMyPlexAccountUnauthorizedData(BaseModel): - errors: Optional[List[GetMyPlexAccountServerErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetMyPlexAccountUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetMyPlexAccountUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetMyPlexAccountUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetMyPlexAccountErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetMyPlexAccountErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetMyPlexAccountBadRequestData(BaseModel): - errors: Optional[List[GetMyPlexAccountErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetMyPlexAccountBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetMyPlexAccountBadRequestData = field(hash=False) - - def __init__( - self, - data: GetMyPlexAccountBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getpin.py b/src/plex_api_client/models/errors/getpin.py deleted file mode 100644 index 9af7070..0000000 --- a/src/plex_api_client/models/errors/getpin.py +++ /dev/null @@ -1,50 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetPinErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetPinErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetPinBadRequestData(BaseModel): - errors: Optional[List[GetPinErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetPinBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetPinBadRequestData = field(hash=False) - - def __init__( - self, - data: GetPinBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getplaylist.py b/src/plex_api_client/models/errors/getplaylist.py deleted file mode 100644 index 2111c53..0000000 --- a/src/plex_api_client/models/errors/getplaylist.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetPlaylistPlaylistsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetPlaylistPlaylistsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetPlaylistUnauthorizedData(BaseModel): - errors: Optional[List[GetPlaylistPlaylistsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetPlaylistUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetPlaylistUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetPlaylistUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetPlaylistErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetPlaylistErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetPlaylistBadRequestData(BaseModel): - errors: Optional[List[GetPlaylistErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetPlaylistBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetPlaylistBadRequestData = field(hash=False) - - def __init__( - self, - data: GetPlaylistBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getplaylistcontents.py b/src/plex_api_client/models/errors/getplaylistcontents.py deleted file mode 100644 index 2afb33e..0000000 --- a/src/plex_api_client/models/errors/getplaylistcontents.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetPlaylistContentsPlaylistsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetPlaylistContentsPlaylistsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetPlaylistContentsUnauthorizedData(BaseModel): - errors: Optional[List[GetPlaylistContentsPlaylistsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetPlaylistContentsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetPlaylistContentsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetPlaylistContentsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetPlaylistContentsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetPlaylistContentsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetPlaylistContentsBadRequestData(BaseModel): - errors: Optional[List[GetPlaylistContentsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetPlaylistContentsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetPlaylistContentsBadRequestData = field(hash=False) - - def __init__( - self, - data: GetPlaylistContentsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getplaylists.py b/src/plex_api_client/models/errors/getplaylists.py deleted file mode 100644 index 3c3ca92..0000000 --- a/src/plex_api_client/models/errors/getplaylists.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetPlaylistsPlaylistsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetPlaylistsPlaylistsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetPlaylistsUnauthorizedData(BaseModel): - errors: Optional[List[GetPlaylistsPlaylistsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetPlaylistsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetPlaylistsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetPlaylistsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetPlaylistsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetPlaylistsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetPlaylistsBadRequestData(BaseModel): - errors: Optional[List[GetPlaylistsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetPlaylistsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetPlaylistsBadRequestData = field(hash=False) - - def __init__( - self, - data: GetPlaylistsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getresizedphoto.py b/src/plex_api_client/models/errors/getresizedphoto.py deleted file mode 100644 index e402e68..0000000 --- a/src/plex_api_client/models/errors/getresizedphoto.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetResizedPhotoServerErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetResizedPhotoServerErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetResizedPhotoUnauthorizedData(BaseModel): - errors: Optional[List[GetResizedPhotoServerErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetResizedPhotoUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetResizedPhotoUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetResizedPhotoUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetResizedPhotoErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetResizedPhotoErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetResizedPhotoBadRequestData(BaseModel): - errors: Optional[List[GetResizedPhotoErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetResizedPhotoBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetResizedPhotoBadRequestData = field(hash=False) - - def __init__( - self, - data: GetResizedPhotoBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getresourcesstatistics.py b/src/plex_api_client/models/errors/getresourcesstatistics.py deleted file mode 100644 index 7d32e82..0000000 --- a/src/plex_api_client/models/errors/getresourcesstatistics.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetResourcesStatisticsStatisticsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetResourcesStatisticsStatisticsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetResourcesStatisticsUnauthorizedData(BaseModel): - errors: Optional[List[GetResourcesStatisticsStatisticsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetResourcesStatisticsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetResourcesStatisticsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetResourcesStatisticsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetResourcesStatisticsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetResourcesStatisticsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetResourcesStatisticsBadRequestData(BaseModel): - errors: Optional[List[GetResourcesStatisticsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetResourcesStatisticsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetResourcesStatisticsBadRequestData = field(hash=False) - - def __init__( - self, - data: GetResourcesStatisticsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getsearchresults.py b/src/plex_api_client/models/errors/getsearchresults.py deleted file mode 100644 index b13b7b2..0000000 --- a/src/plex_api_client/models/errors/getsearchresults.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetSearchResultsSearchErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetSearchResultsSearchErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetSearchResultsUnauthorizedData(BaseModel): - errors: Optional[List[GetSearchResultsSearchErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetSearchResultsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetSearchResultsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetSearchResultsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetSearchResultsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetSearchResultsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetSearchResultsBadRequestData(BaseModel): - errors: Optional[List[GetSearchResultsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetSearchResultsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetSearchResultsBadRequestData = field(hash=False) - - def __init__( - self, - data: GetSearchResultsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getserveractivities.py b/src/plex_api_client/models/errors/getserveractivities.py deleted file mode 100644 index 50f2255..0000000 --- a/src/plex_api_client/models/errors/getserveractivities.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetServerActivitiesActivitiesErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetServerActivitiesActivitiesErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetServerActivitiesUnauthorizedData(BaseModel): - errors: Optional[List[GetServerActivitiesActivitiesErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetServerActivitiesUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetServerActivitiesUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetServerActivitiesUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetServerActivitiesErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetServerActivitiesErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetServerActivitiesBadRequestData(BaseModel): - errors: Optional[List[GetServerActivitiesErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetServerActivitiesBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetServerActivitiesBadRequestData = field(hash=False) - - def __init__( - self, - data: GetServerActivitiesBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getservercapabilities.py b/src/plex_api_client/models/errors/getservercapabilities.py deleted file mode 100644 index 71cbb7d..0000000 --- a/src/plex_api_client/models/errors/getservercapabilities.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetServerCapabilitiesErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetServerCapabilitiesErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetServerCapabilitiesUnauthorizedData(BaseModel): - errors: Optional[List[GetServerCapabilitiesErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetServerCapabilitiesUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetServerCapabilitiesUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetServerCapabilitiesUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class ErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class Errors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetServerCapabilitiesBadRequestData(BaseModel): - errors: Optional[List[Errors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetServerCapabilitiesBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetServerCapabilitiesBadRequestData = field(hash=False) - - def __init__( - self, - data: GetServerCapabilitiesBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getserverlist.py b/src/plex_api_client/models/errors/getserverlist.py deleted file mode 100644 index a037ef2..0000000 --- a/src/plex_api_client/models/errors/getserverlist.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetServerListServerErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetServerListServerErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetServerListUnauthorizedData(BaseModel): - errors: Optional[List[GetServerListServerErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetServerListUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetServerListUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetServerListUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetServerListErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetServerListErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetServerListBadRequestData(BaseModel): - errors: Optional[List[GetServerListErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetServerListBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetServerListBadRequestData = field(hash=False) - - def __init__( - self, - data: GetServerListBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getserverpreferences.py b/src/plex_api_client/models/errors/getserverpreferences.py deleted file mode 100644 index 56d9a69..0000000 --- a/src/plex_api_client/models/errors/getserverpreferences.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetServerPreferencesServerErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetServerPreferencesServerErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetServerPreferencesUnauthorizedData(BaseModel): - errors: Optional[List[GetServerPreferencesServerErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetServerPreferencesUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetServerPreferencesUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetServerPreferencesUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetServerPreferencesErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetServerPreferencesErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetServerPreferencesBadRequestData(BaseModel): - errors: Optional[List[GetServerPreferencesErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetServerPreferencesBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetServerPreferencesBadRequestData = field(hash=False) - - def __init__( - self, - data: GetServerPreferencesBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getsessionhistory.py b/src/plex_api_client/models/errors/getsessionhistory.py deleted file mode 100644 index 5eb5163..0000000 --- a/src/plex_api_client/models/errors/getsessionhistory.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetSessionHistorySessionsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetSessionHistorySessionsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetSessionHistoryUnauthorizedData(BaseModel): - errors: Optional[List[GetSessionHistorySessionsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetSessionHistoryUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetSessionHistoryUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetSessionHistoryUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetSessionHistoryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetSessionHistoryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetSessionHistoryBadRequestData(BaseModel): - errors: Optional[List[GetSessionHistoryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetSessionHistoryBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetSessionHistoryBadRequestData = field(hash=False) - - def __init__( - self, - data: GetSessionHistoryBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getsessions.py b/src/plex_api_client/models/errors/getsessions.py deleted file mode 100644 index 7c5789d..0000000 --- a/src/plex_api_client/models/errors/getsessions.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetSessionsSessionsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetSessionsSessionsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetSessionsUnauthorizedData(BaseModel): - errors: Optional[List[GetSessionsSessionsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetSessionsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetSessionsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetSessionsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetSessionsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetSessionsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetSessionsBadRequestData(BaseModel): - errors: Optional[List[GetSessionsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetSessionsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetSessionsBadRequestData = field(hash=False) - - def __init__( - self, - data: GetSessionsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getsourceconnectioninformation.py b/src/plex_api_client/models/errors/getsourceconnectioninformation.py deleted file mode 100644 index 6d218bb..0000000 --- a/src/plex_api_client/models/errors/getsourceconnectioninformation.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetSourceConnectionInformationAuthenticationErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetSourceConnectionInformationAuthenticationErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetSourceConnectionInformationUnauthorizedData(BaseModel): - errors: Optional[List[GetSourceConnectionInformationAuthenticationErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetSourceConnectionInformationUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetSourceConnectionInformationUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetSourceConnectionInformationUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetSourceConnectionInformationErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetSourceConnectionInformationErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetSourceConnectionInformationBadRequestData(BaseModel): - errors: Optional[List[GetSourceConnectionInformationErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetSourceConnectionInformationBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetSourceConnectionInformationBadRequestData = field(hash=False) - - def __init__( - self, - data: GetSourceConnectionInformationBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getstatistics.py b/src/plex_api_client/models/errors/getstatistics.py deleted file mode 100644 index f07f81e..0000000 --- a/src/plex_api_client/models/errors/getstatistics.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetStatisticsStatisticsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetStatisticsStatisticsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetStatisticsUnauthorizedData(BaseModel): - errors: Optional[List[GetStatisticsStatisticsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetStatisticsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetStatisticsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetStatisticsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetStatisticsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetStatisticsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetStatisticsBadRequestData(BaseModel): - errors: Optional[List[GetStatisticsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetStatisticsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetStatisticsBadRequestData = field(hash=False) - - def __init__( - self, - data: GetStatisticsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/gettimeline.py b/src/plex_api_client/models/errors/gettimeline.py deleted file mode 100644 index 09bce16..0000000 --- a/src/plex_api_client/models/errors/gettimeline.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetTimelineVideoErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetTimelineVideoErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetTimelineUnauthorizedData(BaseModel): - errors: Optional[List[GetTimelineVideoErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetTimelineUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetTimelineUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetTimelineUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetTimelineErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetTimelineErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetTimelineBadRequestData(BaseModel): - errors: Optional[List[GetTimelineErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetTimelineBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetTimelineBadRequestData = field(hash=False) - - def __init__( - self, - data: GetTimelineBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/gettokenbypinid.py b/src/plex_api_client/models/errors/gettokenbypinid.py deleted file mode 100644 index 90cec9f..0000000 --- a/src/plex_api_client/models/errors/gettokenbypinid.py +++ /dev/null @@ -1,87 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetTokenByPinIDPlexErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - - -class GetTokenByPinIDPlexErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - -class GetTokenByPinIDResponseBodyData(BaseModel): - errors: Optional[List[GetTokenByPinIDPlexErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetTokenByPinIDResponseBody(PlexAPIError): - r"""Not Found or Expired""" - - data: GetTokenByPinIDResponseBodyData = field(hash=False) - - def __init__( - self, - data: GetTokenByPinIDResponseBodyData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetTokenByPinIDErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetTokenByPinIDErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetTokenByPinIDBadRequestData(BaseModel): - errors: Optional[List[GetTokenByPinIDErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetTokenByPinIDBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetTokenByPinIDBadRequestData = field(hash=False) - - def __init__( - self, - data: GetTokenByPinIDBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/gettokendetails.py b/src/plex_api_client/models/errors/gettokendetails.py deleted file mode 100644 index da297ad..0000000 --- a/src/plex_api_client/models/errors/gettokendetails.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetTokenDetailsAuthenticationErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetTokenDetailsAuthenticationErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetTokenDetailsUnauthorizedData(BaseModel): - errors: Optional[List[GetTokenDetailsAuthenticationErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetTokenDetailsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetTokenDetailsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetTokenDetailsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetTokenDetailsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetTokenDetailsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetTokenDetailsBadRequestData(BaseModel): - errors: Optional[List[GetTokenDetailsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetTokenDetailsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetTokenDetailsBadRequestData = field(hash=False) - - def __init__( - self, - data: GetTokenDetailsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/gettopwatchedcontent.py b/src/plex_api_client/models/errors/gettopwatchedcontent.py deleted file mode 100644 index b61c41d..0000000 --- a/src/plex_api_client/models/errors/gettopwatchedcontent.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetTopWatchedContentLibraryErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetTopWatchedContentLibraryErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetTopWatchedContentUnauthorizedData(BaseModel): - errors: Optional[List[GetTopWatchedContentLibraryErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetTopWatchedContentUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetTopWatchedContentUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetTopWatchedContentUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetTopWatchedContentErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetTopWatchedContentErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetTopWatchedContentBadRequestData(BaseModel): - errors: Optional[List[GetTopWatchedContentErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetTopWatchedContentBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetTopWatchedContentBadRequestData = field(hash=False) - - def __init__( - self, - data: GetTopWatchedContentBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/gettranscodesessions.py b/src/plex_api_client/models/errors/gettranscodesessions.py deleted file mode 100644 index 92fd538..0000000 --- a/src/plex_api_client/models/errors/gettranscodesessions.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetTranscodeSessionsSessionsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetTranscodeSessionsSessionsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetTranscodeSessionsUnauthorizedData(BaseModel): - errors: Optional[List[GetTranscodeSessionsSessionsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetTranscodeSessionsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetTranscodeSessionsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetTranscodeSessionsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetTranscodeSessionsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetTranscodeSessionsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetTranscodeSessionsBadRequestData(BaseModel): - errors: Optional[List[GetTranscodeSessionsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetTranscodeSessionsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetTranscodeSessionsBadRequestData = field(hash=False) - - def __init__( - self, - data: GetTranscodeSessionsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/gettransienttoken.py b/src/plex_api_client/models/errors/gettransienttoken.py deleted file mode 100644 index b3643ed..0000000 --- a/src/plex_api_client/models/errors/gettransienttoken.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetTransientTokenAuthenticationErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetTransientTokenAuthenticationErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetTransientTokenUnauthorizedData(BaseModel): - errors: Optional[List[GetTransientTokenAuthenticationErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetTransientTokenUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetTransientTokenUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetTransientTokenUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetTransientTokenErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetTransientTokenErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetTransientTokenBadRequestData(BaseModel): - errors: Optional[List[GetTransientTokenErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetTransientTokenBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetTransientTokenBadRequestData = field(hash=False) - - def __init__( - self, - data: GetTransientTokenBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getupdatestatus.py b/src/plex_api_client/models/errors/getupdatestatus.py deleted file mode 100644 index ccd84f7..0000000 --- a/src/plex_api_client/models/errors/getupdatestatus.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetUpdateStatusUpdaterErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetUpdateStatusUpdaterErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetUpdateStatusUnauthorizedData(BaseModel): - errors: Optional[List[GetUpdateStatusUpdaterErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetUpdateStatusUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetUpdateStatusUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetUpdateStatusUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetUpdateStatusErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetUpdateStatusErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetUpdateStatusBadRequestData(BaseModel): - errors: Optional[List[GetUpdateStatusErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetUpdateStatusBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetUpdateStatusBadRequestData = field(hash=False) - - def __init__( - self, - data: GetUpdateStatusBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/getuserfriends.py b/src/plex_api_client/models/errors/getuserfriends.py deleted file mode 100644 index 3faed7e..0000000 --- a/src/plex_api_client/models/errors/getuserfriends.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetUserFriendsPlexErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetUserFriendsPlexErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetUserFriendsUnauthorizedData(BaseModel): - errors: Optional[List[GetUserFriendsPlexErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetUserFriendsUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: GetUserFriendsUnauthorizedData = field(hash=False) - - def __init__( - self, - data: GetUserFriendsUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class GetUserFriendsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class GetUserFriendsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class GetUserFriendsBadRequestData(BaseModel): - errors: Optional[List[GetUserFriendsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class GetUserFriendsBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: GetUserFriendsBadRequestData = field(hash=False) - - def __init__( - self, - data: GetUserFriendsBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/logline.py b/src/plex_api_client/models/errors/logline.py deleted file mode 100644 index b9d98d7..0000000 --- a/src/plex_api_client/models/errors/logline.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class LogLineLogErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class LogLineLogErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class LogLineUnauthorizedData(BaseModel): - errors: Optional[List[LogLineLogErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class LogLineUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: LogLineUnauthorizedData = field(hash=False) - - def __init__( - self, - data: LogLineUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class LogLineErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class LogLineErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class LogLineBadRequestData(BaseModel): - errors: Optional[List[LogLineErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class LogLineBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: LogLineBadRequestData = field(hash=False) - - def __init__( - self, - data: LogLineBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/logmultiline.py b/src/plex_api_client/models/errors/logmultiline.py deleted file mode 100644 index 9316993..0000000 --- a/src/plex_api_client/models/errors/logmultiline.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class LogMultiLineLogErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class LogMultiLineLogErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class LogMultiLineUnauthorizedData(BaseModel): - errors: Optional[List[LogMultiLineLogErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class LogMultiLineUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: LogMultiLineUnauthorizedData = field(hash=False) - - def __init__( - self, - data: LogMultiLineUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class LogMultiLineErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class LogMultiLineErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class LogMultiLineBadRequestData(BaseModel): - errors: Optional[List[LogMultiLineErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class LogMultiLineBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: LogMultiLineBadRequestData = field(hash=False) - - def __init__( - self, - data: LogMultiLineBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/markplayed.py b/src/plex_api_client/models/errors/markplayed.py deleted file mode 100644 index 5b58551..0000000 --- a/src/plex_api_client/models/errors/markplayed.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class MarkPlayedMediaErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class MarkPlayedMediaErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class MarkPlayedUnauthorizedData(BaseModel): - errors: Optional[List[MarkPlayedMediaErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class MarkPlayedUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: MarkPlayedUnauthorizedData = field(hash=False) - - def __init__( - self, - data: MarkPlayedUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class MarkPlayedErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class MarkPlayedErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class MarkPlayedBadRequestData(BaseModel): - errors: Optional[List[MarkPlayedErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class MarkPlayedBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: MarkPlayedBadRequestData = field(hash=False) - - def __init__( - self, - data: MarkPlayedBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/markunplayed.py b/src/plex_api_client/models/errors/markunplayed.py deleted file mode 100644 index 24f4a18..0000000 --- a/src/plex_api_client/models/errors/markunplayed.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class MarkUnplayedMediaErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class MarkUnplayedMediaErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class MarkUnplayedUnauthorizedData(BaseModel): - errors: Optional[List[MarkUnplayedMediaErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class MarkUnplayedUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: MarkUnplayedUnauthorizedData = field(hash=False) - - def __init__( - self, - data: MarkUnplayedUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class MarkUnplayedErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class MarkUnplayedErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class MarkUnplayedBadRequestData(BaseModel): - errors: Optional[List[MarkUnplayedErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class MarkUnplayedBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: MarkUnplayedBadRequestData = field(hash=False) - - def __init__( - self, - data: MarkUnplayedBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/no_response_error.py b/src/plex_api_client/models/errors/no_response_error.py index b710ea2..1deab64 100644 --- a/src/plex_api_client/models/errors/no_response_error.py +++ b/src/plex_api_client/models/errors/no_response_error.py @@ -3,7 +3,7 @@ from dataclasses import dataclass -@dataclass(frozen=True) +@dataclass(unsafe_hash=True) class NoResponseError(Exception): """Error raised when no HTTP response is received from the server.""" diff --git a/src/plex_api_client/models/errors/performsearch.py b/src/plex_api_client/models/errors/performsearch.py deleted file mode 100644 index 466d675..0000000 --- a/src/plex_api_client/models/errors/performsearch.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class PerformSearchSearchErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class PerformSearchSearchErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class PerformSearchUnauthorizedData(BaseModel): - errors: Optional[List[PerformSearchSearchErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class PerformSearchUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: PerformSearchUnauthorizedData = field(hash=False) - - def __init__( - self, - data: PerformSearchUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class PerformSearchErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class PerformSearchErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class PerformSearchBadRequestData(BaseModel): - errors: Optional[List[PerformSearchErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class PerformSearchBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: PerformSearchBadRequestData = field(hash=False) - - def __init__( - self, - data: PerformSearchBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/performvoicesearch.py b/src/plex_api_client/models/errors/performvoicesearch.py deleted file mode 100644 index 93d6e51..0000000 --- a/src/plex_api_client/models/errors/performvoicesearch.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class PerformVoiceSearchSearchErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class PerformVoiceSearchSearchErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class PerformVoiceSearchUnauthorizedData(BaseModel): - errors: Optional[List[PerformVoiceSearchSearchErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class PerformVoiceSearchUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: PerformVoiceSearchUnauthorizedData = field(hash=False) - - def __init__( - self, - data: PerformVoiceSearchUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class PerformVoiceSearchErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class PerformVoiceSearchErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class PerformVoiceSearchBadRequestData(BaseModel): - errors: Optional[List[PerformVoiceSearchErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class PerformVoiceSearchBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: PerformVoiceSearchBadRequestData = field(hash=False) - - def __init__( - self, - data: PerformVoiceSearchBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/plexapierror.py b/src/plex_api_client/models/errors/plexapierror.py index fb2a522..8e07fa0 100644 --- a/src/plex_api_client/models/errors/plexapierror.py +++ b/src/plex_api_client/models/errors/plexapierror.py @@ -5,7 +5,7 @@ from typing import Optional from dataclasses import dataclass, field -@dataclass(frozen=True) +@dataclass(unsafe_hash=True) class PlexAPIError(Exception): """The base class for all HTTP error responses.""" diff --git a/src/plex_api_client/models/errors/post_users_sign_in_data.py b/src/plex_api_client/models/errors/post_users_sign_in_data.py deleted file mode 100644 index c33f84e..0000000 --- a/src/plex_api_client/models/errors/post_users_sign_in_data.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class PostUsersSignInDataAuthenticationErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class PostUsersSignInDataAuthenticationErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class PostUsersSignInDataUnauthorizedData(BaseModel): - errors: Optional[List[PostUsersSignInDataAuthenticationErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class PostUsersSignInDataUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: PostUsersSignInDataUnauthorizedData = field(hash=False) - - def __init__( - self, - data: PostUsersSignInDataUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class PostUsersSignInDataErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class PostUsersSignInDataErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class PostUsersSignInDataBadRequestData(BaseModel): - errors: Optional[List[PostUsersSignInDataErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class PostUsersSignInDataBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: PostUsersSignInDataBadRequestData = field(hash=False) - - def __init__( - self, - data: PostUsersSignInDataBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/responsevalidationerror.py b/src/plex_api_client/models/errors/responsevalidationerror.py index ab8aa3f..88566be 100644 --- a/src/plex_api_client/models/errors/responsevalidationerror.py +++ b/src/plex_api_client/models/errors/responsevalidationerror.py @@ -7,7 +7,7 @@ from dataclasses import dataclass from plex_api_client.models.errors import PlexAPIError -@dataclass(frozen=True) +@dataclass(unsafe_hash=True) class ResponseValidationError(PlexAPIError): """Error raised when there is a type mismatch between the response data and the expected Pydantic model.""" diff --git a/src/plex_api_client/models/errors/sdkerror.py b/src/plex_api_client/models/errors/sdkerror.py index 6939c1c..fa09177 100644 --- a/src/plex_api_client/models/errors/sdkerror.py +++ b/src/plex_api_client/models/errors/sdkerror.py @@ -9,7 +9,7 @@ from plex_api_client.models.errors import PlexAPIError MAX_MESSAGE_LEN = 10_000 -@dataclass(frozen=True) +@dataclass(unsafe_hash=True) class SDKError(PlexAPIError): """The fallback error class if no more specific error class is matched.""" diff --git a/src/plex_api_client/models/errors/startalltasks.py b/src/plex_api_client/models/errors/startalltasks.py deleted file mode 100644 index aeb3a60..0000000 --- a/src/plex_api_client/models/errors/startalltasks.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class StartAllTasksButlerErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class StartAllTasksButlerErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class StartAllTasksUnauthorizedData(BaseModel): - errors: Optional[List[StartAllTasksButlerErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class StartAllTasksUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: StartAllTasksUnauthorizedData = field(hash=False) - - def __init__( - self, - data: StartAllTasksUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class StartAllTasksErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class StartAllTasksErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class StartAllTasksBadRequestData(BaseModel): - errors: Optional[List[StartAllTasksErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class StartAllTasksBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: StartAllTasksBadRequestData = field(hash=False) - - def __init__( - self, - data: StartAllTasksBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/starttask.py b/src/plex_api_client/models/errors/starttask.py deleted file mode 100644 index 512ec0e..0000000 --- a/src/plex_api_client/models/errors/starttask.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class StartTaskButlerErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class StartTaskButlerErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class StartTaskUnauthorizedData(BaseModel): - errors: Optional[List[StartTaskButlerErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class StartTaskUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: StartTaskUnauthorizedData = field(hash=False) - - def __init__( - self, - data: StartTaskUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class StartTaskErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class StartTaskErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class StartTaskBadRequestData(BaseModel): - errors: Optional[List[StartTaskErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class StartTaskBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: StartTaskBadRequestData = field(hash=False) - - def __init__( - self, - data: StartTaskBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/startuniversaltranscode.py b/src/plex_api_client/models/errors/startuniversaltranscode.py deleted file mode 100644 index 73a2d3c..0000000 --- a/src/plex_api_client/models/errors/startuniversaltranscode.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class StartUniversalTranscodeVideoErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class StartUniversalTranscodeVideoErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class StartUniversalTranscodeUnauthorizedData(BaseModel): - errors: Optional[List[StartUniversalTranscodeVideoErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class StartUniversalTranscodeUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: StartUniversalTranscodeUnauthorizedData = field(hash=False) - - def __init__( - self, - data: StartUniversalTranscodeUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class StartUniversalTranscodeErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class StartUniversalTranscodeErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class StartUniversalTranscodeBadRequestData(BaseModel): - errors: Optional[List[StartUniversalTranscodeErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class StartUniversalTranscodeBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: StartUniversalTranscodeBadRequestData = field(hash=False) - - def __init__( - self, - data: StartUniversalTranscodeBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/stopalltasks.py b/src/plex_api_client/models/errors/stopalltasks.py deleted file mode 100644 index 762aed9..0000000 --- a/src/plex_api_client/models/errors/stopalltasks.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class StopAllTasksButlerErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class StopAllTasksButlerErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class StopAllTasksUnauthorizedData(BaseModel): - errors: Optional[List[StopAllTasksButlerErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class StopAllTasksUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: StopAllTasksUnauthorizedData = field(hash=False) - - def __init__( - self, - data: StopAllTasksUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class StopAllTasksErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class StopAllTasksErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class StopAllTasksBadRequestData(BaseModel): - errors: Optional[List[StopAllTasksErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class StopAllTasksBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: StopAllTasksBadRequestData = field(hash=False) - - def __init__( - self, - data: StopAllTasksBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/stoptask.py b/src/plex_api_client/models/errors/stoptask.py deleted file mode 100644 index 4f5a336..0000000 --- a/src/plex_api_client/models/errors/stoptask.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class StopTaskButlerErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class StopTaskButlerErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class StopTaskUnauthorizedData(BaseModel): - errors: Optional[List[StopTaskButlerErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class StopTaskUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: StopTaskUnauthorizedData = field(hash=False) - - def __init__( - self, - data: StopTaskUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class StopTaskErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class StopTaskErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class StopTaskBadRequestData(BaseModel): - errors: Optional[List[StopTaskErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class StopTaskBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: StopTaskBadRequestData = field(hash=False) - - def __init__( - self, - data: StopTaskBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/stoptranscodesession.py b/src/plex_api_client/models/errors/stoptranscodesession.py deleted file mode 100644 index 4c23e6c..0000000 --- a/src/plex_api_client/models/errors/stoptranscodesession.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class StopTranscodeSessionSessionsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class StopTranscodeSessionSessionsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class StopTranscodeSessionUnauthorizedData(BaseModel): - errors: Optional[List[StopTranscodeSessionSessionsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class StopTranscodeSessionUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: StopTranscodeSessionUnauthorizedData = field(hash=False) - - def __init__( - self, - data: StopTranscodeSessionUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class StopTranscodeSessionErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class StopTranscodeSessionErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class StopTranscodeSessionBadRequestData(BaseModel): - errors: Optional[List[StopTranscodeSessionErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class StopTranscodeSessionBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: StopTranscodeSessionBadRequestData = field(hash=False) - - def __init__( - self, - data: StopTranscodeSessionBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/updateplaylist.py b/src/plex_api_client/models/errors/updateplaylist.py deleted file mode 100644 index 4ea3ab7..0000000 --- a/src/plex_api_client/models/errors/updateplaylist.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class UpdatePlaylistPlaylistsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class UpdatePlaylistPlaylistsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class UpdatePlaylistUnauthorizedData(BaseModel): - errors: Optional[List[UpdatePlaylistPlaylistsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class UpdatePlaylistUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: UpdatePlaylistUnauthorizedData = field(hash=False) - - def __init__( - self, - data: UpdatePlaylistUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class UpdatePlaylistErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class UpdatePlaylistErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class UpdatePlaylistBadRequestData(BaseModel): - errors: Optional[List[UpdatePlaylistErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class UpdatePlaylistBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: UpdatePlaylistBadRequestData = field(hash=False) - - def __init__( - self, - data: UpdatePlaylistBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/updateplayprogress.py b/src/plex_api_client/models/errors/updateplayprogress.py deleted file mode 100644 index 861157c..0000000 --- a/src/plex_api_client/models/errors/updateplayprogress.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class UpdatePlayProgressMediaErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class UpdatePlayProgressMediaErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class UpdatePlayProgressUnauthorizedData(BaseModel): - errors: Optional[List[UpdatePlayProgressMediaErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class UpdatePlayProgressUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: UpdatePlayProgressUnauthorizedData = field(hash=False) - - def __init__( - self, - data: UpdatePlayProgressUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class UpdatePlayProgressErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class UpdatePlayProgressErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class UpdatePlayProgressBadRequestData(BaseModel): - errors: Optional[List[UpdatePlayProgressErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class UpdatePlayProgressBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: UpdatePlayProgressBadRequestData = field(hash=False) - - def __init__( - self, - data: UpdatePlayProgressBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/errors/uploadplaylist.py b/src/plex_api_client/models/errors/uploadplaylist.py deleted file mode 100644 index fc3243d..0000000 --- a/src/plex_api_client/models/errors/uploadplaylist.py +++ /dev/null @@ -1,90 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from dataclasses import dataclass, field -import httpx -from plex_api_client.models.errors import PlexAPIError -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class UploadPlaylistPlaylistsErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class UploadPlaylistPlaylistsErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class UploadPlaylistUnauthorizedData(BaseModel): - errors: Optional[List[UploadPlaylistPlaylistsErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class UploadPlaylistUnauthorized(PlexAPIError): - r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query.""" - - data: UploadPlaylistUnauthorizedData = field(hash=False) - - def __init__( - self, - data: UploadPlaylistUnauthorizedData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) - - -class UploadPlaylistErrorsTypedDict(TypedDict): - code: NotRequired[int] - message: NotRequired[str] - status: NotRequired[int] - - -class UploadPlaylistErrors(BaseModel): - code: Optional[int] = None - - message: Optional[str] = None - - status: Optional[int] = None - - -class UploadPlaylistBadRequestData(BaseModel): - errors: Optional[List[UploadPlaylistErrors]] = None - - raw_response: Annotated[Optional[httpx.Response], pydantic.Field(exclude=True)] = ( - None - ) - r"""Raw HTTP response; suitable for custom response parsing""" - - -@dataclass(frozen=True) -class UploadPlaylistBadRequest(PlexAPIError): - r"""Bad Request - A parameter was not specified, or was specified incorrectly.""" - - data: UploadPlaylistBadRequestData = field(hash=False) - - def __init__( - self, - data: UploadPlaylistBadRequestData, - raw_response: httpx.Response, - body: Optional[str] = None, - ): - message = body or raw_response.text - super().__init__(message, raw_response, body) - object.__setattr__(self, "data", data) diff --git a/src/plex_api_client/models/internal/__init__.py b/src/plex_api_client/models/internal/__init__.py new file mode 100644 index 0000000..e7070a1 --- /dev/null +++ b/src/plex_api_client/models/internal/__init__.py @@ -0,0 +1,54 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from typing import TYPE_CHECKING +from importlib import import_module +import builtins +import sys + +if TYPE_CHECKING: + from .globals import Globals, GlobalsTypedDict + +__all__ = ["Globals", "GlobalsTypedDict"] + +_dynamic_imports: dict[str, str] = { + "Globals": ".globals", + "GlobalsTypedDict": ".globals", +} + + +def dynamic_import(modname, retries=3): + for attempt in range(retries): + try: + return import_module(modname, __package__) + except KeyError: + # Clear any half-initialized module and retry + sys.modules.pop(modname, None) + if attempt == retries - 1: + break + raise KeyError(f"Failed to import module '{modname}' after {retries} attempts") + + +def __getattr__(attr_name: str) -> object: + module_name = _dynamic_imports.get(attr_name) + if module_name is None: + raise AttributeError( + f"No {attr_name} found in _dynamic_imports for module name -> {__name__} " + ) + + try: + module = dynamic_import(module_name) + result = getattr(module, attr_name) + return result + except ImportError as e: + raise ImportError( + f"Failed to import {attr_name} from {module_name}: {e}" + ) from e + except AttributeError as e: + raise AttributeError( + f"Failed to get {attr_name} from {module_name}: {e}" + ) from e + + +def __dir__(): + lazy_attrs = builtins.list(_dynamic_imports.keys()) + return builtins.sorted(lazy_attrs) diff --git a/src/plex_api_client/models/internal/globals.py b/src/plex_api_client/models/internal/globals.py new file mode 100644 index 0000000..1d2c19e --- /dev/null +++ b/src/plex_api_client/models/internal/globals.py @@ -0,0 +1,112 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class Globals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" diff --git a/src/plex_api_client/models/operations/__init__.py b/src/plex_api_client/models/operations/__init__.py index 2361fa0..ab9b1db 100644 --- a/src/plex_api_client/models/operations/__init__.py +++ b/src/plex_api_client/models/operations/__init__.py @@ -6,3428 +6,5744 @@ import builtins import sys if TYPE_CHECKING: - from .addplaylistcontents import ( - AddPlaylistContentsMediaContainer, - AddPlaylistContentsMediaContainerTypedDict, - AddPlaylistContentsMetadata, - AddPlaylistContentsMetadataTypedDict, - AddPlaylistContentsRequest, - AddPlaylistContentsRequestTypedDict, - AddPlaylistContentsResponse, - AddPlaylistContentsResponseBody, - AddPlaylistContentsResponseBodyTypedDict, - AddPlaylistContentsResponseTypedDict, + from .addcollectionitems import ( + AddCollectionItemsGlobals, + AddCollectionItemsGlobalsTypedDict, + AddCollectionItemsRequest, + AddCollectionItemsRequestTypedDict, + AddCollectionItemsResponse, + AddCollectionItemsResponseTypedDict, + ) + from .adddevice import ( + AddDeviceGlobals, + AddDeviceGlobalsTypedDict, + AddDeviceRequest, + AddDeviceRequestTypedDict, + AddDeviceResponse, + AddDeviceResponseTypedDict, + ) + from .adddevicetodvr import ( + AddDeviceToDVRDVR, + AddDeviceToDVRDVRTypedDict, + AddDeviceToDVRDVRsMediaContainer, + AddDeviceToDVRDVRsMediaContainerTypedDict, + AddDeviceToDVRGlobals, + AddDeviceToDVRGlobalsTypedDict, + AddDeviceToDVRMediaContainer, + AddDeviceToDVRMediaContainerTypedDict, + AddDeviceToDVRRequest, + AddDeviceToDVRRequestTypedDict, + AddDeviceToDVRResponse, + AddDeviceToDVRResponseBody, + AddDeviceToDVRResponseBodyTypedDict, + AddDeviceToDVRResponseTypedDict, + ) + from .adddownloadqueueitems import ( + AddDownloadQueueItemsGlobals, + AddDownloadQueueItemsGlobalsTypedDict, + AddDownloadQueueItemsMediaContainer, + AddDownloadQueueItemsMediaContainerTypedDict, + AddDownloadQueueItemsRequest, + AddDownloadQueueItemsRequestTypedDict, + AddDownloadQueueItemsResponse, + AddDownloadQueueItemsResponseBody, + AddDownloadQueueItemsResponseBodyTypedDict, + AddDownloadQueueItemsResponseTypedDict, + AddedQueueItems, + AddedQueueItemsTypedDict, + ) + from .addextras import ( + AddExtrasGlobals, + AddExtrasGlobalsTypedDict, + AddExtrasRequest, + AddExtrasRequestTypedDict, + AddExtrasResponse, + AddExtrasResponseTypedDict, + ) + from .addlineup import ( + AddLineupDVR, + AddLineupDVRTypedDict, + AddLineupDVRsMediaContainer, + AddLineupDVRsMediaContainerTypedDict, + AddLineupGlobals, + AddLineupGlobalsTypedDict, + AddLineupMediaContainer, + AddLineupMediaContainerTypedDict, + AddLineupRequest, + AddLineupRequestTypedDict, + AddLineupResponse, + AddLineupResponseBody, + AddLineupResponseBodyTypedDict, + AddLineupResponseTypedDict, + ) + from .addplaylistitems import ( + AddPlaylistItemsGlobals, + AddPlaylistItemsGlobalsTypedDict, + AddPlaylistItemsRequest, + AddPlaylistItemsRequestTypedDict, + AddPlaylistItemsResponse, + AddPlaylistItemsResponseTypedDict, + ) + from .addprovider import ( + AddProviderGlobals, + AddProviderGlobalsTypedDict, + AddProviderRequest, + AddProviderRequestTypedDict, + AddProviderResponse, + AddProviderResponseTypedDict, + ) + from .addsection import ( + AddSectionGlobals, + AddSectionGlobalsTypedDict, + AddSectionRequest, + AddSectionRequestTypedDict, + AddSectionResponse, + AddSectionResponseTypedDict, + QueryParamPrefs, + QueryParamPrefsTypedDict, + ) + from .addsubtitles import ( + AddSubtitlesGlobals, + AddSubtitlesGlobalsTypedDict, + AddSubtitlesRequest, + AddSubtitlesRequestTypedDict, + AddSubtitlesResponse, + AddSubtitlesResponseTypedDict, + ) + from .addtoplayqueue import ( + AddToPlayQueueGlobals, + AddToPlayQueueGlobalsTypedDict, + AddToPlayQueueRequest, + AddToPlayQueueRequestTypedDict, + AddToPlayQueueResponse, + AddToPlayQueueResponseTypedDict, + ) + from .analyzemetadata import ( + AnalyzeMetadataGlobals, + AnalyzeMetadataGlobalsTypedDict, + AnalyzeMetadataRequest, + AnalyzeMetadataRequestTypedDict, + AnalyzeMetadataResponse, + AnalyzeMetadataResponseTypedDict, ) from .applyupdates import ( + ApplyUpdatesGlobals, + ApplyUpdatesGlobalsTypedDict, ApplyUpdatesRequest, ApplyUpdatesRequestTypedDict, ApplyUpdatesResponse, ApplyUpdatesResponseTypedDict, - Skip, - Tonight, ) - from .cancelserveractivities import ( - CancelServerActivitiesRequest, - CancelServerActivitiesRequestTypedDict, - CancelServerActivitiesResponse, - CancelServerActivitiesResponseTypedDict, + from .autocomplete import ( + AutocompleteGlobals, + AutocompleteGlobalsTypedDict, + AutocompleteRequest, + AutocompleteRequestTypedDict, + AutocompleteResponse, + AutocompleteResponseTypedDict, ) - from .checkforupdates import ( - CheckForUpdatesRequest, - CheckForUpdatesRequestTypedDict, - CheckForUpdatesResponse, - CheckForUpdatesResponseTypedDict, - Download, + from .cancelactivity import ( + CancelActivityGlobals, + CancelActivityGlobalsTypedDict, + CancelActivityRequest, + CancelActivityRequestTypedDict, + CancelActivityResponse, + CancelActivityResponseTypedDict, ) - from .clearplaylistcontents import ( - ClearPlaylistContentsRequest, - ClearPlaylistContentsRequestTypedDict, - ClearPlaylistContentsResponse, - ClearPlaylistContentsResponseTypedDict, + from .cancelgrab import ( + CancelGrabGlobals, + CancelGrabGlobalsTypedDict, + CancelGrabRequest, + CancelGrabRequestTypedDict, + CancelGrabResponse, + CancelGrabResponseTypedDict, + ) + from .cancelrefresh import ( + CancelRefreshGlobals, + CancelRefreshGlobalsTypedDict, + CancelRefreshRequest, + CancelRefreshRequestTypedDict, + CancelRefreshResponse, + CancelRefreshResponseTypedDict, + ) + from .checkupdates import ( + CheckUpdatesGlobals, + CheckUpdatesGlobalsTypedDict, + CheckUpdatesRequest, + CheckUpdatesRequestTypedDict, + CheckUpdatesResponse, + CheckUpdatesResponseTypedDict, + ) + from .cleanbundles import CleanBundlesResponse, CleanBundlesResponseTypedDict + from .clearplaylistitems import ( + ClearPlaylistItemsGlobals, + ClearPlaylistItemsGlobalsTypedDict, + ClearPlaylistItemsRequest, + ClearPlaylistItemsRequestTypedDict, + ClearPlaylistItemsResponse, + ClearPlaylistItemsResponseTypedDict, + ) + from .clearplayqueue import ( + ClearPlayQueueGlobals, + ClearPlayQueueGlobalsTypedDict, + ClearPlayQueueRequest, + ClearPlayQueueRequestTypedDict, + ClearPlayQueueResponse, + ClearPlayQueueResponseTypedDict, + ) + from .computechannelmap import ( + ComputeChannelMapChannelMapping, + ComputeChannelMapChannelMappingTypedDict, + ComputeChannelMapGlobals, + ComputeChannelMapGlobalsTypedDict, + ComputeChannelMapMediaContainer, + ComputeChannelMapMediaContainerTypedDict, + ComputeChannelMapRequest, + ComputeChannelMapRequestTypedDict, + ComputeChannelMapResponse, + ComputeChannelMapResponseBody, + ComputeChannelMapResponseBodyTypedDict, + ComputeChannelMapResponseTypedDict, + ) + from .connectwebsocket import ( + ConnectWebSocketGlobals, + ConnectWebSocketGlobalsTypedDict, + ConnectWebSocketRequest, + ConnectWebSocketRequestTypedDict, + ConnectWebSocketResponse, + ConnectWebSocketResponseTypedDict, + ) + from .createcollection import ( + CreateCollectionGlobals, + CreateCollectionGlobalsTypedDict, + CreateCollectionRequest, + CreateCollectionRequestTypedDict, + CreateCollectionResponse, + CreateCollectionResponseTypedDict, + ) + from .createcustomhub import ( + CreateCustomHubGlobals, + CreateCustomHubGlobalsTypedDict, + CreateCustomHubRequest, + CreateCustomHubRequestTypedDict, + CreateCustomHubResponse, + CreateCustomHubResponseTypedDict, + ) + from .createdownloadqueue import ( + CreateDownloadQueueMediaContainer, + CreateDownloadQueueMediaContainerTypedDict, + CreateDownloadQueueResponse, + CreateDownloadQueueResponseBody, + CreateDownloadQueueResponseBodyTypedDict, + CreateDownloadQueueResponseTypedDict, + DownloadQueue, + DownloadQueueTypedDict, + Status, + ) + from .createdvr import ( + CreateDVRGlobals, + CreateDVRGlobalsTypedDict, + CreateDVRRequest, + CreateDVRRequestTypedDict, + CreateDVRResponse, + CreateDVRResponseTypedDict, + ) + from .createmarker import ( + Attributes, + AttributesTypedDict, + CreateMarkerGlobals, + CreateMarkerGlobalsTypedDict, + CreateMarkerMediaContainer, + CreateMarkerMediaContainerTypedDict, + CreateMarkerRequest, + CreateMarkerRequestTypedDict, + CreateMarkerResponse, + CreateMarkerResponseBody, + CreateMarkerResponseBodyTypedDict, + CreateMarkerResponseTypedDict, + CreateMarkerType, ) from .createplaylist import ( - CreatePlaylistMediaContainer, - CreatePlaylistMediaContainerTypedDict, - CreatePlaylistMetadata, - CreatePlaylistMetadataTypedDict, - CreatePlaylistQueryParamType, + CreatePlaylistGlobals, + CreatePlaylistGlobalsTypedDict, CreatePlaylistRequest, CreatePlaylistRequestTypedDict, CreatePlaylistResponse, - CreatePlaylistResponseBody, - CreatePlaylistResponseBodyTypedDict, CreatePlaylistResponseTypedDict, - Smart, ) - from .deletelibrary import ( - DeleteLibraryRequest, - DeleteLibraryRequestTypedDict, - DeleteLibraryResponse, - DeleteLibraryResponseTypedDict, + from .createplayqueue import ( + CreatePlayQueueGlobals, + CreatePlayQueueGlobalsTypedDict, + CreatePlayQueueMediaContainer, + CreatePlayQueueMediaContainerTypedDict, + CreatePlayQueueRequest, + CreatePlayQueueRequestTypedDict, + CreatePlayQueueResponse, + CreatePlayQueueResponseBody, + CreatePlayQueueResponseBodyTypedDict, + CreatePlayQueueResponseTypedDict, + Type, + ) + from .createsubscription import ( + CreateSubscriptionGlobals, + CreateSubscriptionGlobalsTypedDict, + CreateSubscriptionMediaContainer, + CreateSubscriptionMediaContainerTypedDict, + CreateSubscriptionQueryParamPrefs, + CreateSubscriptionQueryParamPrefsTypedDict, + CreateSubscriptionRequest, + CreateSubscriptionRequestTypedDict, + CreateSubscriptionResponse, + CreateSubscriptionResponseBody, + CreateSubscriptionResponseBodyTypedDict, + CreateSubscriptionResponseTypedDict, + Hints, + HintsTypedDict, + Params, + ParamsTypedDict, + ) + from .deletecaches import DeleteCachesResponse, DeleteCachesResponseTypedDict + from .deletecollection import ( + DeleteCollectionGlobals, + DeleteCollectionGlobalsTypedDict, + DeleteCollectionRequest, + DeleteCollectionRequestTypedDict, + DeleteCollectionResponse, + DeleteCollectionResponseTypedDict, + ) + from .deletecollectionitem import ( + DeleteCollectionItemGlobals, + DeleteCollectionItemGlobalsTypedDict, + DeleteCollectionItemRequest, + DeleteCollectionItemRequestTypedDict, + DeleteCollectionItemResponse, + DeleteCollectionItemResponseTypedDict, + ) + from .deletecustomhub import ( + DeleteCustomHubGlobals, + DeleteCustomHubGlobalsTypedDict, + DeleteCustomHubRequest, + DeleteCustomHubRequestTypedDict, + DeleteCustomHubResponse, + DeleteCustomHubResponseTypedDict, + ) + from .deletedvr import ( + DeleteDVRGlobals, + DeleteDVRGlobalsTypedDict, + DeleteDVRRequest, + DeleteDVRRequestTypedDict, + DeleteDVRResponse, + DeleteDVRResponseTypedDict, + ) + from .deletehistory import ( + DeleteHistoryGlobals, + DeleteHistoryGlobalsTypedDict, + DeleteHistoryRequest, + DeleteHistoryRequestTypedDict, + DeleteHistoryResponse, + DeleteHistoryResponseTypedDict, + ) + from .deleteindexes import ( + DeleteIndexesGlobals, + DeleteIndexesGlobalsTypedDict, + DeleteIndexesRequest, + DeleteIndexesRequestTypedDict, + DeleteIndexesResponse, + DeleteIndexesResponseTypedDict, + ) + from .deleteintros import ( + DeleteIntrosGlobals, + DeleteIntrosGlobalsTypedDict, + DeleteIntrosRequest, + DeleteIntrosRequestTypedDict, + DeleteIntrosResponse, + DeleteIntrosResponseTypedDict, + ) + from .deletelibrarysection import ( + DeleteLibrarySectionGlobals, + DeleteLibrarySectionGlobalsTypedDict, + DeleteLibrarySectionRequest, + DeleteLibrarySectionRequestTypedDict, + DeleteLibrarySectionResponse, + DeleteLibrarySectionResponseTypedDict, + ) + from .deletelineup import ( + DeleteLineupDVR, + DeleteLineupDVRTypedDict, + DeleteLineupDVRsMediaContainer, + DeleteLineupDVRsMediaContainerTypedDict, + DeleteLineupGlobals, + DeleteLineupGlobalsTypedDict, + DeleteLineupMediaContainer, + DeleteLineupMediaContainerTypedDict, + DeleteLineupRequest, + DeleteLineupRequestTypedDict, + DeleteLineupResponse, + DeleteLineupResponseBody, + DeleteLineupResponseBodyTypedDict, + DeleteLineupResponseTypedDict, + ) + from .deletemarker import ( + DeleteMarkerGlobals, + DeleteMarkerGlobalsTypedDict, + DeleteMarkerRequest, + DeleteMarkerRequestTypedDict, + DeleteMarkerResponse, + DeleteMarkerResponseTypedDict, + ) + from .deletemediaitem import ( + DeleteMediaItemGlobals, + DeleteMediaItemGlobalsTypedDict, + DeleteMediaItemRequest, + DeleteMediaItemRequestTypedDict, + DeleteMediaItemResponse, + DeleteMediaItemResponseTypedDict, + ) + from .deletemediaprovider import ( + DeleteMediaProviderGlobals, + DeleteMediaProviderGlobalsTypedDict, + DeleteMediaProviderRequest, + DeleteMediaProviderRequestTypedDict, + DeleteMediaProviderResponse, + DeleteMediaProviderResponseTypedDict, + ) + from .deletemetadataitem import ( + DeleteMetadataItemGlobals, + DeleteMetadataItemGlobalsTypedDict, + DeleteMetadataItemRequest, + DeleteMetadataItemRequestTypedDict, + DeleteMetadataItemResponse, + DeleteMetadataItemResponseTypedDict, ) from .deleteplaylist import ( + DeletePlaylistGlobals, + DeletePlaylistGlobalsTypedDict, DeletePlaylistRequest, DeletePlaylistRequestTypedDict, DeletePlaylistResponse, DeletePlaylistResponseTypedDict, ) + from .deleteplaylistitem import ( + DeletePlaylistItemGlobals, + DeletePlaylistItemGlobalsTypedDict, + DeletePlaylistItemRequest, + DeletePlaylistItemRequestTypedDict, + DeletePlaylistItemResponse, + DeletePlaylistItemResponseTypedDict, + ) + from .deleteplayqueueitem import ( + DeletePlayQueueItemGlobals, + DeletePlayQueueItemGlobalsTypedDict, + DeletePlayQueueItemRequest, + DeletePlayQueueItemRequestTypedDict, + DeletePlayQueueItemResponse, + DeletePlayQueueItemResponseTypedDict, + ) + from .deletestream import ( + DeleteStreamGlobals, + DeleteStreamGlobalsTypedDict, + DeleteStreamRequest, + DeleteStreamRequestTypedDict, + DeleteStreamResponse, + DeleteStreamResponseTypedDict, + ) + from .deletesubscription import ( + DeleteSubscriptionGlobals, + DeleteSubscriptionGlobalsTypedDict, + DeleteSubscriptionRequest, + DeleteSubscriptionRequestTypedDict, + DeleteSubscriptionResponse, + DeleteSubscriptionResponseTypedDict, + ) + from .detectads import ( + DetectAdsGlobals, + DetectAdsGlobalsTypedDict, + DetectAdsRequest, + DetectAdsRequestTypedDict, + DetectAdsResponse, + DetectAdsResponseTypedDict, + ) + from .detectcredits import ( + DetectCreditsGlobals, + DetectCreditsGlobalsTypedDict, + DetectCreditsRequest, + DetectCreditsRequestTypedDict, + DetectCreditsResponse, + DetectCreditsResponseTypedDict, + ) + from .detectintros import ( + DetectIntrosGlobals, + DetectIntrosGlobalsTypedDict, + DetectIntrosRequest, + DetectIntrosRequestTypedDict, + DetectIntrosResponse, + DetectIntrosResponseTypedDict, + ) + from .detectvoiceactivity import ( + DetectVoiceActivityGlobals, + DetectVoiceActivityGlobalsTypedDict, + DetectVoiceActivityRequest, + DetectVoiceActivityRequestTypedDict, + DetectVoiceActivityResponse, + DetectVoiceActivityResponseTypedDict, + ) + from .discoverdevices import ( + DiscoverDevicesResponse, + DiscoverDevicesResponseTypedDict, + ) + from .editmarker import ( + EditMarkerGlobals, + EditMarkerGlobalsTypedDict, + EditMarkerRequest, + EditMarkerRequestTypedDict, + EditMarkerResponse, + EditMarkerResponseTypedDict, + QueryParamAttributes, + QueryParamAttributesTypedDict, + ) + from .editmetadataitem import ( + Args, + ArgsTypedDict, + EditMetadataItemGlobals, + EditMetadataItemGlobalsTypedDict, + EditMetadataItemRequest, + EditMetadataItemRequestTypedDict, + EditMetadataItemResponse, + EditMetadataItemResponseTypedDict, + ) + from .editsection import ( + EditSectionGlobals, + EditSectionGlobalsTypedDict, + EditSectionQueryParamPrefs, + EditSectionQueryParamPrefsTypedDict, + EditSectionRequest, + EditSectionRequestTypedDict, + EditSectionResponse, + EditSectionResponseTypedDict, + ) + from .editsubscriptionpreferences import ( + EditSubscriptionPreferencesGlobals, + EditSubscriptionPreferencesGlobalsTypedDict, + EditSubscriptionPreferencesQueryParamPrefs, + EditSubscriptionPreferencesQueryParamPrefsTypedDict, + EditSubscriptionPreferencesRequest, + EditSubscriptionPreferencesRequestTypedDict, + EditSubscriptionPreferencesResponse, + EditSubscriptionPreferencesResponseTypedDict, + ) + from .emptytrash import ( + EmptyTrashGlobals, + EmptyTrashGlobalsTypedDict, + EmptyTrashRequest, + EmptyTrashRequestTypedDict, + EmptyTrashResponse, + EmptyTrashResponseTypedDict, + ) from .enablepapertrail import ( - EnablePaperTrailResponse, - EnablePaperTrailResponseTypedDict, + EnablePapertrailGlobals, + EnablePapertrailGlobalsTypedDict, + EnablePapertrailRequest, + EnablePapertrailRequestTypedDict, + EnablePapertrailResponse, + EnablePapertrailResponseTypedDict, ) - from .get_actors_library import ( - GetActorsLibraryDirectory, - GetActorsLibraryDirectoryTypedDict, - GetActorsLibraryMediaContainer, - GetActorsLibraryMediaContainerTypedDict, - GetActorsLibraryQueryParamType, - GetActorsLibraryRequest, - GetActorsLibraryRequestTypedDict, - GetActorsLibraryResponse, - GetActorsLibraryResponseBody, - GetActorsLibraryResponseBodyTypedDict, - GetActorsLibraryResponseTypedDict, + from .generatethumbs import ( + GenerateThumbsGlobals, + GenerateThumbsGlobalsTypedDict, + GenerateThumbsRequest, + GenerateThumbsRequestTypedDict, + GenerateThumbsResponse, + GenerateThumbsResponseTypedDict, ) - from .get_all_libraries import ( - GetAllLibrariesDirectory, - GetAllLibrariesDirectoryTypedDict, - GetAllLibrariesLocation, - GetAllLibrariesLocationTypedDict, - GetAllLibrariesMediaContainer, - GetAllLibrariesMediaContainerTypedDict, - GetAllLibrariesResponse, - GetAllLibrariesResponseBody, - GetAllLibrariesResponseBodyTypedDict, - GetAllLibrariesResponseTypedDict, - GetAllLibrariesType, - Hidden, + from .getalbums import ( + GetAlbumsGlobals, + GetAlbumsGlobalsTypedDict, + GetAlbumsRequest, + GetAlbumsRequestTypedDict, + GetAlbumsResponse, + GetAlbumsResponseTypedDict, ) - from .get_banner_image import ( - GetBannerImageRequest, - GetBannerImageRequestTypedDict, - GetBannerImageResponse, - GetBannerImageResponseTypedDict, + from .getallhubs import ( + GetAllHubsGlobals, + GetAllHubsGlobalsTypedDict, + GetAllHubsMediaContainer, + GetAllHubsMediaContainerTypedDict, + GetAllHubsRequest, + GetAllHubsRequestTypedDict, + GetAllHubsResponse, + GetAllHubsResponseBody, + GetAllHubsResponseBodyTypedDict, + GetAllHubsResponseTypedDict, ) - from .get_countries_library import ( - GetCountriesLibraryDirectory, - GetCountriesLibraryDirectoryTypedDict, - GetCountriesLibraryMediaContainer, - GetCountriesLibraryMediaContainerTypedDict, - GetCountriesLibraryQueryParamType, - GetCountriesLibraryRequest, - GetCountriesLibraryRequestTypedDict, - GetCountriesLibraryResponse, - GetCountriesLibraryResponseBody, - GetCountriesLibraryResponseBodyTypedDict, - GetCountriesLibraryResponseTypedDict, + from .getallitemleaves import ( + GetAllItemLeavesGlobals, + GetAllItemLeavesGlobalsTypedDict, + GetAllItemLeavesRequest, + GetAllItemLeavesRequestTypedDict, + GetAllItemLeavesResponse, + GetAllItemLeavesResponseTypedDict, ) - from .get_genres_library import ( - GetGenresLibraryDirectory, - GetGenresLibraryDirectoryTypedDict, - GetGenresLibraryMediaContainer, - GetGenresLibraryMediaContainerTypedDict, - GetGenresLibraryQueryParamType, - GetGenresLibraryRequest, - GetGenresLibraryRequestTypedDict, - GetGenresLibraryResponse, - GetGenresLibraryResponseBody, - GetGenresLibraryResponseBodyTypedDict, - GetGenresLibraryResponseTypedDict, + from .getalllanguages import ( + GetAllLanguagesMediaContainer, + GetAllLanguagesMediaContainerTypedDict, + GetAllLanguagesResponse, + GetAllLanguagesResponseBody, + GetAllLanguagesResponseBodyTypedDict, + GetAllLanguagesResponseTypedDict, + Language, + LanguageTypedDict, ) - from .get_library_details import ( - GetLibraryDetailsDirectory, - GetLibraryDetailsDirectoryTypedDict, - GetLibraryDetailsField, - GetLibraryDetailsFieldType, - GetLibraryDetailsFieldTypeTypedDict, - GetLibraryDetailsFieldTypedDict, - GetLibraryDetailsFilter, - GetLibraryDetailsFilterTypedDict, + from .getallleaves import ( + GetAllLeavesGlobals, + GetAllLeavesGlobalsTypedDict, + GetAllLeavesRequest, + GetAllLeavesRequestTypedDict, + GetAllLeavesResponse, + GetAllLeavesResponseTypedDict, + ) + from .getallpreferences import ( + GetAllPreferencesResponse, + GetAllPreferencesResponseTypedDict, + ) + from .getallsubscriptions import ( + GetAllSubscriptionsGlobals, + GetAllSubscriptionsGlobalsTypedDict, + GetAllSubscriptionsRequest, + GetAllSubscriptionsRequestTypedDict, + GetAllSubscriptionsResponse, + GetAllSubscriptionsResponseTypedDict, + ) + from .getarts import ( + GetArtsGlobals, + GetArtsGlobalsTypedDict, + GetArtsRequest, + GetArtsRequestTypedDict, + GetArtsResponse, + GetArtsResponseTypedDict, + ) + from .getaugmentationstatus import ( + GetAugmentationStatusGlobals, + GetAugmentationStatusGlobalsTypedDict, + GetAugmentationStatusRequest, + GetAugmentationStatusRequestTypedDict, + GetAugmentationStatusResponse, + GetAugmentationStatusResponseTypedDict, + ) + from .getavailablegrabbers import ( + GetAvailableGrabbersGlobals, + GetAvailableGrabbersGlobalsTypedDict, + GetAvailableGrabbersMediaContainer, + GetAvailableGrabbersMediaContainerTypedDict, + GetAvailableGrabbersRequest, + GetAvailableGrabbersRequestTypedDict, + GetAvailableGrabbersResponse, + GetAvailableGrabbersResponseBody, + GetAvailableGrabbersResponseBodyTypedDict, + GetAvailableGrabbersResponseTypedDict, + MediaGrabber, + MediaGrabberTypedDict, + ) + from .getavailablesorts import ( + GetAvailableSortsGlobals, + GetAvailableSortsGlobalsTypedDict, + GetAvailableSortsMediaContainer, + GetAvailableSortsMediaContainerTypedDict, + GetAvailableSortsRequest, + GetAvailableSortsRequestTypedDict, + GetAvailableSortsResponse, + GetAvailableSortsResponseBody, + GetAvailableSortsResponseBodyTypedDict, + GetAvailableSortsResponseTypedDict, + ) + from .getbackgroundtasks import ( + GetBackgroundTasksMediaContainer, + GetBackgroundTasksMediaContainerTypedDict, + GetBackgroundTasksResponse, + GetBackgroundTasksResponseBody, + GetBackgroundTasksResponseBodyTypedDict, + GetBackgroundTasksResponseTypedDict, + GetBackgroundTasksType, + TranscodeJob, + TranscodeJobTypedDict, + ) + from .getcategories import ( + GetCategoriesGlobals, + GetCategoriesGlobalsTypedDict, + GetCategoriesRequest, + GetCategoriesRequestTypedDict, + GetCategoriesResponse, + GetCategoriesResponseTypedDict, + ) + from .getchannels import ( + GetChannelsGlobals, + GetChannelsGlobalsTypedDict, + GetChannelsMediaContainer, + GetChannelsMediaContainerTypedDict, + GetChannelsRequest, + GetChannelsRequestTypedDict, + GetChannelsResponse, + GetChannelsResponseBody, + GetChannelsResponseBodyTypedDict, + GetChannelsResponseTypedDict, + ) + from .getchapterimage import ( + GetChapterImageGlobals, + GetChapterImageGlobalsTypedDict, + GetChapterImageRequest, + GetChapterImageRequestTypedDict, + GetChapterImageResponse, + GetChapterImageResponseTypedDict, + ) + from .getcluster import ( + GetClusterGlobals, + GetClusterGlobalsTypedDict, + GetClusterRequest, + GetClusterRequestTypedDict, + GetClusterResponse, + GetClusterResponseTypedDict, + ) + from .getcollectionimage import ( + GetCollectionImageGlobals, + GetCollectionImageGlobalsTypedDict, + GetCollectionImageRequest, + GetCollectionImageRequestTypedDict, + GetCollectionImageResponse, + GetCollectionImageResponseTypedDict, + ) + from .getcollectionitems import ( + GetCollectionItemsGlobals, + GetCollectionItemsGlobalsTypedDict, + GetCollectionItemsRequest, + GetCollectionItemsRequestTypedDict, + GetCollectionItemsResponse, + GetCollectionItemsResponseTypedDict, + ) + from .getcollections import ( + GetCollectionsGlobals, + GetCollectionsGlobalsTypedDict, + GetCollectionsRequest, + GetCollectionsRequestTypedDict, + GetCollectionsResponse, + GetCollectionsResponseTypedDict, + ) + from .getcolors import ( + GetColorsGlobals, + GetColorsGlobalsTypedDict, + GetColorsMediaContainer, + GetColorsMediaContainerTypedDict, + GetColorsRequest, + GetColorsRequestTypedDict, + GetColorsResponse, + GetColorsResponseBody, + GetColorsResponseBodyTypedDict, + GetColorsResponseTypedDict, + UltraBlurColors, + UltraBlurColorsTypedDict, + ) + from .getcommon import ( + GetCommonGlobals, + GetCommonGlobalsTypedDict, + GetCommonRequest, + GetCommonRequestTypedDict, + GetCommonResponse, + GetCommonResponseTypedDict, + ) + from .getcontinuewatching import ( + GetContinueWatchingGlobals, + GetContinueWatchingGlobalsTypedDict, + GetContinueWatchingMediaContainer, + GetContinueWatchingMediaContainerTypedDict, + GetContinueWatchingRequest, + GetContinueWatchingRequestTypedDict, + GetContinueWatchingResponse, + GetContinueWatchingResponseBody, + GetContinueWatchingResponseBodyTypedDict, + GetContinueWatchingResponseTypedDict, + ) + from .getcountries import ( + Country, + CountryTypedDict, + Flavor, + GetCountriesMediaContainer, + GetCountriesMediaContainerTypedDict, + GetCountriesResponse, + GetCountriesResponseBody, + GetCountriesResponseBodyTypedDict, + GetCountriesResponseTypedDict, + ) + from .getcountrieslineups import ( + GetCountriesLineupsGlobals, + GetCountriesLineupsGlobalsTypedDict, + GetCountriesLineupsRequest, + GetCountriesLineupsRequestTypedDict, + GetCountriesLineupsResponse, + GetCountriesLineupsResponseTypedDict, + ) + from .getcountryregions import ( + GetCountryRegionsCountry, + GetCountryRegionsCountryTypedDict, + GetCountryRegionsGlobals, + GetCountryRegionsGlobalsTypedDict, + GetCountryRegionsMediaContainer, + GetCountryRegionsMediaContainerTypedDict, + GetCountryRegionsRequest, + GetCountryRegionsRequestTypedDict, + GetCountryRegionsResponse, + GetCountryRegionsResponseBody, + GetCountryRegionsResponseBodyTypedDict, + GetCountryRegionsResponseTypedDict, + ) + from .getdevicedetails import ( + GetDeviceDetailsGlobals, + GetDeviceDetailsGlobalsTypedDict, + GetDeviceDetailsRequest, + GetDeviceDetailsRequestTypedDict, + GetDeviceDetailsResponse, + GetDeviceDetailsResponseTypedDict, + ) + from .getdeviceschannels import ( + DeviceChannel, + DeviceChannelTypedDict, + GetDevicesChannelsGlobals, + GetDevicesChannelsGlobalsTypedDict, + GetDevicesChannelsMediaContainer, + GetDevicesChannelsMediaContainerTypedDict, + GetDevicesChannelsRequest, + GetDevicesChannelsRequestTypedDict, + GetDevicesChannelsResponse, + GetDevicesChannelsResponseBody, + GetDevicesChannelsResponseBodyTypedDict, + GetDevicesChannelsResponseTypedDict, + ) + from .getdownloadqueue import ( + GetDownloadQueueDownloadQueue, + GetDownloadQueueDownloadQueueTypedDict, + GetDownloadQueueGlobals, + GetDownloadQueueGlobalsTypedDict, + GetDownloadQueueMediaContainer, + GetDownloadQueueMediaContainerTypedDict, + GetDownloadQueueRequest, + GetDownloadQueueRequestTypedDict, + GetDownloadQueueResponse, + GetDownloadQueueResponseBody, + GetDownloadQueueResponseBodyTypedDict, + GetDownloadQueueResponseTypedDict, + GetDownloadQueueStatus, + ) + from .getdownloadqueueitems import ( + GetDownloadQueueItemsDecisionResult, + GetDownloadQueueItemsDecisionResultTypedDict, + GetDownloadQueueItemsDownloadQueueItem, + GetDownloadQueueItemsDownloadQueueItemTypedDict, + GetDownloadQueueItemsGlobals, + GetDownloadQueueItemsGlobalsTypedDict, + GetDownloadQueueItemsMediaContainer, + GetDownloadQueueItemsMediaContainerTypedDict, + GetDownloadQueueItemsRequest, + GetDownloadQueueItemsRequestTypedDict, + GetDownloadQueueItemsResponse, + GetDownloadQueueItemsResponseBody, + GetDownloadQueueItemsResponseBodyTypedDict, + GetDownloadQueueItemsResponseTypedDict, + GetDownloadQueueItemsStatus, + GetDownloadQueueItemsTranscode, + GetDownloadQueueItemsTranscodeTypedDict, + ) + from .getdownloadqueuemedia import ( + GetDownloadQueueMediaGlobals, + GetDownloadQueueMediaGlobalsTypedDict, + GetDownloadQueueMediaRequest, + GetDownloadQueueMediaRequestTypedDict, + GetDownloadQueueMediaResponse, + GetDownloadQueueMediaResponseTypedDict, + ) + from .getdvr import ( + GetDVRDVR, + GetDVRDVRTypedDict, + GetDVRDVRsMediaContainer, + GetDVRDVRsMediaContainerTypedDict, + GetDVRGlobals, + GetDVRGlobalsTypedDict, + GetDVRMediaContainer, + GetDVRMediaContainerTypedDict, + GetDVRRequest, + GetDVRRequestTypedDict, + GetDVRResponse, + GetDVRResponseBody, + GetDVRResponseBodyTypedDict, + GetDVRResponseTypedDict, + ) + from .getextras import ( + GetExtrasGlobals, + GetExtrasGlobalsTypedDict, + GetExtrasRequest, + GetExtrasRequestTypedDict, + GetExtrasResponse, + GetExtrasResponseTypedDict, + ) + from .getfile import ( + GetFileGlobals, + GetFileGlobalsTypedDict, + GetFileRequest, + GetFileRequestTypedDict, + GetFileResponse, + GetFileResponseTypedDict, + ) + from .getfirstcharacters import ( + GetFirstCharactersDirectory, + GetFirstCharactersDirectoryTypedDict, + GetFirstCharactersGlobals, + GetFirstCharactersGlobalsTypedDict, + GetFirstCharactersMediaContainer, + GetFirstCharactersMediaContainerTypedDict, + GetFirstCharactersRequest, + GetFirstCharactersRequestTypedDict, + GetFirstCharactersResponse, + GetFirstCharactersResponseBody, + GetFirstCharactersResponseBodyTypedDict, + GetFirstCharactersResponseTypedDict, + ) + from .getfolders import ( + GetFoldersDirectory, + GetFoldersDirectoryTypedDict, + GetFoldersGlobals, + GetFoldersGlobalsTypedDict, + GetFoldersMediaContainer, + GetFoldersMediaContainerTypedDict, + GetFoldersRequest, + GetFoldersRequestTypedDict, + GetFoldersResponse, + GetFoldersResponseBody, + GetFoldersResponseBodyTypedDict, + GetFoldersResponseTypedDict, + ) + from .gethistoryitem import ( + GetHistoryItemGlobals, + GetHistoryItemGlobalsTypedDict, + GetHistoryItemRequest, + GetHistoryItemRequestTypedDict, + GetHistoryItemResponse, + GetHistoryItemResponseTypedDict, + ) + from .gethubitems import ( + GetHubItemsGlobals, + GetHubItemsGlobalsTypedDict, + GetHubItemsRequest, + GetHubItemsRequestTypedDict, + GetHubItemsResponse, + GetHubItemsResponseBody, + GetHubItemsResponseBodyTypedDict, + GetHubItemsResponseTypedDict, + ) + from .getidentity import ( + GetIdentityMediaContainer, + GetIdentityMediaContainerTypedDict, + GetIdentityResponse, + GetIdentityResponseBody, + GetIdentityResponseBodyTypedDict, + GetIdentityResponseTypedDict, + ) + from .getimage import ( + GetImageGlobals, + GetImageGlobalsTypedDict, + GetImageRequest, + GetImageRequestTypedDict, + GetImageResponse, + GetImageResponseTypedDict, + ) + from .getimagefrombif import ( + GetImageFromBifGlobals, + GetImageFromBifGlobalsTypedDict, + GetImageFromBifRequest, + GetImageFromBifRequestTypedDict, + GetImageFromBifResponse, + GetImageFromBifResponseTypedDict, + PathParamIndex, + ) + from .getitemartwork import ( + GetItemArtworkGlobals, + GetItemArtworkGlobalsTypedDict, + GetItemArtworkPathParamElement, + GetItemArtworkRequest, + GetItemArtworkRequestTypedDict, + GetItemArtworkResponse, + GetItemArtworkResponseTypedDict, + ) + from .getitemdecision import ( + GetItemDecisionGlobals, + GetItemDecisionGlobalsTypedDict, + GetItemDecisionRequest, + GetItemDecisionRequestTypedDict, + GetItemDecisionResponse, + GetItemDecisionResponseTypedDict, + ) + from .getitemtree import ( + GetItemTreeGlobals, + GetItemTreeGlobalsTypedDict, + GetItemTreeRequest, + GetItemTreeRequestTypedDict, + GetItemTreeResponse, + GetItemTreeResponseTypedDict, + ) + from .getlibrarydetails import ( + GetLibraryDetailsGlobals, + GetLibraryDetailsGlobalsTypedDict, GetLibraryDetailsMediaContainer, GetLibraryDetailsMediaContainerTypedDict, - GetLibraryDetailsOperator, - GetLibraryDetailsOperatorTypedDict, GetLibraryDetailsRequest, GetLibraryDetailsRequestTypedDict, GetLibraryDetailsResponse, GetLibraryDetailsResponseBody, GetLibraryDetailsResponseBodyTypedDict, GetLibraryDetailsResponseTypedDict, - GetLibraryDetailsSort, - GetLibraryDetailsSortTypedDict, - GetLibraryDetailsType, - GetLibraryDetailsTypeTypedDict, - IncludeDetails, ) - from .get_library_items import ( - Attributes, - AttributesTypedDict, - Chapter, - ChapterTypedDict, - Extras, - ExtrasTypedDict, - FlattenSeasons, - GetLibraryItemsActiveDirection, - GetLibraryItemsCollection, - GetLibraryItemsCollectionTypedDict, - GetLibraryItemsCountry, - GetLibraryItemsCountryTypedDict, - GetLibraryItemsDefaultDirection, - GetLibraryItemsDirector, - GetLibraryItemsDirectorTypedDict, - GetLibraryItemsField, - GetLibraryItemsFieldType, - GetLibraryItemsFieldTypeTypedDict, - GetLibraryItemsFieldTypedDict, - GetLibraryItemsFilter, - GetLibraryItemsFilterTypedDict, - GetLibraryItemsGenre, - GetLibraryItemsGenreTypedDict, - GetLibraryItemsGuids, - GetLibraryItemsGuidsTypedDict, - GetLibraryItemsHasThumbnail, - GetLibraryItemsImage, - GetLibraryItemsImageTypedDict, - GetLibraryItemsLibraryOptimizedForStreaming, - GetLibraryItemsLibraryOptimizedForStreamingTypedDict, - GetLibraryItemsLibraryResponseType, - GetLibraryItemsLibraryType, - GetLibraryItemsLibraryTypeTypedDict, - GetLibraryItemsLocation, - GetLibraryItemsLocationTypedDict, - GetLibraryItemsMedia, - GetLibraryItemsMediaContainer, - GetLibraryItemsMediaContainerTypedDict, - GetLibraryItemsMediaTypedDict, - GetLibraryItemsMeta, - GetLibraryItemsMetaTypedDict, - GetLibraryItemsMetadata, - GetLibraryItemsMetadataTypedDict, - GetLibraryItemsOperator, - GetLibraryItemsOperatorTypedDict, - GetLibraryItemsOptimizedForStreaming, - GetLibraryItemsOptimizedForStreaming1, - GetLibraryItemsOptimizedForStreamingTypedDict, - GetLibraryItemsPart, - GetLibraryItemsPartTypedDict, - GetLibraryItemsProducer, - GetLibraryItemsProducerTypedDict, - GetLibraryItemsQueryParamIncludeMeta, - GetLibraryItemsQueryParamType, + from .getlibraryitems import ( + GetLibraryItemsGlobals, + GetLibraryItemsGlobalsTypedDict, GetLibraryItemsRequest, GetLibraryItemsRequestTypedDict, GetLibraryItemsResponse, - GetLibraryItemsResponseBody, - GetLibraryItemsResponseBodyTypedDict, GetLibraryItemsResponseTypedDict, - GetLibraryItemsRole, - GetLibraryItemsRoleTypedDict, - GetLibraryItemsSimilar, - GetLibraryItemsSimilarTypedDict, - GetLibraryItemsSort, - GetLibraryItemsSortTypedDict, - GetLibraryItemsType, - GetLibraryItemsUltraBlurColors, - GetLibraryItemsUltraBlurColorsTypedDict, - GetLibraryItemsWriter, - GetLibraryItemsWriterTypedDict, - IncludeGuids, - Marker, - MarkerTypedDict, - OptimizedForStreaming1, - Ratings, - RatingsTypedDict, - ShowOrdering, - Tag, ) - from .get_library_sections_all import ( - GetLibrarySectionsAllActiveDirection, - GetLibrarySectionsAllCollection, - GetLibrarySectionsAllCollectionTypedDict, - GetLibrarySectionsAllCountry, - GetLibrarySectionsAllCountryTypedDict, - GetLibrarySectionsAllDefaultDirection, - GetLibrarySectionsAllDirector, - GetLibrarySectionsAllDirectorTypedDict, - GetLibrarySectionsAllField, - GetLibrarySectionsAllFieldType, - GetLibrarySectionsAllFieldTypeTypedDict, - GetLibrarySectionsAllFieldTypedDict, - GetLibrarySectionsAllFilter, - GetLibrarySectionsAllFilterTypedDict, - GetLibrarySectionsAllGenre, - GetLibrarySectionsAllGenreTypedDict, - GetLibrarySectionsAllGuids, - GetLibrarySectionsAllGuidsTypedDict, - GetLibrarySectionsAllHasThumbnail, - GetLibrarySectionsAllImage, - GetLibrarySectionsAllImageTypedDict, - GetLibrarySectionsAllLibraryOptimizedForStreaming, - GetLibrarySectionsAllLibraryOptimizedForStreamingTypedDict, - GetLibrarySectionsAllLibraryResponseType, - GetLibrarySectionsAllLibraryType, - GetLibrarySectionsAllMedia, - GetLibrarySectionsAllMediaContainer, - GetLibrarySectionsAllMediaContainerTypedDict, - GetLibrarySectionsAllMediaTypedDict, - GetLibrarySectionsAllMeta, - GetLibrarySectionsAllMetaTypedDict, - GetLibrarySectionsAllMetadata, - GetLibrarySectionsAllMetadataTypedDict, - GetLibrarySectionsAllOperator, - GetLibrarySectionsAllOperatorTypedDict, - GetLibrarySectionsAllOptimizedForStreaming, - GetLibrarySectionsAllOptimizedForStreaming1, - GetLibrarySectionsAllOptimizedForStreamingLibrary1, - GetLibrarySectionsAllOptimizedForStreamingTypedDict, - GetLibrarySectionsAllPart, - GetLibrarySectionsAllPartTypedDict, - GetLibrarySectionsAllQueryParamIncludeMeta, - GetLibrarySectionsAllQueryParamType, - GetLibrarySectionsAllRequest, - GetLibrarySectionsAllRequestTypedDict, - GetLibrarySectionsAllResponse, - GetLibrarySectionsAllResponseBody, - GetLibrarySectionsAllResponseBodyTypedDict, - GetLibrarySectionsAllResponseTypedDict, - GetLibrarySectionsAllRole, - GetLibrarySectionsAllRoleTypedDict, - GetLibrarySectionsAllSort, - GetLibrarySectionsAllSortTypedDict, - GetLibrarySectionsAllStream, - GetLibrarySectionsAllStreamTypedDict, - GetLibrarySectionsAllType, - GetLibrarySectionsAllTypeTypedDict, - GetLibrarySectionsAllUltraBlurColors, - GetLibrarySectionsAllUltraBlurColorsTypedDict, - GetLibrarySectionsAllWriter, - GetLibrarySectionsAllWriterTypedDict, - IncludeAdvanced, - QueryParamIncludeCollections, - QueryParamIncludeExternalMedia, - QueryParamIncludeGuids, + from .getlibrarymatches import ( + GetLibraryMatchesGlobals, + GetLibraryMatchesGlobalsTypedDict, + GetLibraryMatchesRequest, + GetLibraryMatchesRequestTypedDict, + GetLibraryMatchesResponse, + GetLibraryMatchesResponseTypedDict, ) - from .get_media_arts import ( - GetMediaArtsMediaContainer, - GetMediaArtsMediaContainerTypedDict, - GetMediaArtsMetadata, - GetMediaArtsMetadataTypedDict, - GetMediaArtsRequest, - GetMediaArtsRequestTypedDict, - GetMediaArtsResponse, - GetMediaArtsResponseBody, - GetMediaArtsResponseBodyTypedDict, - GetMediaArtsResponseTypedDict, + from .getlineup import ( + GetLineupGlobals, + GetLineupGlobalsTypedDict, + GetLineupRequest, + GetLineupRequestTypedDict, + GetLineupResponse, + GetLineupResponseTypedDict, ) - from .get_media_meta_data import ( - GetMediaMetaDataAttributes, - GetMediaMetaDataAttributesTypedDict, - GetMediaMetaDataChapter, - GetMediaMetaDataChapterTypedDict, - GetMediaMetaDataCountry, - GetMediaMetaDataCountryTypedDict, - GetMediaMetaDataDirector, - GetMediaMetaDataDirectorTypedDict, - GetMediaMetaDataExtras, - GetMediaMetaDataExtrasTypedDict, - GetMediaMetaDataGenre, - GetMediaMetaDataGenreTypedDict, - GetMediaMetaDataGuids, - GetMediaMetaDataGuidsTypedDict, - GetMediaMetaDataHasThumbnail, - GetMediaMetaDataImage, - GetMediaMetaDataImageTypedDict, - GetMediaMetaDataLibraryOptimizedForStreaming, - GetMediaMetaDataLibraryOptimizedForStreamingTypedDict, - GetMediaMetaDataLibraryType, - GetMediaMetaDataLocation, - GetMediaMetaDataLocationTypedDict, - GetMediaMetaDataMarker, - GetMediaMetaDataMarkerTypedDict, - GetMediaMetaDataMedia, - GetMediaMetaDataMediaContainer, - GetMediaMetaDataMediaContainerTypedDict, - GetMediaMetaDataMediaTypedDict, - GetMediaMetaDataMetadata, - GetMediaMetaDataMetadataTypedDict, - GetMediaMetaDataOptimizedForStreaming, - GetMediaMetaDataOptimizedForStreaming1, - GetMediaMetaDataOptimizedForStreamingLibrary1, - GetMediaMetaDataOptimizedForStreamingTypedDict, - GetMediaMetaDataPart, - GetMediaMetaDataPartTypedDict, - GetMediaMetaDataProducer, - GetMediaMetaDataProducerTypedDict, - GetMediaMetaDataRatings, - GetMediaMetaDataRatingsTypedDict, - GetMediaMetaDataRequest, - GetMediaMetaDataRequestTypedDict, - GetMediaMetaDataResponse, - GetMediaMetaDataResponseBody, - GetMediaMetaDataResponseBodyTypedDict, - GetMediaMetaDataResponseTypedDict, - GetMediaMetaDataRole, - GetMediaMetaDataRoleTypedDict, - GetMediaMetaDataSimilar, - GetMediaMetaDataSimilarTypedDict, - GetMediaMetaDataStream, - GetMediaMetaDataStreamTypedDict, - GetMediaMetaDataType, - GetMediaMetaDataUltraBlurColors, - GetMediaMetaDataUltraBlurColorsTypedDict, - GetMediaMetaDataWriter, - GetMediaMetaDataWriterTypedDict, + from .getlineupchannels import ( + GetLineupChannelsGlobals, + GetLineupChannelsGlobalsTypedDict, + GetLineupChannelsMediaContainer, + GetLineupChannelsMediaContainerTypedDict, + GetLineupChannelsRequest, + GetLineupChannelsRequestTypedDict, + GetLineupChannelsResponse, + GetLineupChannelsResponseBody, + GetLineupChannelsResponseBodyTypedDict, + GetLineupChannelsResponseTypedDict, + Lineup, + LineupType, + LineupTypedDict, ) - from .get_media_posters import ( - GetMediaPostersMediaContainer, - GetMediaPostersMediaContainerTypedDict, - GetMediaPostersMetadata, - GetMediaPostersMetadataTypedDict, - GetMediaPostersRequest, - GetMediaPostersRequestTypedDict, - GetMediaPostersResponse, - GetMediaPostersResponseBody, - GetMediaPostersResponseBodyTypedDict, - GetMediaPostersResponseTypedDict, + from .getlivetvsession import ( + GetLiveTVSessionGlobals, + GetLiveTVSessionGlobalsTypedDict, + GetLiveTVSessionRequest, + GetLiveTVSessionRequestTypedDict, + GetLiveTVSessionResponse, + GetLiveTVSessionResponseTypedDict, ) - from .get_media_providers import ( - Action, - ActionTypedDict, - Feature, - FeatureTypedDict, - GetMediaProvidersDirectory, - GetMediaProvidersDirectoryTypedDict, - GetMediaProvidersMediaContainer, - GetMediaProvidersMediaContainerTypedDict, - GetMediaProvidersRequest, - GetMediaProvidersRequestTypedDict, - GetMediaProvidersResponse, - GetMediaProvidersResponseBody, - GetMediaProvidersResponseBodyTypedDict, - GetMediaProvidersResponseTypedDict, - MediaProvider, - MediaProviderTypedDict, - Pivot, - PivotTypedDict, + from .getmediapart import ( + GetMediaPartGlobals, + GetMediaPartGlobalsTypedDict, + GetMediaPartRequest, + GetMediaPartRequestTypedDict, + GetMediaPartResponse, + GetMediaPartResponseTypedDict, ) - from .get_recently_added import ( - Collection, - CollectionTypedDict, - Country, - CountryTypedDict, - Director, - DirectorTypedDict, - Genre, - GenreTypedDict, - GetRecentlyAddedActiveDirection, - GetRecentlyAddedDefaultDirection, - GetRecentlyAddedField, - GetRecentlyAddedFieldType, - GetRecentlyAddedFieldTypeTypedDict, - GetRecentlyAddedFieldTypedDict, - GetRecentlyAddedFilter, - GetRecentlyAddedFilterTypedDict, - GetRecentlyAddedHubsResponseType, - GetRecentlyAddedHubsType, - GetRecentlyAddedImage, - GetRecentlyAddedImageTypedDict, - GetRecentlyAddedMediaContainer, - GetRecentlyAddedMediaContainerTypedDict, - GetRecentlyAddedMetadata, - GetRecentlyAddedMetadataTypedDict, - GetRecentlyAddedOperator, - GetRecentlyAddedOperatorTypedDict, - GetRecentlyAddedOptimizedForStreaming, - GetRecentlyAddedOptimizedForStreaming1, - GetRecentlyAddedOptimizedForStreamingTypedDict, - GetRecentlyAddedRequest, - GetRecentlyAddedRequestTypedDict, - GetRecentlyAddedResponse, - GetRecentlyAddedResponseBody, - GetRecentlyAddedResponseBodyTypedDict, - GetRecentlyAddedResponseTypedDict, - GetRecentlyAddedSort, - GetRecentlyAddedSortTypedDict, - GetRecentlyAddedType, - GetRecentlyAddedTypeTypedDict, - Guids, - GuidsTypedDict, - HasThumbnail, - IncludeMeta, - Location, - LocationTypedDict, - Media, - MediaTypedDict, - Meta, - MetaTypedDict, - One, - OptimizedForStreaming, - OptimizedForStreamingTypedDict, - Part, - PartTypedDict, - Producer, - ProducerTypedDict, - Rating, - RatingTypedDict, - Role, - RoleTypedDict, - Similar, - SimilarTypedDict, - Stream, - StreamTypedDict, - Type, - UltraBlurColors, - UltraBlurColorsTypedDict, - Writer, - WriterTypedDict, + from .getmetadatahubs import ( + GetMetadataHubsGlobals, + GetMetadataHubsGlobalsTypedDict, + GetMetadataHubsRequest, + GetMetadataHubsRequestTypedDict, + GetMetadataHubsResponse, + GetMetadataHubsResponseTypedDict, ) - from .get_recently_added_library import ( - ActiveDirection, - DefaultDirection, - FieldT, - FieldTTypedDict, - FieldType, - FieldTypeTypedDict, - GetRecentlyAddedLibraryCountry, - GetRecentlyAddedLibraryCountryTypedDict, - GetRecentlyAddedLibraryDirector, - GetRecentlyAddedLibraryDirectorTypedDict, - GetRecentlyAddedLibraryFilter, - GetRecentlyAddedLibraryFilterTypedDict, - GetRecentlyAddedLibraryGenre, - GetRecentlyAddedLibraryGenreTypedDict, - GetRecentlyAddedLibraryMedia, - GetRecentlyAddedLibraryMediaContainer, - GetRecentlyAddedLibraryMediaContainerTypedDict, - GetRecentlyAddedLibraryMediaTypedDict, - GetRecentlyAddedLibraryMetadata, - GetRecentlyAddedLibraryMetadataTypedDict, - GetRecentlyAddedLibraryPart, - GetRecentlyAddedLibraryPartTypedDict, - GetRecentlyAddedLibraryRequest, - GetRecentlyAddedLibraryRequestTypedDict, - GetRecentlyAddedLibraryResponse, - GetRecentlyAddedLibraryResponseBody, - GetRecentlyAddedLibraryResponseBodyTypedDict, - GetRecentlyAddedLibraryResponseTypedDict, - GetRecentlyAddedLibraryRole, - GetRecentlyAddedLibraryRoleTypedDict, - GetRecentlyAddedLibraryType, - GetRecentlyAddedLibraryTypeTypedDict, - GetRecentlyAddedLibraryWriter, - GetRecentlyAddedLibraryWriterTypedDict, - Operator, - OperatorTypedDict, - QueryParamIncludeMeta, - QueryParamType, - Sort, - SortTypedDict, + from .getmetadataitem import ( + GetMetadataItemGlobals, + GetMetadataItemGlobalsTypedDict, + GetMetadataItemRequest, + GetMetadataItemRequestTypedDict, + GetMetadataItemResponse, + GetMetadataItemResponseTypedDict, ) - from .get_refresh_library_metadata import ( - Force, - GetRefreshLibraryMetadataRequest, - GetRefreshLibraryMetadataRequestTypedDict, - GetRefreshLibraryMetadataResponse, - GetRefreshLibraryMetadataResponseTypedDict, + from .getnotifications import ( + GetNotificationsGlobals, + GetNotificationsGlobalsTypedDict, + GetNotificationsRequest, + GetNotificationsRequestTypedDict, + GetNotificationsResponse, + GetNotificationsResponseTypedDict, ) - from .get_search_all_libraries import ( - GetSearchAllLibrariesCountry, - GetSearchAllLibrariesCountryTypedDict, - GetSearchAllLibrariesDirector, - GetSearchAllLibrariesDirectorTypedDict, - GetSearchAllLibrariesDirectory, - GetSearchAllLibrariesDirectoryTypedDict, - GetSearchAllLibrariesFlattenSeasons, - GetSearchAllLibrariesGenre, - GetSearchAllLibrariesGenreTypedDict, - GetSearchAllLibrariesGuids, - GetSearchAllLibrariesGuidsTypedDict, - GetSearchAllLibrariesHasThumbnail, - GetSearchAllLibrariesImage, - GetSearchAllLibrariesImageTypedDict, - GetSearchAllLibrariesLibraryOptimizedForStreaming, - GetSearchAllLibrariesLibraryOptimizedForStreamingTypedDict, - GetSearchAllLibrariesLibraryType, - GetSearchAllLibrariesLocation, - GetSearchAllLibrariesLocationTypedDict, - GetSearchAllLibrariesMedia, - GetSearchAllLibrariesMediaContainer, - GetSearchAllLibrariesMediaContainerTypedDict, - GetSearchAllLibrariesMediaTypedDict, - GetSearchAllLibrariesMetadata, - GetSearchAllLibrariesMetadataTypedDict, - GetSearchAllLibrariesOptimizedForStreaming, - GetSearchAllLibrariesOptimizedForStreaming1, - GetSearchAllLibrariesOptimizedForStreamingLibrary1, - GetSearchAllLibrariesOptimizedForStreamingTypedDict, - GetSearchAllLibrariesPart, - GetSearchAllLibrariesPartTypedDict, - GetSearchAllLibrariesQueryParamIncludeCollections, - GetSearchAllLibrariesQueryParamIncludeExternalMedia, - GetSearchAllLibrariesRequest, - GetSearchAllLibrariesRequestTypedDict, - GetSearchAllLibrariesResponse, - GetSearchAllLibrariesResponseBody, - GetSearchAllLibrariesResponseBodyTypedDict, - GetSearchAllLibrariesResponseTypedDict, - GetSearchAllLibrariesRole, - GetSearchAllLibrariesRoleTypedDict, - GetSearchAllLibrariesShowOrdering, - GetSearchAllLibrariesType, - GetSearchAllLibrariesUltraBlurColors, - GetSearchAllLibrariesUltraBlurColorsTypedDict, - GetSearchAllLibrariesWriter, - GetSearchAllLibrariesWriterTypedDict, - SearchResult, - SearchResultTypedDict, - SearchTypes, + from .getpartindex import ( + GetPartIndexGlobals, + GetPartIndexGlobalsTypedDict, + GetPartIndexRequest, + GetPartIndexRequestTypedDict, + GetPartIndexResponse, + GetPartIndexResponseTypedDict, + Index, ) - from .get_search_library import ( - GetSearchLibraryMediaContainer, - GetSearchLibraryMediaContainerTypedDict, - GetSearchLibraryMetadata, - GetSearchLibraryMetadataTypedDict, - GetSearchLibraryQueryParamType, - GetSearchLibraryRequest, - GetSearchLibraryRequestTypedDict, - GetSearchLibraryResponse, - GetSearchLibraryResponseBody, - GetSearchLibraryResponseBodyTypedDict, - GetSearchLibraryResponseTypedDict, + from .getperson import ( + GetPersonGlobals, + GetPersonGlobalsTypedDict, + GetPersonMediaContainer, + GetPersonMediaContainerTypedDict, + GetPersonRequest, + GetPersonRequestTypedDict, + GetPersonResponse, + GetPersonResponseBody, + GetPersonResponseBodyTypedDict, + GetPersonResponseTypedDict, ) - from .get_server_identity import ( - GetServerIdentityMediaContainer, - GetServerIdentityMediaContainerTypedDict, - GetServerIdentityResponse, - GetServerIdentityResponseBody, - GetServerIdentityResponseBodyTypedDict, - GetServerIdentityResponseTypedDict, + from .getplaylist import ( + GetPlaylistGlobals, + GetPlaylistGlobalsTypedDict, + GetPlaylistRequest, + GetPlaylistRequestTypedDict, + GetPlaylistResponse, + GetPlaylistResponseTypedDict, ) - from .get_server_resources import ( - Connections, - ConnectionsTypedDict, - GET_SERVER_RESOURCES_SERVERS, - GetServerResourcesRequest, - GetServerResourcesRequestTypedDict, - GetServerResourcesResponse, - GetServerResourcesResponseTypedDict, - IncludeHTTPS, - IncludeIPv6, - IncludeRelay, - PlexDevice, - PlexDeviceTypedDict, - Protocol, + from .getplaylistgenerator import ( + AdvancedSubtitles, + GetPlaylistGeneratorDevice, + GetPlaylistGeneratorDeviceTypedDict, + GetPlaylistGeneratorGlobals, + GetPlaylistGeneratorGlobalsTypedDict, + GetPlaylistGeneratorItem, + GetPlaylistGeneratorItemTypedDict, + GetPlaylistGeneratorLocation, + GetPlaylistGeneratorLocationTypedDict, + GetPlaylistGeneratorMediaContainer, + GetPlaylistGeneratorMediaContainerTypedDict, + GetPlaylistGeneratorPolicy, + GetPlaylistGeneratorPolicyTypedDict, + GetPlaylistGeneratorRequest, + GetPlaylistGeneratorRequestTypedDict, + GetPlaylistGeneratorResponse, + GetPlaylistGeneratorResponseBody, + GetPlaylistGeneratorResponseBodyTypedDict, + GetPlaylistGeneratorResponseTypedDict, + GetPlaylistGeneratorScope, + GetPlaylistGeneratorState, + GetPlaylistGeneratorStatus, + GetPlaylistGeneratorStatusTypedDict, + GetPlaylistGeneratorSubtitles, + GetPlaylistGeneratorType, + MediaSettings, + MediaSettingsTypedDict, ) - from .get_thumb_image import ( - GetThumbImageRequest, - GetThumbImageRequestTypedDict, - GetThumbImageResponse, - GetThumbImageResponseTypedDict, + from .getplaylistgeneratoritems import ( + GetPlaylistGeneratorItemsGlobals, + GetPlaylistGeneratorItemsGlobalsTypedDict, + GetPlaylistGeneratorItemsMediaContainer, + GetPlaylistGeneratorItemsMediaContainerTypedDict, + GetPlaylistGeneratorItemsMetadata, + GetPlaylistGeneratorItemsMetadataTypedDict, + GetPlaylistGeneratorItemsRequest, + GetPlaylistGeneratorItemsRequestTypedDict, + GetPlaylistGeneratorItemsResponse, + GetPlaylistGeneratorItemsResponseBody, + GetPlaylistGeneratorItemsResponseBodyTypedDict, + GetPlaylistGeneratorItemsResponseTypedDict, + ProcessingState, + ProcessingStateContext, ) - from .get_users import ( - AllLibraries, - AllowCameraUpload, - AllowChannels, - AllowSubtitleAdmin, - AllowSync, - AllowTuners, - GET_USERS_SERVERS, - GetUsersMediaContainer, - GetUsersMediaContainerTypedDict, - GetUsersRequest, - GetUsersRequestTypedDict, - GetUsersResponse, - GetUsersResponseBody, - GetUsersResponseBodyTypedDict, - GetUsersResponseTypedDict, - GetUsersServer, - GetUsersServerTypedDict, - Home, - Owned, - Pending, - Protected, - Restricted, - User, - UserTypedDict, + from .getplaylistgenerators import ( + GetPlaylistGeneratorsGlobals, + GetPlaylistGeneratorsGlobalsTypedDict, + GetPlaylistGeneratorsMediaContainer, + GetPlaylistGeneratorsMediaContainerTypedDict, + GetPlaylistGeneratorsRequest, + GetPlaylistGeneratorsRequestTypedDict, + GetPlaylistGeneratorsResponse, + GetPlaylistGeneratorsResponseBody, + GetPlaylistGeneratorsResponseBodyTypedDict, + GetPlaylistGeneratorsResponseTypedDict, + GetPlaylistGeneratorsType, + PlayQueueGenerator, + PlayQueueGeneratorTypedDict, ) - from .get_watch_list import ( - Filter, - GET_WATCH_LIST_SERVERS, - GetWatchListRequest, - GetWatchListRequestTypedDict, - GetWatchListResponse, - GetWatchListResponseBody, - GetWatchListResponseBodyTypedDict, - GetWatchListResponseTypedDict, - Image, - ImageTypedDict, - IncludeCollections, - IncludeExternalMedia, - Libtype, - Metadata, - MetadataTypedDict, + from .getplaylistitems import ( + GetPlaylistItemsGlobals, + GetPlaylistItemsGlobalsTypedDict, + GetPlaylistItemsRequest, + GetPlaylistItemsRequestTypedDict, + GetPlaylistItemsResponse, + GetPlaylistItemsResponseTypedDict, ) - from .getavailableclients import ( - GetAvailableClientsMediaContainer, - GetAvailableClientsMediaContainerTypedDict, - GetAvailableClientsResponse, - GetAvailableClientsResponseBody, - GetAvailableClientsResponseBodyTypedDict, - GetAvailableClientsResponseTypedDict, - Server, - ServerTypedDict, + from .getplayqueue import ( + GetPlayQueueGlobals, + GetPlayQueueGlobalsTypedDict, + GetPlayQueueRequest, + GetPlayQueueRequestTypedDict, + GetPlayQueueResponse, + GetPlayQueueResponseTypedDict, ) - from .getbandwidthstatistics import ( - GetBandwidthStatisticsAccount, - GetBandwidthStatisticsAccountTypedDict, - GetBandwidthStatisticsDevice, - GetBandwidthStatisticsDeviceTypedDict, - GetBandwidthStatisticsMediaContainer, - GetBandwidthStatisticsMediaContainerTypedDict, - GetBandwidthStatisticsRequest, - GetBandwidthStatisticsRequestTypedDict, - GetBandwidthStatisticsResponse, - GetBandwidthStatisticsResponseBody, - GetBandwidthStatisticsResponseBodyTypedDict, - GetBandwidthStatisticsResponseTypedDict, - StatisticsBandwidth, - StatisticsBandwidthTypedDict, + from .getpostplayhubs import ( + GetPostplayHubsGlobals, + GetPostplayHubsGlobalsTypedDict, + GetPostplayHubsRequest, + GetPostplayHubsRequestTypedDict, + GetPostplayHubsResponse, + GetPostplayHubsResponseTypedDict, ) - from .getbutlertasks import ( + from .getpreference import ( + GetPreferenceGlobals, + GetPreferenceGlobalsTypedDict, + GetPreferenceRequest, + GetPreferenceRequestTypedDict, + GetPreferenceResponse, + GetPreferenceResponseTypedDict, + ) + from .getpromotedhubs import ( + GetPromotedHubsGlobals, + GetPromotedHubsGlobalsTypedDict, + GetPromotedHubsMediaContainer, + GetPromotedHubsMediaContainerTypedDict, + GetPromotedHubsRequest, + GetPromotedHubsRequestTypedDict, + GetPromotedHubsResponse, + GetPromotedHubsResponseBody, + GetPromotedHubsResponseBodyTypedDict, + GetPromotedHubsResponseTypedDict, + ) + from .getrandomartwork import ( + GetRandomArtworkGlobals, + GetRandomArtworkGlobalsTypedDict, + GetRandomArtworkRequest, + GetRandomArtworkRequestTypedDict, + GetRandomArtworkResponse, + GetRandomArtworkResponseTypedDict, + ) + from .getrelatedhubs import ( + GetRelatedHubsGlobals, + GetRelatedHubsGlobalsTypedDict, + GetRelatedHubsRequest, + GetRelatedHubsRequestTypedDict, + GetRelatedHubsResponse, + GetRelatedHubsResponseTypedDict, + ) + from .getrelateditems import ( + GetRelatedItemsGlobals, + GetRelatedItemsGlobalsTypedDict, + GetRelatedItemsMediaContainer, + GetRelatedItemsMediaContainerTypedDict, + GetRelatedItemsRequest, + GetRelatedItemsRequestTypedDict, + GetRelatedItemsResponse, + GetRelatedItemsResponseBody, + GetRelatedItemsResponseBodyTypedDict, + GetRelatedItemsResponseTypedDict, + ) + from .getscheduledrecordings import ( + GetScheduledRecordingsMediaContainer, + GetScheduledRecordingsMediaContainerTypedDict, + GetScheduledRecordingsResponse, + GetScheduledRecordingsResponseBody, + GetScheduledRecordingsResponseBodyTypedDict, + GetScheduledRecordingsResponseTypedDict, + ) + from .getsectionfilters import ( + GetSectionFiltersGlobals, + GetSectionFiltersGlobalsTypedDict, + GetSectionFiltersMediaContainer, + GetSectionFiltersMediaContainerTypedDict, + GetSectionFiltersRequest, + GetSectionFiltersRequestTypedDict, + GetSectionFiltersResponse, + GetSectionFiltersResponseBody, + GetSectionFiltersResponseBodyTypedDict, + GetSectionFiltersResponseTypedDict, + ) + from .getsectionhubs import ( + GetSectionHubsGlobals, + GetSectionHubsGlobalsTypedDict, + GetSectionHubsMediaContainer, + GetSectionHubsMediaContainerTypedDict, + GetSectionHubsRequest, + GetSectionHubsRequestTypedDict, + GetSectionHubsResponse, + GetSectionHubsResponseBody, + GetSectionHubsResponseBodyTypedDict, + GetSectionHubsResponseTypedDict, + ) + from .getsectionimage import ( + GetSectionImageGlobals, + GetSectionImageGlobalsTypedDict, + GetSectionImageRequest, + GetSectionImageRequestTypedDict, + GetSectionImageResponse, + GetSectionImageResponseTypedDict, + ) + from .getsectionpreferences import ( + GetSectionPreferencesGlobals, + GetSectionPreferencesGlobalsTypedDict, + GetSectionPreferencesRequest, + GetSectionPreferencesRequestTypedDict, + GetSectionPreferencesResponse, + GetSectionPreferencesResponseTypedDict, + ) + from .getsections import ( + GetSectionsMediaContainer, + GetSectionsMediaContainerTypedDict, + GetSectionsResponse, + GetSectionsResponseBody, + GetSectionsResponseBodyTypedDict, + GetSectionsResponseTypedDict, + ) + from .getsectionsprefs import ( + GetSectionsPrefsGlobals, + GetSectionsPrefsGlobalsTypedDict, + GetSectionsPrefsRequest, + GetSectionsPrefsRequestTypedDict, + GetSectionsPrefsResponse, + GetSectionsPrefsResponseTypedDict, + ) + from .getserverinfo import ( + GetServerInfoGlobals, + GetServerInfoGlobalsTypedDict, + GetServerInfoRequest, + GetServerInfoRequestTypedDict, + GetServerInfoResponse, + GetServerInfoResponseTypedDict, + ) + from .getsessionplaylistindex import ( + GetSessionPlaylistIndexGlobals, + GetSessionPlaylistIndexGlobalsTypedDict, + GetSessionPlaylistIndexRequest, + GetSessionPlaylistIndexRequestTypedDict, + GetSessionPlaylistIndexResponse, + GetSessionPlaylistIndexResponseTypedDict, + ) + from .getsessions import GetSessionsResponse, GetSessionsResponseTypedDict + from .getsessionsegment import ( + GetSessionSegmentGlobals, + GetSessionSegmentGlobalsTypedDict, + GetSessionSegmentRequest, + GetSessionSegmentRequestTypedDict, + GetSessionSegmentResponse, + GetSessionSegmentResponseTypedDict, + ) + from .getsonicallysimilar import ( + GetSonicallySimilarGlobals, + GetSonicallySimilarGlobalsTypedDict, + GetSonicallySimilarRequest, + GetSonicallySimilarRequestTypedDict, + GetSonicallySimilarResponse, + GetSonicallySimilarResponseTypedDict, + ) + from .getsonicpath import ( + GetSonicPathGlobals, + GetSonicPathGlobalsTypedDict, + GetSonicPathRequest, + GetSonicPathRequestTypedDict, + GetSonicPathResponse, + GetSonicPathResponseTypedDict, + ) + from .getsourceconnectioninformation import ( + Connection, + ConnectionTypedDict, + Device, + DeviceTypedDict, + GetSourceConnectionInformationGlobals, + GetSourceConnectionInformationGlobalsTypedDict, + GetSourceConnectionInformationMediaContainer, + GetSourceConnectionInformationMediaContainerTypedDict, + GetSourceConnectionInformationRequest, + GetSourceConnectionInformationRequestTypedDict, + GetSourceConnectionInformationResponse, + GetSourceConnectionInformationResponseBody, + GetSourceConnectionInformationResponseBodyTypedDict, + GetSourceConnectionInformationResponseTypedDict, + ) + from .getstream import ( + GetStreamGlobals, + GetStreamGlobalsTypedDict, + GetStreamRequest, + GetStreamRequestTypedDict, + GetStreamResponse, + GetStreamResponseTypedDict, + ) + from .getstreamlevels import ( + GetStreamLevelsGlobals, + GetStreamLevelsGlobalsTypedDict, + GetStreamLevelsLevel, + GetStreamLevelsLevelTypedDict, + GetStreamLevelsMediaContainer, + GetStreamLevelsMediaContainerTypedDict, + GetStreamLevelsRequest, + GetStreamLevelsRequestTypedDict, + GetStreamLevelsResponse, + GetStreamLevelsResponseBody, + GetStreamLevelsResponseBodyTypedDict, + GetStreamLevelsResponseTypedDict, + ) + from .getstreamloudness import ( + GetStreamLoudnessGlobals, + GetStreamLoudnessGlobalsTypedDict, + GetStreamLoudnessRequest, + GetStreamLoudnessRequestTypedDict, + GetStreamLoudnessResponse, + GetStreamLoudnessResponseTypedDict, + ) + from .getsubscription import ( + GetSubscriptionGlobals, + GetSubscriptionGlobalsTypedDict, + GetSubscriptionRequest, + GetSubscriptionRequestTypedDict, + GetSubscriptionResponse, + GetSubscriptionResponseTypedDict, + ) + from .gettags import ( + Directory, + DirectoryTypedDict, + GetTagsGlobals, + GetTagsGlobalsTypedDict, + GetTagsMediaContainer, + GetTagsMediaContainerTypedDict, + GetTagsRequest, + GetTagsRequestTypedDict, + GetTagsResponse, + GetTagsResponseBody, + GetTagsResponseBodyTypedDict, + GetTagsResponseTypedDict, + ) + from .gettasks import ( ButlerTask, ButlerTaskTypedDict, ButlerTasks, ButlerTasksTypedDict, - GetButlerTasksResponse, - GetButlerTasksResponseBody, - GetButlerTasksResponseBodyTypedDict, - GetButlerTasksResponseTypedDict, + GetTasksResponse, + GetTasksResponseBody, + GetTasksResponseBodyTypedDict, + GetTasksResponseTypedDict, ) - from .getcompanionsdata import ( - GET_COMPANIONS_DATA_SERVERS, - GetCompanionsDataResponse, - GetCompanionsDataResponseTypedDict, - ResponseBody, - ResponseBodyTypedDict, + from .gettemplate import ( + GetTemplateGlobals, + GetTemplateGlobalsTypedDict, + GetTemplateMediaContainer, + GetTemplateMediaContainerTypedDict, + GetTemplateRequest, + GetTemplateRequestTypedDict, + GetTemplateResponse, + GetTemplateResponseBody, + GetTemplateResponseBodyTypedDict, + GetTemplateResponseTypedDict, + MediaSubscription, + MediaSubscriptionTypedDict, + SubscriptionTemplate, + SubscriptionTemplateTypedDict, ) - from .getdevices import ( - Device, - DeviceTypedDict, - GetDevicesMediaContainer, - GetDevicesMediaContainerTypedDict, - GetDevicesResponse, - GetDevicesResponseBody, - GetDevicesResponseBodyTypedDict, - GetDevicesResponseTypedDict, - ) - from .getfilehash import ( - GetFileHashRequest, - GetFileHashRequestTypedDict, - GetFileHashResponse, - GetFileHashResponseTypedDict, - ) - from .getgeodata import ( - GET_GEO_DATA_SERVERS, - GetGeoDataGeoData, - GetGeoDataGeoDataTypedDict, - GetGeoDataResponse, - GetGeoDataResponseTypedDict, - ) - from .getglobalhubs import ( - GetGlobalHubsMediaContainer, - GetGlobalHubsMediaContainerTypedDict, - GetGlobalHubsMetadata, - GetGlobalHubsMetadataTypedDict, - GetGlobalHubsRequest, - GetGlobalHubsRequestTypedDict, - GetGlobalHubsResponse, - GetGlobalHubsResponseBody, - GetGlobalHubsResponseBodyTypedDict, - GetGlobalHubsResponseTypedDict, - Hub, - HubTypedDict, - OnlyTransient, - ) - from .gethomedata import ( - GetHomeDataResponse, - GetHomeDataResponseBody, - GetHomeDataResponseBodyTypedDict, - GetHomeDataResponseTypedDict, - ) - from .getlibraryhubs import ( - GetLibraryHubsCountry, - GetLibraryHubsCountryTypedDict, - GetLibraryHubsDirector, - GetLibraryHubsDirectorTypedDict, - GetLibraryHubsGenre, - GetLibraryHubsGenreTypedDict, - GetLibraryHubsHub, - GetLibraryHubsHubTypedDict, - GetLibraryHubsMedia, - GetLibraryHubsMediaContainer, - GetLibraryHubsMediaContainerTypedDict, - GetLibraryHubsMediaTypedDict, - GetLibraryHubsMetadata, - GetLibraryHubsMetadataTypedDict, - GetLibraryHubsPart, - GetLibraryHubsPartTypedDict, - GetLibraryHubsRequest, - GetLibraryHubsRequestTypedDict, - GetLibraryHubsResponse, - GetLibraryHubsResponseBody, - GetLibraryHubsResponseBodyTypedDict, - GetLibraryHubsResponseTypedDict, - GetLibraryHubsRole, - GetLibraryHubsRoleTypedDict, - GetLibraryHubsWriter, - GetLibraryHubsWriterTypedDict, - QueryParamOnlyTransient, - ) - from .getmetadatachildren import ( - GetMetadataChildrenDirectory, - GetMetadataChildrenDirectoryTypedDict, - GetMetadataChildrenMediaContainer, - GetMetadataChildrenMediaContainerTypedDict, - GetMetadataChildrenMetadata, - GetMetadataChildrenMetadataTypedDict, - GetMetadataChildrenRequest, - GetMetadataChildrenRequestTypedDict, - GetMetadataChildrenResponse, - GetMetadataChildrenResponseBody, - GetMetadataChildrenResponseBodyTypedDict, - GetMetadataChildrenResponseTypedDict, - ) - from .getmyplexaccount import ( - GetMyPlexAccountResponse, - GetMyPlexAccountResponseBody, - GetMyPlexAccountResponseBodyTypedDict, - GetMyPlexAccountResponseTypedDict, - MyPlex, - MyPlexTypedDict, - ) - from .getpin import ( - GET_PIN_SERVERS, - GeoData, - GeoDataTypedDict, - GetPinAuthPinContainer, - GetPinAuthPinContainerTypedDict, - GetPinRequest, - GetPinRequestTypedDict, - GetPinResponse, - GetPinResponseTypedDict, - ) - from .getplaylist import ( - GetPlaylistMediaContainer, - GetPlaylistMediaContainerTypedDict, - GetPlaylistMetadata, - GetPlaylistMetadataTypedDict, - GetPlaylistRequest, - GetPlaylistRequestTypedDict, - GetPlaylistResponse, - GetPlaylistResponseBody, - GetPlaylistResponseBodyTypedDict, - GetPlaylistResponseTypedDict, - ) - from .getplaylistcontents import ( - GetPlaylistContentsCountry, - GetPlaylistContentsCountryTypedDict, - GetPlaylistContentsDirector, - GetPlaylistContentsDirectorTypedDict, - GetPlaylistContentsGenre, - GetPlaylistContentsGenreTypedDict, - GetPlaylistContentsMedia, - GetPlaylistContentsMediaContainer, - GetPlaylistContentsMediaContainerTypedDict, - GetPlaylistContentsMediaTypedDict, - GetPlaylistContentsMetadata, - GetPlaylistContentsMetadataTypedDict, - GetPlaylistContentsPart, - GetPlaylistContentsPartTypedDict, - GetPlaylistContentsQueryParamType, - GetPlaylistContentsRequest, - GetPlaylistContentsRequestTypedDict, - GetPlaylistContentsResponse, - GetPlaylistContentsResponseBody, - GetPlaylistContentsResponseBodyTypedDict, - GetPlaylistContentsResponseTypedDict, - GetPlaylistContentsRole, - GetPlaylistContentsRoleTypedDict, - GetPlaylistContentsWriter, - GetPlaylistContentsWriterTypedDict, - ) - from .getplaylists import ( - GetPlaylistsMediaContainer, - GetPlaylistsMediaContainerTypedDict, - GetPlaylistsMetadata, - GetPlaylistsMetadataTypedDict, - GetPlaylistsRequest, - GetPlaylistsRequestTypedDict, - GetPlaylistsResponse, - GetPlaylistsResponseBody, - GetPlaylistsResponseBodyTypedDict, - GetPlaylistsResponseTypedDict, - PlaylistType, - QueryParamSmart, - ) - from .getresizedphoto import ( - GetResizedPhotoRequest, - GetResizedPhotoRequestTypedDict, - GetResizedPhotoResponse, - GetResizedPhotoResponseTypedDict, - MinSize, - Upscale, - ) - from .getresourcesstatistics import ( - GetResourcesStatisticsMediaContainer, - GetResourcesStatisticsMediaContainerTypedDict, - GetResourcesStatisticsRequest, - GetResourcesStatisticsRequestTypedDict, - GetResourcesStatisticsResponse, - GetResourcesStatisticsResponseBody, - GetResourcesStatisticsResponseBodyTypedDict, - GetResourcesStatisticsResponseTypedDict, - StatisticsResources, - StatisticsResourcesTypedDict, - ) - from .getsearchresults import ( - GetSearchResultsCountry, - GetSearchResultsCountryTypedDict, - GetSearchResultsDirector, - GetSearchResultsDirectorTypedDict, - GetSearchResultsGenre, - GetSearchResultsGenreTypedDict, - GetSearchResultsMedia, - GetSearchResultsMediaContainer, - GetSearchResultsMediaContainerTypedDict, - GetSearchResultsMediaTypedDict, - GetSearchResultsMetadata, - GetSearchResultsMetadataTypedDict, - GetSearchResultsPart, - GetSearchResultsPartTypedDict, - GetSearchResultsRequest, - GetSearchResultsRequestTypedDict, - GetSearchResultsResponse, - GetSearchResultsResponseBody, - GetSearchResultsResponseBodyTypedDict, - GetSearchResultsResponseTypedDict, - GetSearchResultsRole, - GetSearchResultsRoleTypedDict, - GetSearchResultsWriter, - GetSearchResultsWriterTypedDict, - Provider, - ProviderTypedDict, - ) - from .getserveractivities import ( - Activity, - ActivityTypedDict, - Context, - ContextTypedDict, - GetServerActivitiesMediaContainer, - GetServerActivitiesMediaContainerTypedDict, - GetServerActivitiesResponse, - GetServerActivitiesResponseBody, - GetServerActivitiesResponseBodyTypedDict, - GetServerActivitiesResponseTypedDict, - ) - from .getservercapabilities import ( - Directory, - DirectoryTypedDict, - GetServerCapabilitiesResponse, - GetServerCapabilitiesResponseBody, - GetServerCapabilitiesResponseBodyTypedDict, - GetServerCapabilitiesResponseTypedDict, - MediaContainer, - MediaContainerTypedDict, - ) - from .getserverlist import ( - GetServerListMediaContainer, - GetServerListMediaContainerTypedDict, - GetServerListResponse, - GetServerListResponseBody, - GetServerListResponseBodyTypedDict, - GetServerListResponseTypedDict, - GetServerListServer, - GetServerListServerTypedDict, - ) - from .getserverpreferences import ( - GetServerPreferencesMediaContainer, - GetServerPreferencesMediaContainerTypedDict, - GetServerPreferencesResponse, - GetServerPreferencesResponseBody, - GetServerPreferencesResponseBodyTypedDict, - GetServerPreferencesResponseTypedDict, - Setting, - SettingTypedDict, - ) - from .getsessionhistory import ( - GetSessionHistoryMediaContainer, - GetSessionHistoryMediaContainerTypedDict, - GetSessionHistoryMetadata, - GetSessionHistoryMetadataTypedDict, - GetSessionHistoryRequest, - GetSessionHistoryRequestTypedDict, - GetSessionHistoryResponse, - GetSessionHistoryResponseBody, - GetSessionHistoryResponseBodyTypedDict, - GetSessionHistoryResponseTypedDict, - QueryParamFilter, - QueryParamFilterTypedDict, - ) - from .getsessions import ( - GetSessionsMedia, - GetSessionsMediaContainer, - GetSessionsMediaContainerTypedDict, - GetSessionsMediaTypedDict, - GetSessionsMetadata, - GetSessionsMetadataTypedDict, - GetSessionsPart, - GetSessionsPartTypedDict, - GetSessionsResponse, - GetSessionsResponseBody, - GetSessionsResponseBodyTypedDict, - GetSessionsResponseTypedDict, - GetSessionsStream, - GetSessionsStreamTypedDict, - GetSessionsUser, - GetSessionsUserTypedDict, - Player, - PlayerTypedDict, - Session, - SessionTypedDict, - ) - from .getsourceconnectioninformation import ( - GetSourceConnectionInformationRequest, - GetSourceConnectionInformationRequestTypedDict, - GetSourceConnectionInformationResponse, - GetSourceConnectionInformationResponseTypedDict, - ) - from .getstatistics import ( - Account, - AccountTypedDict, - GetStatisticsDevice, - GetStatisticsDeviceTypedDict, - GetStatisticsMediaContainer, - GetStatisticsMediaContainerTypedDict, - GetStatisticsRequest, - GetStatisticsRequestTypedDict, - GetStatisticsResponse, - GetStatisticsResponseBody, - GetStatisticsResponseBodyTypedDict, - GetStatisticsResponseTypedDict, - StatisticsMedia, - StatisticsMediaTypedDict, - ) - from .gettimeline import ( - GetTimelineRequest, - GetTimelineRequestTypedDict, - GetTimelineResponse, - GetTimelineResponseTypedDict, - State, - ) - from .gettokenbypinid import ( - GET_TOKEN_BY_PIN_ID_SERVERS, - GetTokenByPinIDAuthPinContainer, - GetTokenByPinIDAuthPinContainerTypedDict, - GetTokenByPinIDGeoData, - GetTokenByPinIDGeoDataTypedDict, - GetTokenByPinIDRequest, - GetTokenByPinIDRequestTypedDict, - GetTokenByPinIDResponse, - GetTokenByPinIDResponseTypedDict, - ) - from .gettokendetails import ( - AutoSelectSubtitle, - DefaultSubtitleAccessibility, - DefaultSubtitleForced, - GET_TOKEN_DETAILS_SERVERS, - GetTokenDetailsAuthenticationResponseStatus, - GetTokenDetailsAuthenticationStatus, - GetTokenDetailsResponse, - GetTokenDetailsResponseTypedDict, - GetTokenDetailsStatus, - GetTokenDetailsSubscription, - GetTokenDetailsSubscriptionTypedDict, - GetTokenDetailsUserPlexAccount, - GetTokenDetailsUserPlexAccountTypedDict, - MailingListStatus, - MediaReviewsVisibility, - Services, - ServicesTypedDict, - Subscription, - SubscriptionTypedDict, - UserProfile, - UserProfileTypedDict, - WatchedIndicator, - ) - from .gettopwatchedcontent import ( - GetTopWatchedContentCountry, - GetTopWatchedContentCountryTypedDict, - GetTopWatchedContentGenre, - GetTopWatchedContentGenreTypedDict, - GetTopWatchedContentGuids, - GetTopWatchedContentGuidsTypedDict, - GetTopWatchedContentMediaContainer, - GetTopWatchedContentMediaContainerTypedDict, - GetTopWatchedContentMetadata, - GetTopWatchedContentMetadataTypedDict, - GetTopWatchedContentQueryParamIncludeGuids, - GetTopWatchedContentQueryParamType, - GetTopWatchedContentRequest, - GetTopWatchedContentRequestTypedDict, - GetTopWatchedContentResponse, - GetTopWatchedContentResponseBody, - GetTopWatchedContentResponseBodyTypedDict, - GetTopWatchedContentResponseTypedDict, - GetTopWatchedContentRole, - GetTopWatchedContentRoleTypedDict, - GetTopWatchedContentUser, - GetTopWatchedContentUserTypedDict, - ) - from .gettranscodesessions import ( - GetTranscodeSessionsMediaContainer, - GetTranscodeSessionsMediaContainerTypedDict, - GetTranscodeSessionsResponse, - GetTranscodeSessionsResponseBody, - GetTranscodeSessionsResponseBodyTypedDict, - GetTranscodeSessionsResponseTypedDict, - TranscodeSession, - TranscodeSessionTypedDict, + from .getthumb import ( + GetThumbGlobals, + GetThumbGlobalsTypedDict, + GetThumbRequest, + GetThumbRequestTypedDict, + GetThumbResponse, + GetThumbResponseTypedDict, ) from .gettransienttoken import ( - GetTransientTokenQueryParamType, + GetTransientTokenGlobals, + GetTransientTokenGlobalsTypedDict, + GetTransientTokenMediaContainer, + GetTransientTokenMediaContainerTypedDict, GetTransientTokenRequest, GetTransientTokenRequestTypedDict, GetTransientTokenResponse, + GetTransientTokenResponseBody, + GetTransientTokenResponseBodyTypedDict, GetTransientTokenResponseTypedDict, + QueryParamType, Scope, ) - from .getupdatestatus import ( - GetUpdateStatusMediaContainer, - GetUpdateStatusMediaContainerTypedDict, - GetUpdateStatusResponse, - GetUpdateStatusResponseBody, - GetUpdateStatusResponseBodyTypedDict, - GetUpdateStatusResponseTypedDict, + from .getupdatesstatus import ( + GetUpdatesStatusMediaContainer, + GetUpdatesStatusMediaContainerTypedDict, + GetUpdatesStatusResponse, + GetUpdatesStatusResponseBody, + GetUpdatesStatusResponseBodyTypedDict, + GetUpdatesStatusResponseTypedDict, + GetUpdatesStatusState, Release, ReleaseTypedDict, ) - from .getuserfriends import ( - Friend, - FriendTypedDict, - GET_USER_FRIENDS_SERVERS, - GetUserFriendsResponse, - GetUserFriendsResponseTypedDict, - SharedServers, - SharedServersTypedDict, - SharedSources, - SharedSourcesTypedDict, - Status, + from .ingesttransientitem import ( + IngestTransientItemGlobals, + IngestTransientItemGlobalsTypedDict, + IngestTransientItemRequest, + IngestTransientItemRequestTypedDict, + IngestTransientItemResponse, + IngestTransientItemResponseTypedDict, ) - from .logline import ( - Level, - LogLineRequest, - LogLineRequestTypedDict, - LogLineResponse, - LogLineResponseTypedDict, + from .listactivities import ( + Activity, + ActivityTypedDict, + ListActivitiesMediaContainer, + ListActivitiesMediaContainerTypedDict, + ListActivitiesResponse, + ListActivitiesResponseBody, + ListActivitiesResponseBodyTypedDict, + ListActivitiesResponseTypedDict, + ) + from .listcontent import ( + ListContentGlobals, + ListContentGlobalsTypedDict, + ListContentRequest, + ListContentRequestTypedDict, + ListContentResponse, + ListContentResponseTypedDict, + ) + from .listdevices import ListDevicesResponse, ListDevicesResponseTypedDict + from .listdownloadqueueitems import ( + DecisionResult, + DecisionResultTypedDict, + DownloadQueueItem, + DownloadQueueItemTypedDict, + ListDownloadQueueItemsGlobals, + ListDownloadQueueItemsGlobalsTypedDict, + ListDownloadQueueItemsMediaContainer, + ListDownloadQueueItemsMediaContainerTypedDict, + ListDownloadQueueItemsRequest, + ListDownloadQueueItemsRequestTypedDict, + ListDownloadQueueItemsResponse, + ListDownloadQueueItemsResponseBody, + ListDownloadQueueItemsResponseBodyTypedDict, + ListDownloadQueueItemsResponseTypedDict, + ListDownloadQueueItemsStatus, + Transcode, + TranscodeTypedDict, + ) + from .listdvrs import ( + Dvr, + DvrTypedDict, + ListDVRsDVRsMediaContainer, + ListDVRsDVRsMediaContainerTypedDict, + ListDVRsMediaContainer, + ListDVRsMediaContainerTypedDict, + ListDVRsResponse, + ListDVRsResponseBody, + ListDVRsResponseBodyTypedDict, + ListDVRsResponseTypedDict, + ) + from .listhubs import ( + HomeVisibility, + Hub, + HubTypedDict, + ListHubsGlobals, + ListHubsGlobalsTypedDict, + ListHubsMediaContainer, + ListHubsMediaContainerTypedDict, + ListHubsRequest, + ListHubsRequestTypedDict, + ListHubsResponse, + ListHubsResponseBody, + ListHubsResponseBodyTypedDict, + ListHubsResponseTypedDict, + RecommendationsVisibility, + ) + from .listlineups import ( + ListLineupsGlobals, + ListLineupsGlobalsTypedDict, + ListLineupsRequest, + ListLineupsRequestTypedDict, + ListLineupsResponse, + ListLineupsResponseTypedDict, + ) + from .listmatches import ( + ListMatchesGlobals, + ListMatchesGlobalsTypedDict, + ListMatchesRequest, + ListMatchesRequestTypedDict, + ListMatchesResponse, + ListMatchesResponseTypedDict, + ) + from .listmoments import ( + ListMomentsGlobals, + ListMomentsGlobalsTypedDict, + ListMomentsRequest, + ListMomentsRequestTypedDict, + ListMomentsResponse, + ListMomentsResponseTypedDict, + ) + from .listpersonmedia import ( + ListPersonMediaGlobals, + ListPersonMediaGlobalsTypedDict, + ListPersonMediaRequest, + ListPersonMediaRequestTypedDict, + ListPersonMediaResponse, + ListPersonMediaResponseTypedDict, + ) + from .listplaybackhistory import ( + ListPlaybackHistoryGlobals, + ListPlaybackHistoryGlobalsTypedDict, + ListPlaybackHistoryMediaContainer, + ListPlaybackHistoryMediaContainerTypedDict, + ListPlaybackHistoryMetadata, + ListPlaybackHistoryMetadataTypedDict, + ListPlaybackHistoryRequest, + ListPlaybackHistoryRequestTypedDict, + ListPlaybackHistoryResponse, + ListPlaybackHistoryResponseBody, + ListPlaybackHistoryResponseBodyTypedDict, + ListPlaybackHistoryResponseTypedDict, + ) + from .listplaylists import ( + ListPlaylistsGlobals, + ListPlaylistsGlobalsTypedDict, + ListPlaylistsRequest, + ListPlaylistsRequestTypedDict, + ListPlaylistsResponse, + ListPlaylistsResponseTypedDict, + PlaylistType, + ) + from .listproviders import ( + Feature, + FeatureTypedDict, + ListProvidersMediaContainer, + ListProvidersMediaContainerTypedDict, + ListProvidersResponse, + ListProvidersResponseBody, + ListProvidersResponseBodyTypedDict, + ListProvidersResponseTypedDict, + ) + from .listsessions import ( + ListSessionsMediaContainer, + ListSessionsMediaContainerTypedDict, + ListSessionsResponse, + ListSessionsResponseBody, + ListSessionsResponseBodyTypedDict, + ListSessionsResponseTypedDict, + Metadata, + MetadataTypedDict, + ) + from .listsimilar import ( + ListSimilarGlobals, + ListSimilarGlobalsTypedDict, + ListSimilarRequest, + ListSimilarRequestTypedDict, + ListSimilarResponse, + ListSimilarResponseTypedDict, + ) + from .listsonicallysimilar import ( + ListSonicallySimilarGlobals, + ListSonicallySimilarGlobalsTypedDict, + ListSonicallySimilarRequest, + ListSonicallySimilarRequestTypedDict, + ListSonicallySimilarResponse, + ListSonicallySimilarResponseTypedDict, + ) + from .listtopusers import ( + Account, + AccountTypedDict, + ListTopUsersGlobals, + ListTopUsersGlobalsTypedDict, + ListTopUsersMediaContainer, + ListTopUsersMediaContainerTypedDict, + ListTopUsersRequest, + ListTopUsersRequestTypedDict, + ListTopUsersResponse, + ListTopUsersResponseBody, + ListTopUsersResponseBodyTypedDict, + ListTopUsersResponseTypedDict, + ) + from .makedecision import ( + Location, + MakeDecisionGlobals, + MakeDecisionGlobalsTypedDict, + MakeDecisionRequest, + MakeDecisionRequestTypedDict, + MakeDecisionResponse, + MakeDecisionResponseTypedDict, + Protocol, + Subtitles, ) - from .logmultiline import LogMultiLineResponse, LogMultiLineResponseTypedDict from .markplayed import ( + MarkPlayedGlobals, + MarkPlayedGlobalsTypedDict, MarkPlayedRequest, MarkPlayedRequestTypedDict, MarkPlayedResponse, MarkPlayedResponseTypedDict, ) - from .markunplayed import ( - MarkUnplayedRequest, - MarkUnplayedRequestTypedDict, - MarkUnplayedResponse, - MarkUnplayedResponseTypedDict, + from .matchitem import ( + MatchItemGlobals, + MatchItemGlobalsTypedDict, + MatchItemRequest, + MatchItemRequestTypedDict, + MatchItemResponse, + MatchItemResponseTypedDict, ) - from .performsearch import ( - PerformSearchRequest, - PerformSearchRequestTypedDict, - PerformSearchResponse, - PerformSearchResponseTypedDict, + from .mergeitems import ( + MergeItemsGlobals, + MergeItemsGlobalsTypedDict, + MergeItemsRequest, + MergeItemsRequestTypedDict, + MergeItemsResponse, + MergeItemsResponseTypedDict, ) - from .performvoicesearch import ( - PerformVoiceSearchRequest, - PerformVoiceSearchRequestTypedDict, - PerformVoiceSearchResponse, - PerformVoiceSearchResponseTypedDict, + from .modifydevice import ( + ModifyDeviceGlobals, + ModifyDeviceGlobalsTypedDict, + ModifyDeviceMediaContainer, + ModifyDeviceMediaContainerTypedDict, + ModifyDeviceRequest, + ModifyDeviceRequestTypedDict, + ModifyDeviceResponse, + ModifyDeviceResponseBody, + ModifyDeviceResponseBodyTypedDict, + ModifyDeviceResponseTypedDict, ) - from .post_media_arts import ( - PostMediaArtsRequest, - PostMediaArtsRequestTypedDict, - PostMediaArtsResponse, - PostMediaArtsResponseTypedDict, + from .modifyplaylistgenerator import ( + Item, + ItemTypedDict, + ModifyPlaylistGeneratorGlobals, + ModifyPlaylistGeneratorGlobalsTypedDict, + ModifyPlaylistGeneratorQueryParamLocation, + ModifyPlaylistGeneratorQueryParamLocationTypedDict, + ModifyPlaylistGeneratorRequest, + ModifyPlaylistGeneratorRequestTypedDict, + ModifyPlaylistGeneratorResponse, + ModifyPlaylistGeneratorResponseTypedDict, + Policy, + PolicyTypedDict, + QueryParamScope, ) - from .post_media_poster import ( - PostMediaPosterRequest, - PostMediaPosterRequestTypedDict, - PostMediaPosterResponse, - PostMediaPosterResponseTypedDict, + from .movecollectionitem import ( + MoveCollectionItemGlobals, + MoveCollectionItemGlobalsTypedDict, + MoveCollectionItemRequest, + MoveCollectionItemRequestTypedDict, + MoveCollectionItemResponse, + MoveCollectionItemResponseTypedDict, ) - from .post_users_sign_in_data import ( - Billing, - BillingTypedDict, - InternalPaymentMethod, - InternalPaymentMethodTypedDict, - POST_USERS_SIGN_IN_DATA_SERVERS, - PastSubscription, - PastSubscriptionTypedDict, - PostUsersSignInDataAuthenticationResponseStatus, - PostUsersSignInDataAuthenticationStatus, - PostUsersSignInDataAuthenticationSubscription, - PostUsersSignInDataAuthenticationSubscriptionTypedDict, - PostUsersSignInDataAutoSelectSubtitle, - PostUsersSignInDataDefaultSubtitleAccessibility, - PostUsersSignInDataDefaultSubtitleForced, - PostUsersSignInDataMailingListStatus, - PostUsersSignInDataMediaReviewsVisibility, - PostUsersSignInDataRequest, - PostUsersSignInDataRequestBody, - PostUsersSignInDataRequestBodyTypedDict, - PostUsersSignInDataRequestTypedDict, - PostUsersSignInDataResponse, - PostUsersSignInDataResponseTypedDict, - PostUsersSignInDataServices, - PostUsersSignInDataServicesTypedDict, - PostUsersSignInDataState, - PostUsersSignInDataStatus, - PostUsersSignInDataSubscription, - PostUsersSignInDataSubscriptionTypedDict, - PostUsersSignInDataUserPlexAccount, - PostUsersSignInDataUserPlexAccountTypedDict, - PostUsersSignInDataUserProfile, - PostUsersSignInDataUserProfileTypedDict, - PostUsersSignInDataWatchedIndicator, - Trials, - TrialsTypedDict, + from .movehub import ( + MoveHubGlobals, + MoveHubGlobalsTypedDict, + MoveHubRequest, + MoveHubRequestTypedDict, + MoveHubResponse, + MoveHubResponseTypedDict, + ) + from .moveplaylistitem import ( + MovePlaylistItemGlobals, + MovePlaylistItemGlobalsTypedDict, + MovePlaylistItemRequest, + MovePlaylistItemRequestTypedDict, + MovePlaylistItemResponse, + MovePlaylistItemResponseTypedDict, + ) + from .moveplayqueueitem import ( + MovePlayQueueItemGlobals, + MovePlayQueueItemGlobalsTypedDict, + MovePlayQueueItemRequest, + MovePlayQueueItemRequestTypedDict, + MovePlayQueueItemResponse, + MovePlayQueueItemResponseTypedDict, + ) + from .optimizedatabase import ( + OptimizeDatabaseGlobals, + OptimizeDatabaseGlobalsTypedDict, + OptimizeDatabaseRequest, + OptimizeDatabaseRequestTypedDict, + OptimizeDatabaseResponse, + OptimizeDatabaseResponseTypedDict, + ) + from .processsubscriptions import ( + ProcessSubscriptionsResponse, + ProcessSubscriptionsResponseTypedDict, + ) + from .refreshitemsmetadata import ( + RefreshItemsMetadataGlobals, + RefreshItemsMetadataGlobalsTypedDict, + RefreshItemsMetadataRequest, + RefreshItemsMetadataRequestTypedDict, + RefreshItemsMetadataResponse, + RefreshItemsMetadataResponseTypedDict, + ) + from .refreshplaylist import ( + Action, + RefreshPlaylistGlobals, + RefreshPlaylistGlobalsTypedDict, + RefreshPlaylistRequest, + RefreshPlaylistRequestTypedDict, + RefreshPlaylistResponse, + RefreshPlaylistResponseTypedDict, + ) + from .refreshproviders import ( + RefreshProvidersResponse, + RefreshProvidersResponseTypedDict, + ) + from .refreshsection import ( + RefreshSectionGlobals, + RefreshSectionGlobalsTypedDict, + RefreshSectionRequest, + RefreshSectionRequestTypedDict, + RefreshSectionResponse, + RefreshSectionResponseTypedDict, + ) + from .refreshsectionsmetadata import ( + RefreshSectionsMetadataGlobals, + RefreshSectionsMetadataGlobalsTypedDict, + RefreshSectionsMetadataRequest, + RefreshSectionsMetadataRequestTypedDict, + RefreshSectionsMetadataResponse, + RefreshSectionsMetadataResponseTypedDict, + ) + from .reloadguide import ( + ReloadGuideGlobals, + ReloadGuideGlobalsTypedDict, + ReloadGuideRequest, + ReloadGuideRequestTypedDict, + ReloadGuideResponse, + ReloadGuideResponseTypedDict, + ) + from .removedevice import ( + RemoveDeviceGlobals, + RemoveDeviceGlobalsTypedDict, + RemoveDeviceMediaContainer, + RemoveDeviceMediaContainerTypedDict, + RemoveDeviceRequest, + RemoveDeviceRequestTypedDict, + RemoveDeviceResponse, + RemoveDeviceResponseBody, + RemoveDeviceResponseBodyTypedDict, + RemoveDeviceResponseTypedDict, + ) + from .removedevicefromdvr import ( + RemoveDeviceFromDVRDVR, + RemoveDeviceFromDVRDVRTypedDict, + RemoveDeviceFromDVRDVRsMediaContainer, + RemoveDeviceFromDVRDVRsMediaContainerTypedDict, + RemoveDeviceFromDVRGlobals, + RemoveDeviceFromDVRGlobalsTypedDict, + RemoveDeviceFromDVRMediaContainer, + RemoveDeviceFromDVRMediaContainerTypedDict, + RemoveDeviceFromDVRRequest, + RemoveDeviceFromDVRRequestTypedDict, + RemoveDeviceFromDVRResponse, + RemoveDeviceFromDVRResponseBody, + RemoveDeviceFromDVRResponseBodyTypedDict, + RemoveDeviceFromDVRResponseTypedDict, + ) + from .removedownloadqueueitems import ( + RemoveDownloadQueueItemsGlobals, + RemoveDownloadQueueItemsGlobalsTypedDict, + RemoveDownloadQueueItemsRequest, + RemoveDownloadQueueItemsRequestTypedDict, + RemoveDownloadQueueItemsResponse, + RemoveDownloadQueueItemsResponseTypedDict, + ) + from .reordersubscription import ( + ReorderSubscriptionGlobals, + ReorderSubscriptionGlobalsTypedDict, + ReorderSubscriptionRequest, + ReorderSubscriptionRequestTypedDict, + ReorderSubscriptionResponse, + ReorderSubscriptionResponseTypedDict, + ) + from .report import ( + Bandwidth, + BandwidthTypedDict, + Bandwidths, + BandwidthsTypedDict, + MediaContainer, + MediaContainerTypedDict, + ReportGlobals, + ReportGlobalsTypedDict, + ReportRequest, + ReportRequestTypedDict, + ReportResponse, + ReportResponseBody, + ReportResponseBodyTypedDict, + ReportResponseTypedDict, + State, + ) + from .resetplayqueue import ( + ResetPlayQueueGlobals, + ResetPlayQueueGlobalsTypedDict, + ResetPlayQueueRequest, + ResetPlayQueueRequestTypedDict, + ResetPlayQueueResponse, + ResetPlayQueueResponseTypedDict, + ) + from .resetsectiondefaults import ( + ResetSectionDefaultsGlobals, + ResetSectionDefaultsGlobalsTypedDict, + ResetSectionDefaultsRequest, + ResetSectionDefaultsRequestTypedDict, + ResetSectionDefaultsResponse, + ResetSectionDefaultsResponseTypedDict, + ) + from .restartprocessingdownloadqueueitems import ( + RestartProcessingDownloadQueueItemsGlobals, + RestartProcessingDownloadQueueItemsGlobalsTypedDict, + RestartProcessingDownloadQueueItemsRequest, + RestartProcessingDownloadQueueItemsRequestTypedDict, + RestartProcessingDownloadQueueItemsResponse, + RestartProcessingDownloadQueueItemsResponseTypedDict, + ) + from .scan import ( + ScanGlobals, + ScanGlobalsTypedDict, + ScanRequest, + ScanRequestTypedDict, + ScanResponse, + ScanResponseTypedDict, + ) + from .searchhubs import ( + SearchHubsGlobals, + SearchHubsGlobalsTypedDict, + SearchHubsMediaContainer, + SearchHubsMediaContainerTypedDict, + SearchHubsRequest, + SearchHubsRequestTypedDict, + SearchHubsResponse, + SearchHubsResponseBody, + SearchHubsResponseBodyTypedDict, + SearchHubsResponseTypedDict, + ) + from .setchannelmap import ( + ChannelMapping, + ChannelMappingByKey, + ChannelMappingByKeyTypedDict, + ChannelMappingTypedDict, + SetChannelmapGlobals, + SetChannelmapGlobalsTypedDict, + SetChannelmapRequest, + SetChannelmapRequestTypedDict, + SetChannelmapResponse, + SetChannelmapResponseTypedDict, + ) + from .setdevicepreferences import ( + SetDevicePreferencesGlobals, + SetDevicePreferencesGlobalsTypedDict, + SetDevicePreferencesRequest, + SetDevicePreferencesRequestTypedDict, + SetDevicePreferencesResponse, + SetDevicePreferencesResponseTypedDict, + ) + from .setdvrpreferences import ( + SetDVRPreferencesDVR, + SetDVRPreferencesDVRTypedDict, + SetDVRPreferencesDVRsMediaContainer, + SetDVRPreferencesDVRsMediaContainerTypedDict, + SetDVRPreferencesGlobals, + SetDVRPreferencesGlobalsTypedDict, + SetDVRPreferencesMediaContainer, + SetDVRPreferencesMediaContainerTypedDict, + SetDVRPreferencesRequest, + SetDVRPreferencesRequestTypedDict, + SetDVRPreferencesResponse, + SetDVRPreferencesResponseBody, + SetDVRPreferencesResponseBodyTypedDict, + SetDVRPreferencesResponseTypedDict, + ) + from .setitemartwork import ( + Element, + SetItemArtworkGlobals, + SetItemArtworkGlobalsTypedDict, + SetItemArtworkRequest, + SetItemArtworkRequestTypedDict, + SetItemArtworkResponse, + SetItemArtworkResponseTypedDict, + ) + from .setitempreferences import ( + QueryParamArgs, + QueryParamArgsTypedDict, + SetItemPreferencesGlobals, + SetItemPreferencesGlobalsTypedDict, + SetItemPreferencesRequest, + SetItemPreferencesRequestTypedDict, + SetItemPreferencesResponse, + SetItemPreferencesResponseTypedDict, + ) + from .setpreferences import ( + Prefs, + PrefsTypedDict, + SetPreferencesGlobals, + SetPreferencesGlobalsTypedDict, + SetPreferencesRequest, + SetPreferencesRequestTypedDict, + SetPreferencesResponse, + SetPreferencesResponseTypedDict, + ) + from .setrating import ( + SetRatingGlobals, + SetRatingGlobalsTypedDict, + SetRatingRequest, + SetRatingRequestTypedDict, + SetRatingResponse, + SetRatingResponseTypedDict, + ) + from .setsectionpreferences import ( + SetSectionPreferencesGlobals, + SetSectionPreferencesGlobalsTypedDict, + SetSectionPreferencesQueryParamPrefs, + SetSectionPreferencesQueryParamPrefsTypedDict, + SetSectionPreferencesRequest, + SetSectionPreferencesRequestTypedDict, + SetSectionPreferencesResponse, + SetSectionPreferencesResponseTypedDict, + ) + from .setstreamoffset import ( + SetStreamOffsetGlobals, + SetStreamOffsetGlobalsTypedDict, + SetStreamOffsetRequest, + SetStreamOffsetRequestTypedDict, + SetStreamOffsetResponse, + SetStreamOffsetResponseTypedDict, + ) + from .setstreamselection import ( + SetStreamSelectionGlobals, + SetStreamSelectionGlobalsTypedDict, + SetStreamSelectionRequest, + SetStreamSelectionRequestTypedDict, + SetStreamSelectionResponse, + SetStreamSelectionResponseTypedDict, + ) + from .shuffle import ( + ShuffleGlobals, + ShuffleGlobalsTypedDict, + ShuffleRequest, + ShuffleRequestTypedDict, + ShuffleResponse, + ShuffleResponseTypedDict, + ) + from .splititem import ( + SplitItemGlobals, + SplitItemGlobalsTypedDict, + SplitItemRequest, + SplitItemRequestTypedDict, + SplitItemResponse, + SplitItemResponseTypedDict, + ) + from .startanalysis import ( + StartAnalysisGlobals, + StartAnalysisGlobalsTypedDict, + StartAnalysisRequest, + StartAnalysisRequestTypedDict, + StartAnalysisResponse, + StartAnalysisResponseTypedDict, + ) + from .startbifgeneration import ( + StartBifGenerationGlobals, + StartBifGenerationGlobalsTypedDict, + StartBifGenerationRequest, + StartBifGenerationRequestTypedDict, + StartBifGenerationResponse, + StartBifGenerationResponseTypedDict, ) - from .startalltasks import StartAllTasksResponse, StartAllTasksResponseTypedDict from .starttask import ( + PathParamTask, + StartTaskGlobals, + StartTaskGlobalsTypedDict, StartTaskRequest, StartTaskRequestTypedDict, StartTaskResponse, StartTaskResponseTypedDict, - TaskName, ) - from .startuniversaltranscode import ( - StartUniversalTranscodeRequest, - StartUniversalTranscodeRequestTypedDict, - StartUniversalTranscodeResponse, - StartUniversalTranscodeResponseTypedDict, + from .starttasks import StartTasksResponse, StartTasksResponseTypedDict + from .starttranscodesession import ( + Extension, + StartTranscodeSessionGlobals, + StartTranscodeSessionGlobalsTypedDict, + StartTranscodeSessionQueryParamLocation, + StartTranscodeSessionQueryParamProtocol, + StartTranscodeSessionQueryParamSubtitles, + StartTranscodeSessionRequest, + StartTranscodeSessionRequestTypedDict, + StartTranscodeSessionResponse, + StartTranscodeSessionResponseTypedDict, + ) + from .stopallrefreshes import ( + StopAllRefreshesResponse, + StopAllRefreshesResponseTypedDict, + ) + from .stopdvrreload import ( + StopDVRReloadGlobals, + StopDVRReloadGlobalsTypedDict, + StopDVRReloadRequest, + StopDVRReloadRequestTypedDict, + StopDVRReloadResponse, + StopDVRReloadResponseTypedDict, + ) + from .stopscan import ( + StopScanGlobals, + StopScanGlobalsTypedDict, + StopScanRequest, + StopScanRequestTypedDict, + StopScanResponse, + StopScanResponseTypedDict, ) - from .stopalltasks import StopAllTasksResponse, StopAllTasksResponseTypedDict from .stoptask import ( - PathParamTaskName, + StopTaskGlobals, + StopTaskGlobalsTypedDict, StopTaskRequest, StopTaskRequestTypedDict, StopTaskResponse, StopTaskResponseTypedDict, + Task, ) - from .stoptranscodesession import ( - StopTranscodeSessionRequest, - StopTranscodeSessionRequestTypedDict, - StopTranscodeSessionResponse, - StopTranscodeSessionResponseTypedDict, + from .stoptasks import StopTasksResponse, StopTasksResponseTypedDict + from .terminatesession import ( + TerminateSessionGlobals, + TerminateSessionGlobalsTypedDict, + TerminateSessionRequest, + TerminateSessionRequestTypedDict, + TerminateSessionResponse, + TerminateSessionResponseTypedDict, + ) + from .transcodeimage import ( + ChromaSubsampling, + Format, + TranscodeImageGlobals, + TranscodeImageGlobalsTypedDict, + TranscodeImageRequest, + TranscodeImageRequestTypedDict, + TranscodeImageResponse, + TranscodeImageResponseTypedDict, + ) + from .transcodesubtitles import ( + QueryParamLocation, + QueryParamProtocol, + QueryParamSubtitles, + TranscodeSubtitlesGlobals, + TranscodeSubtitlesGlobalsTypedDict, + TranscodeSubtitlesRequest, + TranscodeSubtitlesRequestTypedDict, + TranscodeSubtitlesResponse, + TranscodeSubtitlesResponseTypedDict, + ) + from .triggerfallback import ( + TriggerFallbackGlobals, + TriggerFallbackGlobalsTypedDict, + TriggerFallbackRequest, + TriggerFallbackRequestTypedDict, + TriggerFallbackResponse, + TriggerFallbackResponseTypedDict, + ) + from .tunechannel import ( + TuneChannelGlobals, + TuneChannelGlobalsTypedDict, + TuneChannelRequest, + TuneChannelRequestTypedDict, + TuneChannelResponse, + TuneChannelResponseTypedDict, + ) + from .unmatch import ( + UnmatchGlobals, + UnmatchGlobalsTypedDict, + UnmatchRequest, + UnmatchRequestTypedDict, + UnmatchResponse, + UnmatchResponseTypedDict, + ) + from .unscrobble import ( + UnscrobbleGlobals, + UnscrobbleGlobalsTypedDict, + UnscrobbleRequest, + UnscrobbleRequestTypedDict, + UnscrobbleResponse, + UnscrobbleResponseTypedDict, + ) + from .unshuffle import ( + UnshuffleGlobals, + UnshuffleGlobalsTypedDict, + UnshuffleRequest, + UnshuffleRequestTypedDict, + UnshuffleResponse, + UnshuffleResponseTypedDict, + ) + from .updatehubvisibility import ( + UpdateHubVisibilityGlobals, + UpdateHubVisibilityGlobalsTypedDict, + UpdateHubVisibilityRequest, + UpdateHubVisibilityRequestTypedDict, + UpdateHubVisibilityResponse, + UpdateHubVisibilityResponseTypedDict, + ) + from .updateitemartwork import ( + PathParamElement, + UpdateItemArtworkGlobals, + UpdateItemArtworkGlobalsTypedDict, + UpdateItemArtworkRequest, + UpdateItemArtworkRequestTypedDict, + UpdateItemArtworkResponse, + UpdateItemArtworkResponseTypedDict, + ) + from .updateitems import ( + UpdateItemsGlobals, + UpdateItemsGlobalsTypedDict, + UpdateItemsRequest, + UpdateItemsRequestTypedDict, + UpdateItemsResponse, + UpdateItemsResponseTypedDict, ) from .updateplaylist import ( + UpdatePlaylistGlobals, + UpdatePlaylistGlobalsTypedDict, UpdatePlaylistRequest, UpdatePlaylistRequestTypedDict, UpdatePlaylistResponse, UpdatePlaylistResponseTypedDict, ) - from .updateplayprogress import ( - UpdatePlayProgressRequest, - UpdatePlayProgressRequestTypedDict, - UpdatePlayProgressResponse, - UpdatePlayProgressResponseTypedDict, - ) from .uploadplaylist import ( - QueryParamForce, + UploadPlaylistGlobals, + UploadPlaylistGlobalsTypedDict, UploadPlaylistRequest, UploadPlaylistRequestTypedDict, UploadPlaylistResponse, UploadPlaylistResponseTypedDict, ) + from .voicesearchhubs import ( + VoiceSearchHubsGlobals, + VoiceSearchHubsGlobalsTypedDict, + VoiceSearchHubsMediaContainer, + VoiceSearchHubsMediaContainerTypedDict, + VoiceSearchHubsRequest, + VoiceSearchHubsRequestTypedDict, + VoiceSearchHubsResponse, + VoiceSearchHubsResponseBody, + VoiceSearchHubsResponseBodyTypedDict, + VoiceSearchHubsResponseTypedDict, + ) + from .writelog import WriteLogResponse, WriteLogResponseTypedDict + from .writemessage import ( + Level, + WriteMessageGlobals, + WriteMessageGlobalsTypedDict, + WriteMessageRequest, + WriteMessageRequestTypedDict, + WriteMessageResponse, + WriteMessageResponseTypedDict, + ) __all__ = [ "Account", "AccountTypedDict", "Action", - "ActionTypedDict", - "ActiveDirection", "Activity", "ActivityTypedDict", - "AddPlaylistContentsMediaContainer", - "AddPlaylistContentsMediaContainerTypedDict", - "AddPlaylistContentsMetadata", - "AddPlaylistContentsMetadataTypedDict", - "AddPlaylistContentsRequest", - "AddPlaylistContentsRequestTypedDict", - "AddPlaylistContentsResponse", - "AddPlaylistContentsResponseBody", - "AddPlaylistContentsResponseBodyTypedDict", - "AddPlaylistContentsResponseTypedDict", - "AllLibraries", - "AllowCameraUpload", - "AllowChannels", - "AllowSubtitleAdmin", - "AllowSync", - "AllowTuners", + "AddCollectionItemsGlobals", + "AddCollectionItemsGlobalsTypedDict", + "AddCollectionItemsRequest", + "AddCollectionItemsRequestTypedDict", + "AddCollectionItemsResponse", + "AddCollectionItemsResponseTypedDict", + "AddDeviceGlobals", + "AddDeviceGlobalsTypedDict", + "AddDeviceRequest", + "AddDeviceRequestTypedDict", + "AddDeviceResponse", + "AddDeviceResponseTypedDict", + "AddDeviceToDVRDVR", + "AddDeviceToDVRDVRTypedDict", + "AddDeviceToDVRDVRsMediaContainer", + "AddDeviceToDVRDVRsMediaContainerTypedDict", + "AddDeviceToDVRGlobals", + "AddDeviceToDVRGlobalsTypedDict", + "AddDeviceToDVRMediaContainer", + "AddDeviceToDVRMediaContainerTypedDict", + "AddDeviceToDVRRequest", + "AddDeviceToDVRRequestTypedDict", + "AddDeviceToDVRResponse", + "AddDeviceToDVRResponseBody", + "AddDeviceToDVRResponseBodyTypedDict", + "AddDeviceToDVRResponseTypedDict", + "AddDownloadQueueItemsGlobals", + "AddDownloadQueueItemsGlobalsTypedDict", + "AddDownloadQueueItemsMediaContainer", + "AddDownloadQueueItemsMediaContainerTypedDict", + "AddDownloadQueueItemsRequest", + "AddDownloadQueueItemsRequestTypedDict", + "AddDownloadQueueItemsResponse", + "AddDownloadQueueItemsResponseBody", + "AddDownloadQueueItemsResponseBodyTypedDict", + "AddDownloadQueueItemsResponseTypedDict", + "AddExtrasGlobals", + "AddExtrasGlobalsTypedDict", + "AddExtrasRequest", + "AddExtrasRequestTypedDict", + "AddExtrasResponse", + "AddExtrasResponseTypedDict", + "AddLineupDVR", + "AddLineupDVRTypedDict", + "AddLineupDVRsMediaContainer", + "AddLineupDVRsMediaContainerTypedDict", + "AddLineupGlobals", + "AddLineupGlobalsTypedDict", + "AddLineupMediaContainer", + "AddLineupMediaContainerTypedDict", + "AddLineupRequest", + "AddLineupRequestTypedDict", + "AddLineupResponse", + "AddLineupResponseBody", + "AddLineupResponseBodyTypedDict", + "AddLineupResponseTypedDict", + "AddPlaylistItemsGlobals", + "AddPlaylistItemsGlobalsTypedDict", + "AddPlaylistItemsRequest", + "AddPlaylistItemsRequestTypedDict", + "AddPlaylistItemsResponse", + "AddPlaylistItemsResponseTypedDict", + "AddProviderGlobals", + "AddProviderGlobalsTypedDict", + "AddProviderRequest", + "AddProviderRequestTypedDict", + "AddProviderResponse", + "AddProviderResponseTypedDict", + "AddSectionGlobals", + "AddSectionGlobalsTypedDict", + "AddSectionRequest", + "AddSectionRequestTypedDict", + "AddSectionResponse", + "AddSectionResponseTypedDict", + "AddSubtitlesGlobals", + "AddSubtitlesGlobalsTypedDict", + "AddSubtitlesRequest", + "AddSubtitlesRequestTypedDict", + "AddSubtitlesResponse", + "AddSubtitlesResponseTypedDict", + "AddToPlayQueueGlobals", + "AddToPlayQueueGlobalsTypedDict", + "AddToPlayQueueRequest", + "AddToPlayQueueRequestTypedDict", + "AddToPlayQueueResponse", + "AddToPlayQueueResponseTypedDict", + "AddedQueueItems", + "AddedQueueItemsTypedDict", + "AdvancedSubtitles", + "AnalyzeMetadataGlobals", + "AnalyzeMetadataGlobalsTypedDict", + "AnalyzeMetadataRequest", + "AnalyzeMetadataRequestTypedDict", + "AnalyzeMetadataResponse", + "AnalyzeMetadataResponseTypedDict", + "ApplyUpdatesGlobals", + "ApplyUpdatesGlobalsTypedDict", "ApplyUpdatesRequest", "ApplyUpdatesRequestTypedDict", "ApplyUpdatesResponse", "ApplyUpdatesResponseTypedDict", + "Args", + "ArgsTypedDict", "Attributes", "AttributesTypedDict", - "AutoSelectSubtitle", - "Billing", - "BillingTypedDict", + "AutocompleteGlobals", + "AutocompleteGlobalsTypedDict", + "AutocompleteRequest", + "AutocompleteRequestTypedDict", + "AutocompleteResponse", + "AutocompleteResponseTypedDict", + "Bandwidth", + "BandwidthTypedDict", + "Bandwidths", + "BandwidthsTypedDict", "ButlerTask", "ButlerTaskTypedDict", "ButlerTasks", "ButlerTasksTypedDict", - "CancelServerActivitiesRequest", - "CancelServerActivitiesRequestTypedDict", - "CancelServerActivitiesResponse", - "CancelServerActivitiesResponseTypedDict", - "Chapter", - "ChapterTypedDict", - "CheckForUpdatesRequest", - "CheckForUpdatesRequestTypedDict", - "CheckForUpdatesResponse", - "CheckForUpdatesResponseTypedDict", - "ClearPlaylistContentsRequest", - "ClearPlaylistContentsRequestTypedDict", - "ClearPlaylistContentsResponse", - "ClearPlaylistContentsResponseTypedDict", - "Collection", - "CollectionTypedDict", - "Connections", - "ConnectionsTypedDict", - "Context", - "ContextTypedDict", + "CancelActivityGlobals", + "CancelActivityGlobalsTypedDict", + "CancelActivityRequest", + "CancelActivityRequestTypedDict", + "CancelActivityResponse", + "CancelActivityResponseTypedDict", + "CancelGrabGlobals", + "CancelGrabGlobalsTypedDict", + "CancelGrabRequest", + "CancelGrabRequestTypedDict", + "CancelGrabResponse", + "CancelGrabResponseTypedDict", + "CancelRefreshGlobals", + "CancelRefreshGlobalsTypedDict", + "CancelRefreshRequest", + "CancelRefreshRequestTypedDict", + "CancelRefreshResponse", + "CancelRefreshResponseTypedDict", + "ChannelMapping", + "ChannelMappingByKey", + "ChannelMappingByKeyTypedDict", + "ChannelMappingTypedDict", + "CheckUpdatesGlobals", + "CheckUpdatesGlobalsTypedDict", + "CheckUpdatesRequest", + "CheckUpdatesRequestTypedDict", + "CheckUpdatesResponse", + "CheckUpdatesResponseTypedDict", + "ChromaSubsampling", + "CleanBundlesResponse", + "CleanBundlesResponseTypedDict", + "ClearPlayQueueGlobals", + "ClearPlayQueueGlobalsTypedDict", + "ClearPlayQueueRequest", + "ClearPlayQueueRequestTypedDict", + "ClearPlayQueueResponse", + "ClearPlayQueueResponseTypedDict", + "ClearPlaylistItemsGlobals", + "ClearPlaylistItemsGlobalsTypedDict", + "ClearPlaylistItemsRequest", + "ClearPlaylistItemsRequestTypedDict", + "ClearPlaylistItemsResponse", + "ClearPlaylistItemsResponseTypedDict", + "ComputeChannelMapChannelMapping", + "ComputeChannelMapChannelMappingTypedDict", + "ComputeChannelMapGlobals", + "ComputeChannelMapGlobalsTypedDict", + "ComputeChannelMapMediaContainer", + "ComputeChannelMapMediaContainerTypedDict", + "ComputeChannelMapRequest", + "ComputeChannelMapRequestTypedDict", + "ComputeChannelMapResponse", + "ComputeChannelMapResponseBody", + "ComputeChannelMapResponseBodyTypedDict", + "ComputeChannelMapResponseTypedDict", + "ConnectWebSocketGlobals", + "ConnectWebSocketGlobalsTypedDict", + "ConnectWebSocketRequest", + "ConnectWebSocketRequestTypedDict", + "ConnectWebSocketResponse", + "ConnectWebSocketResponseTypedDict", + "Connection", + "ConnectionTypedDict", "Country", "CountryTypedDict", - "CreatePlaylistMediaContainer", - "CreatePlaylistMediaContainerTypedDict", - "CreatePlaylistMetadata", - "CreatePlaylistMetadataTypedDict", - "CreatePlaylistQueryParamType", + "CreateCollectionGlobals", + "CreateCollectionGlobalsTypedDict", + "CreateCollectionRequest", + "CreateCollectionRequestTypedDict", + "CreateCollectionResponse", + "CreateCollectionResponseTypedDict", + "CreateCustomHubGlobals", + "CreateCustomHubGlobalsTypedDict", + "CreateCustomHubRequest", + "CreateCustomHubRequestTypedDict", + "CreateCustomHubResponse", + "CreateCustomHubResponseTypedDict", + "CreateDVRGlobals", + "CreateDVRGlobalsTypedDict", + "CreateDVRRequest", + "CreateDVRRequestTypedDict", + "CreateDVRResponse", + "CreateDVRResponseTypedDict", + "CreateDownloadQueueMediaContainer", + "CreateDownloadQueueMediaContainerTypedDict", + "CreateDownloadQueueResponse", + "CreateDownloadQueueResponseBody", + "CreateDownloadQueueResponseBodyTypedDict", + "CreateDownloadQueueResponseTypedDict", + "CreateMarkerGlobals", + "CreateMarkerGlobalsTypedDict", + "CreateMarkerMediaContainer", + "CreateMarkerMediaContainerTypedDict", + "CreateMarkerRequest", + "CreateMarkerRequestTypedDict", + "CreateMarkerResponse", + "CreateMarkerResponseBody", + "CreateMarkerResponseBodyTypedDict", + "CreateMarkerResponseTypedDict", + "CreateMarkerType", + "CreatePlayQueueGlobals", + "CreatePlayQueueGlobalsTypedDict", + "CreatePlayQueueMediaContainer", + "CreatePlayQueueMediaContainerTypedDict", + "CreatePlayQueueRequest", + "CreatePlayQueueRequestTypedDict", + "CreatePlayQueueResponse", + "CreatePlayQueueResponseBody", + "CreatePlayQueueResponseBodyTypedDict", + "CreatePlayQueueResponseTypedDict", + "CreatePlaylistGlobals", + "CreatePlaylistGlobalsTypedDict", "CreatePlaylistRequest", "CreatePlaylistRequestTypedDict", "CreatePlaylistResponse", - "CreatePlaylistResponseBody", - "CreatePlaylistResponseBodyTypedDict", "CreatePlaylistResponseTypedDict", - "DefaultDirection", - "DefaultSubtitleAccessibility", - "DefaultSubtitleForced", - "DeleteLibraryRequest", - "DeleteLibraryRequestTypedDict", - "DeleteLibraryResponse", - "DeleteLibraryResponseTypedDict", + "CreateSubscriptionGlobals", + "CreateSubscriptionGlobalsTypedDict", + "CreateSubscriptionMediaContainer", + "CreateSubscriptionMediaContainerTypedDict", + "CreateSubscriptionQueryParamPrefs", + "CreateSubscriptionQueryParamPrefsTypedDict", + "CreateSubscriptionRequest", + "CreateSubscriptionRequestTypedDict", + "CreateSubscriptionResponse", + "CreateSubscriptionResponseBody", + "CreateSubscriptionResponseBodyTypedDict", + "CreateSubscriptionResponseTypedDict", + "DecisionResult", + "DecisionResultTypedDict", + "DeleteCachesResponse", + "DeleteCachesResponseTypedDict", + "DeleteCollectionGlobals", + "DeleteCollectionGlobalsTypedDict", + "DeleteCollectionItemGlobals", + "DeleteCollectionItemGlobalsTypedDict", + "DeleteCollectionItemRequest", + "DeleteCollectionItemRequestTypedDict", + "DeleteCollectionItemResponse", + "DeleteCollectionItemResponseTypedDict", + "DeleteCollectionRequest", + "DeleteCollectionRequestTypedDict", + "DeleteCollectionResponse", + "DeleteCollectionResponseTypedDict", + "DeleteCustomHubGlobals", + "DeleteCustomHubGlobalsTypedDict", + "DeleteCustomHubRequest", + "DeleteCustomHubRequestTypedDict", + "DeleteCustomHubResponse", + "DeleteCustomHubResponseTypedDict", + "DeleteDVRGlobals", + "DeleteDVRGlobalsTypedDict", + "DeleteDVRRequest", + "DeleteDVRRequestTypedDict", + "DeleteDVRResponse", + "DeleteDVRResponseTypedDict", + "DeleteHistoryGlobals", + "DeleteHistoryGlobalsTypedDict", + "DeleteHistoryRequest", + "DeleteHistoryRequestTypedDict", + "DeleteHistoryResponse", + "DeleteHistoryResponseTypedDict", + "DeleteIndexesGlobals", + "DeleteIndexesGlobalsTypedDict", + "DeleteIndexesRequest", + "DeleteIndexesRequestTypedDict", + "DeleteIndexesResponse", + "DeleteIndexesResponseTypedDict", + "DeleteIntrosGlobals", + "DeleteIntrosGlobalsTypedDict", + "DeleteIntrosRequest", + "DeleteIntrosRequestTypedDict", + "DeleteIntrosResponse", + "DeleteIntrosResponseTypedDict", + "DeleteLibrarySectionGlobals", + "DeleteLibrarySectionGlobalsTypedDict", + "DeleteLibrarySectionRequest", + "DeleteLibrarySectionRequestTypedDict", + "DeleteLibrarySectionResponse", + "DeleteLibrarySectionResponseTypedDict", + "DeleteLineupDVR", + "DeleteLineupDVRTypedDict", + "DeleteLineupDVRsMediaContainer", + "DeleteLineupDVRsMediaContainerTypedDict", + "DeleteLineupGlobals", + "DeleteLineupGlobalsTypedDict", + "DeleteLineupMediaContainer", + "DeleteLineupMediaContainerTypedDict", + "DeleteLineupRequest", + "DeleteLineupRequestTypedDict", + "DeleteLineupResponse", + "DeleteLineupResponseBody", + "DeleteLineupResponseBodyTypedDict", + "DeleteLineupResponseTypedDict", + "DeleteMarkerGlobals", + "DeleteMarkerGlobalsTypedDict", + "DeleteMarkerRequest", + "DeleteMarkerRequestTypedDict", + "DeleteMarkerResponse", + "DeleteMarkerResponseTypedDict", + "DeleteMediaItemGlobals", + "DeleteMediaItemGlobalsTypedDict", + "DeleteMediaItemRequest", + "DeleteMediaItemRequestTypedDict", + "DeleteMediaItemResponse", + "DeleteMediaItemResponseTypedDict", + "DeleteMediaProviderGlobals", + "DeleteMediaProviderGlobalsTypedDict", + "DeleteMediaProviderRequest", + "DeleteMediaProviderRequestTypedDict", + "DeleteMediaProviderResponse", + "DeleteMediaProviderResponseTypedDict", + "DeleteMetadataItemGlobals", + "DeleteMetadataItemGlobalsTypedDict", + "DeleteMetadataItemRequest", + "DeleteMetadataItemRequestTypedDict", + "DeleteMetadataItemResponse", + "DeleteMetadataItemResponseTypedDict", + "DeletePlayQueueItemGlobals", + "DeletePlayQueueItemGlobalsTypedDict", + "DeletePlayQueueItemRequest", + "DeletePlayQueueItemRequestTypedDict", + "DeletePlayQueueItemResponse", + "DeletePlayQueueItemResponseTypedDict", + "DeletePlaylistGlobals", + "DeletePlaylistGlobalsTypedDict", + "DeletePlaylistItemGlobals", + "DeletePlaylistItemGlobalsTypedDict", + "DeletePlaylistItemRequest", + "DeletePlaylistItemRequestTypedDict", + "DeletePlaylistItemResponse", + "DeletePlaylistItemResponseTypedDict", "DeletePlaylistRequest", "DeletePlaylistRequestTypedDict", "DeletePlaylistResponse", "DeletePlaylistResponseTypedDict", + "DeleteStreamGlobals", + "DeleteStreamGlobalsTypedDict", + "DeleteStreamRequest", + "DeleteStreamRequestTypedDict", + "DeleteStreamResponse", + "DeleteStreamResponseTypedDict", + "DeleteSubscriptionGlobals", + "DeleteSubscriptionGlobalsTypedDict", + "DeleteSubscriptionRequest", + "DeleteSubscriptionRequestTypedDict", + "DeleteSubscriptionResponse", + "DeleteSubscriptionResponseTypedDict", + "DetectAdsGlobals", + "DetectAdsGlobalsTypedDict", + "DetectAdsRequest", + "DetectAdsRequestTypedDict", + "DetectAdsResponse", + "DetectAdsResponseTypedDict", + "DetectCreditsGlobals", + "DetectCreditsGlobalsTypedDict", + "DetectCreditsRequest", + "DetectCreditsRequestTypedDict", + "DetectCreditsResponse", + "DetectCreditsResponseTypedDict", + "DetectIntrosGlobals", + "DetectIntrosGlobalsTypedDict", + "DetectIntrosRequest", + "DetectIntrosRequestTypedDict", + "DetectIntrosResponse", + "DetectIntrosResponseTypedDict", + "DetectVoiceActivityGlobals", + "DetectVoiceActivityGlobalsTypedDict", + "DetectVoiceActivityRequest", + "DetectVoiceActivityRequestTypedDict", + "DetectVoiceActivityResponse", + "DetectVoiceActivityResponseTypedDict", "Device", + "DeviceChannel", + "DeviceChannelTypedDict", "DeviceTypedDict", - "Director", - "DirectorTypedDict", "Directory", "DirectoryTypedDict", - "Download", - "EnablePaperTrailResponse", - "EnablePaperTrailResponseTypedDict", - "Extras", - "ExtrasTypedDict", + "DiscoverDevicesResponse", + "DiscoverDevicesResponseTypedDict", + "DownloadQueue", + "DownloadQueueItem", + "DownloadQueueItemTypedDict", + "DownloadQueueTypedDict", + "Dvr", + "DvrTypedDict", + "EditMarkerGlobals", + "EditMarkerGlobalsTypedDict", + "EditMarkerRequest", + "EditMarkerRequestTypedDict", + "EditMarkerResponse", + "EditMarkerResponseTypedDict", + "EditMetadataItemGlobals", + "EditMetadataItemGlobalsTypedDict", + "EditMetadataItemRequest", + "EditMetadataItemRequestTypedDict", + "EditMetadataItemResponse", + "EditMetadataItemResponseTypedDict", + "EditSectionGlobals", + "EditSectionGlobalsTypedDict", + "EditSectionQueryParamPrefs", + "EditSectionQueryParamPrefsTypedDict", + "EditSectionRequest", + "EditSectionRequestTypedDict", + "EditSectionResponse", + "EditSectionResponseTypedDict", + "EditSubscriptionPreferencesGlobals", + "EditSubscriptionPreferencesGlobalsTypedDict", + "EditSubscriptionPreferencesQueryParamPrefs", + "EditSubscriptionPreferencesQueryParamPrefsTypedDict", + "EditSubscriptionPreferencesRequest", + "EditSubscriptionPreferencesRequestTypedDict", + "EditSubscriptionPreferencesResponse", + "EditSubscriptionPreferencesResponseTypedDict", + "Element", + "EmptyTrashGlobals", + "EmptyTrashGlobalsTypedDict", + "EmptyTrashRequest", + "EmptyTrashRequestTypedDict", + "EmptyTrashResponse", + "EmptyTrashResponseTypedDict", + "EnablePapertrailGlobals", + "EnablePapertrailGlobalsTypedDict", + "EnablePapertrailRequest", + "EnablePapertrailRequestTypedDict", + "EnablePapertrailResponse", + "EnablePapertrailResponseTypedDict", + "Extension", "Feature", "FeatureTypedDict", - "FieldT", - "FieldTTypedDict", - "FieldType", - "FieldTypeTypedDict", - "Filter", - "FlattenSeasons", - "Force", - "Friend", - "FriendTypedDict", - "GET_COMPANIONS_DATA_SERVERS", - "GET_GEO_DATA_SERVERS", - "GET_PIN_SERVERS", - "GET_SERVER_RESOURCES_SERVERS", - "GET_TOKEN_BY_PIN_ID_SERVERS", - "GET_TOKEN_DETAILS_SERVERS", - "GET_USERS_SERVERS", - "GET_USER_FRIENDS_SERVERS", - "GET_WATCH_LIST_SERVERS", - "Genre", - "GenreTypedDict", - "GeoData", - "GeoDataTypedDict", - "GetActorsLibraryDirectory", - "GetActorsLibraryDirectoryTypedDict", - "GetActorsLibraryMediaContainer", - "GetActorsLibraryMediaContainerTypedDict", - "GetActorsLibraryQueryParamType", - "GetActorsLibraryRequest", - "GetActorsLibraryRequestTypedDict", - "GetActorsLibraryResponse", - "GetActorsLibraryResponseBody", - "GetActorsLibraryResponseBodyTypedDict", - "GetActorsLibraryResponseTypedDict", - "GetAllLibrariesDirectory", - "GetAllLibrariesDirectoryTypedDict", - "GetAllLibrariesLocation", - "GetAllLibrariesLocationTypedDict", - "GetAllLibrariesMediaContainer", - "GetAllLibrariesMediaContainerTypedDict", - "GetAllLibrariesResponse", - "GetAllLibrariesResponseBody", - "GetAllLibrariesResponseBodyTypedDict", - "GetAllLibrariesResponseTypedDict", - "GetAllLibrariesType", - "GetAvailableClientsMediaContainer", - "GetAvailableClientsMediaContainerTypedDict", - "GetAvailableClientsResponse", - "GetAvailableClientsResponseBody", - "GetAvailableClientsResponseBodyTypedDict", - "GetAvailableClientsResponseTypedDict", - "GetBandwidthStatisticsAccount", - "GetBandwidthStatisticsAccountTypedDict", - "GetBandwidthStatisticsDevice", - "GetBandwidthStatisticsDeviceTypedDict", - "GetBandwidthStatisticsMediaContainer", - "GetBandwidthStatisticsMediaContainerTypedDict", - "GetBandwidthStatisticsRequest", - "GetBandwidthStatisticsRequestTypedDict", - "GetBandwidthStatisticsResponse", - "GetBandwidthStatisticsResponseBody", - "GetBandwidthStatisticsResponseBodyTypedDict", - "GetBandwidthStatisticsResponseTypedDict", - "GetBannerImageRequest", - "GetBannerImageRequestTypedDict", - "GetBannerImageResponse", - "GetBannerImageResponseTypedDict", - "GetButlerTasksResponse", - "GetButlerTasksResponseBody", - "GetButlerTasksResponseBodyTypedDict", - "GetButlerTasksResponseTypedDict", - "GetCompanionsDataResponse", - "GetCompanionsDataResponseTypedDict", - "GetCountriesLibraryDirectory", - "GetCountriesLibraryDirectoryTypedDict", - "GetCountriesLibraryMediaContainer", - "GetCountriesLibraryMediaContainerTypedDict", - "GetCountriesLibraryQueryParamType", - "GetCountriesLibraryRequest", - "GetCountriesLibraryRequestTypedDict", - "GetCountriesLibraryResponse", - "GetCountriesLibraryResponseBody", - "GetCountriesLibraryResponseBodyTypedDict", - "GetCountriesLibraryResponseTypedDict", - "GetDevicesMediaContainer", - "GetDevicesMediaContainerTypedDict", - "GetDevicesResponse", - "GetDevicesResponseBody", - "GetDevicesResponseBodyTypedDict", - "GetDevicesResponseTypedDict", - "GetFileHashRequest", - "GetFileHashRequestTypedDict", - "GetFileHashResponse", - "GetFileHashResponseTypedDict", - "GetGenresLibraryDirectory", - "GetGenresLibraryDirectoryTypedDict", - "GetGenresLibraryMediaContainer", - "GetGenresLibraryMediaContainerTypedDict", - "GetGenresLibraryQueryParamType", - "GetGenresLibraryRequest", - "GetGenresLibraryRequestTypedDict", - "GetGenresLibraryResponse", - "GetGenresLibraryResponseBody", - "GetGenresLibraryResponseBodyTypedDict", - "GetGenresLibraryResponseTypedDict", - "GetGeoDataGeoData", - "GetGeoDataGeoDataTypedDict", - "GetGeoDataResponse", - "GetGeoDataResponseTypedDict", - "GetGlobalHubsMediaContainer", - "GetGlobalHubsMediaContainerTypedDict", - "GetGlobalHubsMetadata", - "GetGlobalHubsMetadataTypedDict", - "GetGlobalHubsRequest", - "GetGlobalHubsRequestTypedDict", - "GetGlobalHubsResponse", - "GetGlobalHubsResponseBody", - "GetGlobalHubsResponseBodyTypedDict", - "GetGlobalHubsResponseTypedDict", - "GetHomeDataResponse", - "GetHomeDataResponseBody", - "GetHomeDataResponseBodyTypedDict", - "GetHomeDataResponseTypedDict", - "GetLibraryDetailsDirectory", - "GetLibraryDetailsDirectoryTypedDict", - "GetLibraryDetailsField", - "GetLibraryDetailsFieldType", - "GetLibraryDetailsFieldTypeTypedDict", - "GetLibraryDetailsFieldTypedDict", - "GetLibraryDetailsFilter", - "GetLibraryDetailsFilterTypedDict", + "Flavor", + "Format", + "GenerateThumbsGlobals", + "GenerateThumbsGlobalsTypedDict", + "GenerateThumbsRequest", + "GenerateThumbsRequestTypedDict", + "GenerateThumbsResponse", + "GenerateThumbsResponseTypedDict", + "GetAlbumsGlobals", + "GetAlbumsGlobalsTypedDict", + "GetAlbumsRequest", + "GetAlbumsRequestTypedDict", + "GetAlbumsResponse", + "GetAlbumsResponseTypedDict", + "GetAllHubsGlobals", + "GetAllHubsGlobalsTypedDict", + "GetAllHubsMediaContainer", + "GetAllHubsMediaContainerTypedDict", + "GetAllHubsRequest", + "GetAllHubsRequestTypedDict", + "GetAllHubsResponse", + "GetAllHubsResponseBody", + "GetAllHubsResponseBodyTypedDict", + "GetAllHubsResponseTypedDict", + "GetAllItemLeavesGlobals", + "GetAllItemLeavesGlobalsTypedDict", + "GetAllItemLeavesRequest", + "GetAllItemLeavesRequestTypedDict", + "GetAllItemLeavesResponse", + "GetAllItemLeavesResponseTypedDict", + "GetAllLanguagesMediaContainer", + "GetAllLanguagesMediaContainerTypedDict", + "GetAllLanguagesResponse", + "GetAllLanguagesResponseBody", + "GetAllLanguagesResponseBodyTypedDict", + "GetAllLanguagesResponseTypedDict", + "GetAllLeavesGlobals", + "GetAllLeavesGlobalsTypedDict", + "GetAllLeavesRequest", + "GetAllLeavesRequestTypedDict", + "GetAllLeavesResponse", + "GetAllLeavesResponseTypedDict", + "GetAllPreferencesResponse", + "GetAllPreferencesResponseTypedDict", + "GetAllSubscriptionsGlobals", + "GetAllSubscriptionsGlobalsTypedDict", + "GetAllSubscriptionsRequest", + "GetAllSubscriptionsRequestTypedDict", + "GetAllSubscriptionsResponse", + "GetAllSubscriptionsResponseTypedDict", + "GetArtsGlobals", + "GetArtsGlobalsTypedDict", + "GetArtsRequest", + "GetArtsRequestTypedDict", + "GetArtsResponse", + "GetArtsResponseTypedDict", + "GetAugmentationStatusGlobals", + "GetAugmentationStatusGlobalsTypedDict", + "GetAugmentationStatusRequest", + "GetAugmentationStatusRequestTypedDict", + "GetAugmentationStatusResponse", + "GetAugmentationStatusResponseTypedDict", + "GetAvailableGrabbersGlobals", + "GetAvailableGrabbersGlobalsTypedDict", + "GetAvailableGrabbersMediaContainer", + "GetAvailableGrabbersMediaContainerTypedDict", + "GetAvailableGrabbersRequest", + "GetAvailableGrabbersRequestTypedDict", + "GetAvailableGrabbersResponse", + "GetAvailableGrabbersResponseBody", + "GetAvailableGrabbersResponseBodyTypedDict", + "GetAvailableGrabbersResponseTypedDict", + "GetAvailableSortsGlobals", + "GetAvailableSortsGlobalsTypedDict", + "GetAvailableSortsMediaContainer", + "GetAvailableSortsMediaContainerTypedDict", + "GetAvailableSortsRequest", + "GetAvailableSortsRequestTypedDict", + "GetAvailableSortsResponse", + "GetAvailableSortsResponseBody", + "GetAvailableSortsResponseBodyTypedDict", + "GetAvailableSortsResponseTypedDict", + "GetBackgroundTasksMediaContainer", + "GetBackgroundTasksMediaContainerTypedDict", + "GetBackgroundTasksResponse", + "GetBackgroundTasksResponseBody", + "GetBackgroundTasksResponseBodyTypedDict", + "GetBackgroundTasksResponseTypedDict", + "GetBackgroundTasksType", + "GetCategoriesGlobals", + "GetCategoriesGlobalsTypedDict", + "GetCategoriesRequest", + "GetCategoriesRequestTypedDict", + "GetCategoriesResponse", + "GetCategoriesResponseTypedDict", + "GetChannelsGlobals", + "GetChannelsGlobalsTypedDict", + "GetChannelsMediaContainer", + "GetChannelsMediaContainerTypedDict", + "GetChannelsRequest", + "GetChannelsRequestTypedDict", + "GetChannelsResponse", + "GetChannelsResponseBody", + "GetChannelsResponseBodyTypedDict", + "GetChannelsResponseTypedDict", + "GetChapterImageGlobals", + "GetChapterImageGlobalsTypedDict", + "GetChapterImageRequest", + "GetChapterImageRequestTypedDict", + "GetChapterImageResponse", + "GetChapterImageResponseTypedDict", + "GetClusterGlobals", + "GetClusterGlobalsTypedDict", + "GetClusterRequest", + "GetClusterRequestTypedDict", + "GetClusterResponse", + "GetClusterResponseTypedDict", + "GetCollectionImageGlobals", + "GetCollectionImageGlobalsTypedDict", + "GetCollectionImageRequest", + "GetCollectionImageRequestTypedDict", + "GetCollectionImageResponse", + "GetCollectionImageResponseTypedDict", + "GetCollectionItemsGlobals", + "GetCollectionItemsGlobalsTypedDict", + "GetCollectionItemsRequest", + "GetCollectionItemsRequestTypedDict", + "GetCollectionItemsResponse", + "GetCollectionItemsResponseTypedDict", + "GetCollectionsGlobals", + "GetCollectionsGlobalsTypedDict", + "GetCollectionsRequest", + "GetCollectionsRequestTypedDict", + "GetCollectionsResponse", + "GetCollectionsResponseTypedDict", + "GetColorsGlobals", + "GetColorsGlobalsTypedDict", + "GetColorsMediaContainer", + "GetColorsMediaContainerTypedDict", + "GetColorsRequest", + "GetColorsRequestTypedDict", + "GetColorsResponse", + "GetColorsResponseBody", + "GetColorsResponseBodyTypedDict", + "GetColorsResponseTypedDict", + "GetCommonGlobals", + "GetCommonGlobalsTypedDict", + "GetCommonRequest", + "GetCommonRequestTypedDict", + "GetCommonResponse", + "GetCommonResponseTypedDict", + "GetContinueWatchingGlobals", + "GetContinueWatchingGlobalsTypedDict", + "GetContinueWatchingMediaContainer", + "GetContinueWatchingMediaContainerTypedDict", + "GetContinueWatchingRequest", + "GetContinueWatchingRequestTypedDict", + "GetContinueWatchingResponse", + "GetContinueWatchingResponseBody", + "GetContinueWatchingResponseBodyTypedDict", + "GetContinueWatchingResponseTypedDict", + "GetCountriesLineupsGlobals", + "GetCountriesLineupsGlobalsTypedDict", + "GetCountriesLineupsRequest", + "GetCountriesLineupsRequestTypedDict", + "GetCountriesLineupsResponse", + "GetCountriesLineupsResponseTypedDict", + "GetCountriesMediaContainer", + "GetCountriesMediaContainerTypedDict", + "GetCountriesResponse", + "GetCountriesResponseBody", + "GetCountriesResponseBodyTypedDict", + "GetCountriesResponseTypedDict", + "GetCountryRegionsCountry", + "GetCountryRegionsCountryTypedDict", + "GetCountryRegionsGlobals", + "GetCountryRegionsGlobalsTypedDict", + "GetCountryRegionsMediaContainer", + "GetCountryRegionsMediaContainerTypedDict", + "GetCountryRegionsRequest", + "GetCountryRegionsRequestTypedDict", + "GetCountryRegionsResponse", + "GetCountryRegionsResponseBody", + "GetCountryRegionsResponseBodyTypedDict", + "GetCountryRegionsResponseTypedDict", + "GetDVRDVR", + "GetDVRDVRTypedDict", + "GetDVRDVRsMediaContainer", + "GetDVRDVRsMediaContainerTypedDict", + "GetDVRGlobals", + "GetDVRGlobalsTypedDict", + "GetDVRMediaContainer", + "GetDVRMediaContainerTypedDict", + "GetDVRRequest", + "GetDVRRequestTypedDict", + "GetDVRResponse", + "GetDVRResponseBody", + "GetDVRResponseBodyTypedDict", + "GetDVRResponseTypedDict", + "GetDeviceDetailsGlobals", + "GetDeviceDetailsGlobalsTypedDict", + "GetDeviceDetailsRequest", + "GetDeviceDetailsRequestTypedDict", + "GetDeviceDetailsResponse", + "GetDeviceDetailsResponseTypedDict", + "GetDevicesChannelsGlobals", + "GetDevicesChannelsGlobalsTypedDict", + "GetDevicesChannelsMediaContainer", + "GetDevicesChannelsMediaContainerTypedDict", + "GetDevicesChannelsRequest", + "GetDevicesChannelsRequestTypedDict", + "GetDevicesChannelsResponse", + "GetDevicesChannelsResponseBody", + "GetDevicesChannelsResponseBodyTypedDict", + "GetDevicesChannelsResponseTypedDict", + "GetDownloadQueueDownloadQueue", + "GetDownloadQueueDownloadQueueTypedDict", + "GetDownloadQueueGlobals", + "GetDownloadQueueGlobalsTypedDict", + "GetDownloadQueueItemsDecisionResult", + "GetDownloadQueueItemsDecisionResultTypedDict", + "GetDownloadQueueItemsDownloadQueueItem", + "GetDownloadQueueItemsDownloadQueueItemTypedDict", + "GetDownloadQueueItemsGlobals", + "GetDownloadQueueItemsGlobalsTypedDict", + "GetDownloadQueueItemsMediaContainer", + "GetDownloadQueueItemsMediaContainerTypedDict", + "GetDownloadQueueItemsRequest", + "GetDownloadQueueItemsRequestTypedDict", + "GetDownloadQueueItemsResponse", + "GetDownloadQueueItemsResponseBody", + "GetDownloadQueueItemsResponseBodyTypedDict", + "GetDownloadQueueItemsResponseTypedDict", + "GetDownloadQueueItemsStatus", + "GetDownloadQueueItemsTranscode", + "GetDownloadQueueItemsTranscodeTypedDict", + "GetDownloadQueueMediaContainer", + "GetDownloadQueueMediaContainerTypedDict", + "GetDownloadQueueMediaGlobals", + "GetDownloadQueueMediaGlobalsTypedDict", + "GetDownloadQueueMediaRequest", + "GetDownloadQueueMediaRequestTypedDict", + "GetDownloadQueueMediaResponse", + "GetDownloadQueueMediaResponseTypedDict", + "GetDownloadQueueRequest", + "GetDownloadQueueRequestTypedDict", + "GetDownloadQueueResponse", + "GetDownloadQueueResponseBody", + "GetDownloadQueueResponseBodyTypedDict", + "GetDownloadQueueResponseTypedDict", + "GetDownloadQueueStatus", + "GetExtrasGlobals", + "GetExtrasGlobalsTypedDict", + "GetExtrasRequest", + "GetExtrasRequestTypedDict", + "GetExtrasResponse", + "GetExtrasResponseTypedDict", + "GetFileGlobals", + "GetFileGlobalsTypedDict", + "GetFileRequest", + "GetFileRequestTypedDict", + "GetFileResponse", + "GetFileResponseTypedDict", + "GetFirstCharactersDirectory", + "GetFirstCharactersDirectoryTypedDict", + "GetFirstCharactersGlobals", + "GetFirstCharactersGlobalsTypedDict", + "GetFirstCharactersMediaContainer", + "GetFirstCharactersMediaContainerTypedDict", + "GetFirstCharactersRequest", + "GetFirstCharactersRequestTypedDict", + "GetFirstCharactersResponse", + "GetFirstCharactersResponseBody", + "GetFirstCharactersResponseBodyTypedDict", + "GetFirstCharactersResponseTypedDict", + "GetFoldersDirectory", + "GetFoldersDirectoryTypedDict", + "GetFoldersGlobals", + "GetFoldersGlobalsTypedDict", + "GetFoldersMediaContainer", + "GetFoldersMediaContainerTypedDict", + "GetFoldersRequest", + "GetFoldersRequestTypedDict", + "GetFoldersResponse", + "GetFoldersResponseBody", + "GetFoldersResponseBodyTypedDict", + "GetFoldersResponseTypedDict", + "GetHistoryItemGlobals", + "GetHistoryItemGlobalsTypedDict", + "GetHistoryItemRequest", + "GetHistoryItemRequestTypedDict", + "GetHistoryItemResponse", + "GetHistoryItemResponseTypedDict", + "GetHubItemsGlobals", + "GetHubItemsGlobalsTypedDict", + "GetHubItemsRequest", + "GetHubItemsRequestTypedDict", + "GetHubItemsResponse", + "GetHubItemsResponseBody", + "GetHubItemsResponseBodyTypedDict", + "GetHubItemsResponseTypedDict", + "GetIdentityMediaContainer", + "GetIdentityMediaContainerTypedDict", + "GetIdentityResponse", + "GetIdentityResponseBody", + "GetIdentityResponseBodyTypedDict", + "GetIdentityResponseTypedDict", + "GetImageFromBifGlobals", + "GetImageFromBifGlobalsTypedDict", + "GetImageFromBifRequest", + "GetImageFromBifRequestTypedDict", + "GetImageFromBifResponse", + "GetImageFromBifResponseTypedDict", + "GetImageGlobals", + "GetImageGlobalsTypedDict", + "GetImageRequest", + "GetImageRequestTypedDict", + "GetImageResponse", + "GetImageResponseTypedDict", + "GetItemArtworkGlobals", + "GetItemArtworkGlobalsTypedDict", + "GetItemArtworkPathParamElement", + "GetItemArtworkRequest", + "GetItemArtworkRequestTypedDict", + "GetItemArtworkResponse", + "GetItemArtworkResponseTypedDict", + "GetItemDecisionGlobals", + "GetItemDecisionGlobalsTypedDict", + "GetItemDecisionRequest", + "GetItemDecisionRequestTypedDict", + "GetItemDecisionResponse", + "GetItemDecisionResponseTypedDict", + "GetItemTreeGlobals", + "GetItemTreeGlobalsTypedDict", + "GetItemTreeRequest", + "GetItemTreeRequestTypedDict", + "GetItemTreeResponse", + "GetItemTreeResponseTypedDict", + "GetLibraryDetailsGlobals", + "GetLibraryDetailsGlobalsTypedDict", "GetLibraryDetailsMediaContainer", "GetLibraryDetailsMediaContainerTypedDict", - "GetLibraryDetailsOperator", - "GetLibraryDetailsOperatorTypedDict", "GetLibraryDetailsRequest", "GetLibraryDetailsRequestTypedDict", "GetLibraryDetailsResponse", "GetLibraryDetailsResponseBody", "GetLibraryDetailsResponseBodyTypedDict", "GetLibraryDetailsResponseTypedDict", - "GetLibraryDetailsSort", - "GetLibraryDetailsSortTypedDict", - "GetLibraryDetailsType", - "GetLibraryDetailsTypeTypedDict", - "GetLibraryHubsCountry", - "GetLibraryHubsCountryTypedDict", - "GetLibraryHubsDirector", - "GetLibraryHubsDirectorTypedDict", - "GetLibraryHubsGenre", - "GetLibraryHubsGenreTypedDict", - "GetLibraryHubsHub", - "GetLibraryHubsHubTypedDict", - "GetLibraryHubsMedia", - "GetLibraryHubsMediaContainer", - "GetLibraryHubsMediaContainerTypedDict", - "GetLibraryHubsMediaTypedDict", - "GetLibraryHubsMetadata", - "GetLibraryHubsMetadataTypedDict", - "GetLibraryHubsPart", - "GetLibraryHubsPartTypedDict", - "GetLibraryHubsRequest", - "GetLibraryHubsRequestTypedDict", - "GetLibraryHubsResponse", - "GetLibraryHubsResponseBody", - "GetLibraryHubsResponseBodyTypedDict", - "GetLibraryHubsResponseTypedDict", - "GetLibraryHubsRole", - "GetLibraryHubsRoleTypedDict", - "GetLibraryHubsWriter", - "GetLibraryHubsWriterTypedDict", - "GetLibraryItemsActiveDirection", - "GetLibraryItemsCollection", - "GetLibraryItemsCollectionTypedDict", - "GetLibraryItemsCountry", - "GetLibraryItemsCountryTypedDict", - "GetLibraryItemsDefaultDirection", - "GetLibraryItemsDirector", - "GetLibraryItemsDirectorTypedDict", - "GetLibraryItemsField", - "GetLibraryItemsFieldType", - "GetLibraryItemsFieldTypeTypedDict", - "GetLibraryItemsFieldTypedDict", - "GetLibraryItemsFilter", - "GetLibraryItemsFilterTypedDict", - "GetLibraryItemsGenre", - "GetLibraryItemsGenreTypedDict", - "GetLibraryItemsGuids", - "GetLibraryItemsGuidsTypedDict", - "GetLibraryItemsHasThumbnail", - "GetLibraryItemsImage", - "GetLibraryItemsImageTypedDict", - "GetLibraryItemsLibraryOptimizedForStreaming", - "GetLibraryItemsLibraryOptimizedForStreamingTypedDict", - "GetLibraryItemsLibraryResponseType", - "GetLibraryItemsLibraryType", - "GetLibraryItemsLibraryTypeTypedDict", - "GetLibraryItemsLocation", - "GetLibraryItemsLocationTypedDict", - "GetLibraryItemsMedia", - "GetLibraryItemsMediaContainer", - "GetLibraryItemsMediaContainerTypedDict", - "GetLibraryItemsMediaTypedDict", - "GetLibraryItemsMeta", - "GetLibraryItemsMetaTypedDict", - "GetLibraryItemsMetadata", - "GetLibraryItemsMetadataTypedDict", - "GetLibraryItemsOperator", - "GetLibraryItemsOperatorTypedDict", - "GetLibraryItemsOptimizedForStreaming", - "GetLibraryItemsOptimizedForStreaming1", - "GetLibraryItemsOptimizedForStreamingTypedDict", - "GetLibraryItemsPart", - "GetLibraryItemsPartTypedDict", - "GetLibraryItemsProducer", - "GetLibraryItemsProducerTypedDict", - "GetLibraryItemsQueryParamIncludeMeta", - "GetLibraryItemsQueryParamType", + "GetLibraryItemsGlobals", + "GetLibraryItemsGlobalsTypedDict", "GetLibraryItemsRequest", "GetLibraryItemsRequestTypedDict", "GetLibraryItemsResponse", - "GetLibraryItemsResponseBody", - "GetLibraryItemsResponseBodyTypedDict", "GetLibraryItemsResponseTypedDict", - "GetLibraryItemsRole", - "GetLibraryItemsRoleTypedDict", - "GetLibraryItemsSimilar", - "GetLibraryItemsSimilarTypedDict", - "GetLibraryItemsSort", - "GetLibraryItemsSortTypedDict", - "GetLibraryItemsType", - "GetLibraryItemsUltraBlurColors", - "GetLibraryItemsUltraBlurColorsTypedDict", - "GetLibraryItemsWriter", - "GetLibraryItemsWriterTypedDict", - "GetLibrarySectionsAllActiveDirection", - "GetLibrarySectionsAllCollection", - "GetLibrarySectionsAllCollectionTypedDict", - "GetLibrarySectionsAllCountry", - "GetLibrarySectionsAllCountryTypedDict", - "GetLibrarySectionsAllDefaultDirection", - "GetLibrarySectionsAllDirector", - "GetLibrarySectionsAllDirectorTypedDict", - "GetLibrarySectionsAllField", - "GetLibrarySectionsAllFieldType", - "GetLibrarySectionsAllFieldTypeTypedDict", - "GetLibrarySectionsAllFieldTypedDict", - "GetLibrarySectionsAllFilter", - "GetLibrarySectionsAllFilterTypedDict", - "GetLibrarySectionsAllGenre", - "GetLibrarySectionsAllGenreTypedDict", - "GetLibrarySectionsAllGuids", - "GetLibrarySectionsAllGuidsTypedDict", - "GetLibrarySectionsAllHasThumbnail", - "GetLibrarySectionsAllImage", - "GetLibrarySectionsAllImageTypedDict", - "GetLibrarySectionsAllLibraryOptimizedForStreaming", - "GetLibrarySectionsAllLibraryOptimizedForStreamingTypedDict", - "GetLibrarySectionsAllLibraryResponseType", - "GetLibrarySectionsAllLibraryType", - "GetLibrarySectionsAllMedia", - "GetLibrarySectionsAllMediaContainer", - "GetLibrarySectionsAllMediaContainerTypedDict", - "GetLibrarySectionsAllMediaTypedDict", - "GetLibrarySectionsAllMeta", - "GetLibrarySectionsAllMetaTypedDict", - "GetLibrarySectionsAllMetadata", - "GetLibrarySectionsAllMetadataTypedDict", - "GetLibrarySectionsAllOperator", - "GetLibrarySectionsAllOperatorTypedDict", - "GetLibrarySectionsAllOptimizedForStreaming", - "GetLibrarySectionsAllOptimizedForStreaming1", - "GetLibrarySectionsAllOptimizedForStreamingLibrary1", - "GetLibrarySectionsAllOptimizedForStreamingTypedDict", - "GetLibrarySectionsAllPart", - "GetLibrarySectionsAllPartTypedDict", - "GetLibrarySectionsAllQueryParamIncludeMeta", - "GetLibrarySectionsAllQueryParamType", - "GetLibrarySectionsAllRequest", - "GetLibrarySectionsAllRequestTypedDict", - "GetLibrarySectionsAllResponse", - "GetLibrarySectionsAllResponseBody", - "GetLibrarySectionsAllResponseBodyTypedDict", - "GetLibrarySectionsAllResponseTypedDict", - "GetLibrarySectionsAllRole", - "GetLibrarySectionsAllRoleTypedDict", - "GetLibrarySectionsAllSort", - "GetLibrarySectionsAllSortTypedDict", - "GetLibrarySectionsAllStream", - "GetLibrarySectionsAllStreamTypedDict", - "GetLibrarySectionsAllType", - "GetLibrarySectionsAllTypeTypedDict", - "GetLibrarySectionsAllUltraBlurColors", - "GetLibrarySectionsAllUltraBlurColorsTypedDict", - "GetLibrarySectionsAllWriter", - "GetLibrarySectionsAllWriterTypedDict", - "GetMediaArtsMediaContainer", - "GetMediaArtsMediaContainerTypedDict", - "GetMediaArtsMetadata", - "GetMediaArtsMetadataTypedDict", - "GetMediaArtsRequest", - "GetMediaArtsRequestTypedDict", - "GetMediaArtsResponse", - "GetMediaArtsResponseBody", - "GetMediaArtsResponseBodyTypedDict", - "GetMediaArtsResponseTypedDict", - "GetMediaMetaDataAttributes", - "GetMediaMetaDataAttributesTypedDict", - "GetMediaMetaDataChapter", - "GetMediaMetaDataChapterTypedDict", - "GetMediaMetaDataCountry", - "GetMediaMetaDataCountryTypedDict", - "GetMediaMetaDataDirector", - "GetMediaMetaDataDirectorTypedDict", - "GetMediaMetaDataExtras", - "GetMediaMetaDataExtrasTypedDict", - "GetMediaMetaDataGenre", - "GetMediaMetaDataGenreTypedDict", - "GetMediaMetaDataGuids", - "GetMediaMetaDataGuidsTypedDict", - "GetMediaMetaDataHasThumbnail", - "GetMediaMetaDataImage", - "GetMediaMetaDataImageTypedDict", - "GetMediaMetaDataLibraryOptimizedForStreaming", - "GetMediaMetaDataLibraryOptimizedForStreamingTypedDict", - "GetMediaMetaDataLibraryType", - "GetMediaMetaDataLocation", - "GetMediaMetaDataLocationTypedDict", - "GetMediaMetaDataMarker", - "GetMediaMetaDataMarkerTypedDict", - "GetMediaMetaDataMedia", - "GetMediaMetaDataMediaContainer", - "GetMediaMetaDataMediaContainerTypedDict", - "GetMediaMetaDataMediaTypedDict", - "GetMediaMetaDataMetadata", - "GetMediaMetaDataMetadataTypedDict", - "GetMediaMetaDataOptimizedForStreaming", - "GetMediaMetaDataOptimizedForStreaming1", - "GetMediaMetaDataOptimizedForStreamingLibrary1", - "GetMediaMetaDataOptimizedForStreamingTypedDict", - "GetMediaMetaDataPart", - "GetMediaMetaDataPartTypedDict", - "GetMediaMetaDataProducer", - "GetMediaMetaDataProducerTypedDict", - "GetMediaMetaDataRatings", - "GetMediaMetaDataRatingsTypedDict", - "GetMediaMetaDataRequest", - "GetMediaMetaDataRequestTypedDict", - "GetMediaMetaDataResponse", - "GetMediaMetaDataResponseBody", - "GetMediaMetaDataResponseBodyTypedDict", - "GetMediaMetaDataResponseTypedDict", - "GetMediaMetaDataRole", - "GetMediaMetaDataRoleTypedDict", - "GetMediaMetaDataSimilar", - "GetMediaMetaDataSimilarTypedDict", - "GetMediaMetaDataStream", - "GetMediaMetaDataStreamTypedDict", - "GetMediaMetaDataType", - "GetMediaMetaDataUltraBlurColors", - "GetMediaMetaDataUltraBlurColorsTypedDict", - "GetMediaMetaDataWriter", - "GetMediaMetaDataWriterTypedDict", - "GetMediaPostersMediaContainer", - "GetMediaPostersMediaContainerTypedDict", - "GetMediaPostersMetadata", - "GetMediaPostersMetadataTypedDict", - "GetMediaPostersRequest", - "GetMediaPostersRequestTypedDict", - "GetMediaPostersResponse", - "GetMediaPostersResponseBody", - "GetMediaPostersResponseBodyTypedDict", - "GetMediaPostersResponseTypedDict", - "GetMediaProvidersDirectory", - "GetMediaProvidersDirectoryTypedDict", - "GetMediaProvidersMediaContainer", - "GetMediaProvidersMediaContainerTypedDict", - "GetMediaProvidersRequest", - "GetMediaProvidersRequestTypedDict", - "GetMediaProvidersResponse", - "GetMediaProvidersResponseBody", - "GetMediaProvidersResponseBodyTypedDict", - "GetMediaProvidersResponseTypedDict", - "GetMetadataChildrenDirectory", - "GetMetadataChildrenDirectoryTypedDict", - "GetMetadataChildrenMediaContainer", - "GetMetadataChildrenMediaContainerTypedDict", - "GetMetadataChildrenMetadata", - "GetMetadataChildrenMetadataTypedDict", - "GetMetadataChildrenRequest", - "GetMetadataChildrenRequestTypedDict", - "GetMetadataChildrenResponse", - "GetMetadataChildrenResponseBody", - "GetMetadataChildrenResponseBodyTypedDict", - "GetMetadataChildrenResponseTypedDict", - "GetMyPlexAccountResponse", - "GetMyPlexAccountResponseBody", - "GetMyPlexAccountResponseBodyTypedDict", - "GetMyPlexAccountResponseTypedDict", - "GetPinAuthPinContainer", - "GetPinAuthPinContainerTypedDict", - "GetPinRequest", - "GetPinRequestTypedDict", - "GetPinResponse", - "GetPinResponseTypedDict", - "GetPlaylistContentsCountry", - "GetPlaylistContentsCountryTypedDict", - "GetPlaylistContentsDirector", - "GetPlaylistContentsDirectorTypedDict", - "GetPlaylistContentsGenre", - "GetPlaylistContentsGenreTypedDict", - "GetPlaylistContentsMedia", - "GetPlaylistContentsMediaContainer", - "GetPlaylistContentsMediaContainerTypedDict", - "GetPlaylistContentsMediaTypedDict", - "GetPlaylistContentsMetadata", - "GetPlaylistContentsMetadataTypedDict", - "GetPlaylistContentsPart", - "GetPlaylistContentsPartTypedDict", - "GetPlaylistContentsQueryParamType", - "GetPlaylistContentsRequest", - "GetPlaylistContentsRequestTypedDict", - "GetPlaylistContentsResponse", - "GetPlaylistContentsResponseBody", - "GetPlaylistContentsResponseBodyTypedDict", - "GetPlaylistContentsResponseTypedDict", - "GetPlaylistContentsRole", - "GetPlaylistContentsRoleTypedDict", - "GetPlaylistContentsWriter", - "GetPlaylistContentsWriterTypedDict", - "GetPlaylistMediaContainer", - "GetPlaylistMediaContainerTypedDict", - "GetPlaylistMetadata", - "GetPlaylistMetadataTypedDict", + "GetLibraryMatchesGlobals", + "GetLibraryMatchesGlobalsTypedDict", + "GetLibraryMatchesRequest", + "GetLibraryMatchesRequestTypedDict", + "GetLibraryMatchesResponse", + "GetLibraryMatchesResponseTypedDict", + "GetLineupChannelsGlobals", + "GetLineupChannelsGlobalsTypedDict", + "GetLineupChannelsMediaContainer", + "GetLineupChannelsMediaContainerTypedDict", + "GetLineupChannelsRequest", + "GetLineupChannelsRequestTypedDict", + "GetLineupChannelsResponse", + "GetLineupChannelsResponseBody", + "GetLineupChannelsResponseBodyTypedDict", + "GetLineupChannelsResponseTypedDict", + "GetLineupGlobals", + "GetLineupGlobalsTypedDict", + "GetLineupRequest", + "GetLineupRequestTypedDict", + "GetLineupResponse", + "GetLineupResponseTypedDict", + "GetLiveTVSessionGlobals", + "GetLiveTVSessionGlobalsTypedDict", + "GetLiveTVSessionRequest", + "GetLiveTVSessionRequestTypedDict", + "GetLiveTVSessionResponse", + "GetLiveTVSessionResponseTypedDict", + "GetMediaPartGlobals", + "GetMediaPartGlobalsTypedDict", + "GetMediaPartRequest", + "GetMediaPartRequestTypedDict", + "GetMediaPartResponse", + "GetMediaPartResponseTypedDict", + "GetMetadataHubsGlobals", + "GetMetadataHubsGlobalsTypedDict", + "GetMetadataHubsRequest", + "GetMetadataHubsRequestTypedDict", + "GetMetadataHubsResponse", + "GetMetadataHubsResponseTypedDict", + "GetMetadataItemGlobals", + "GetMetadataItemGlobalsTypedDict", + "GetMetadataItemRequest", + "GetMetadataItemRequestTypedDict", + "GetMetadataItemResponse", + "GetMetadataItemResponseTypedDict", + "GetNotificationsGlobals", + "GetNotificationsGlobalsTypedDict", + "GetNotificationsRequest", + "GetNotificationsRequestTypedDict", + "GetNotificationsResponse", + "GetNotificationsResponseTypedDict", + "GetPartIndexGlobals", + "GetPartIndexGlobalsTypedDict", + "GetPartIndexRequest", + "GetPartIndexRequestTypedDict", + "GetPartIndexResponse", + "GetPartIndexResponseTypedDict", + "GetPersonGlobals", + "GetPersonGlobalsTypedDict", + "GetPersonMediaContainer", + "GetPersonMediaContainerTypedDict", + "GetPersonRequest", + "GetPersonRequestTypedDict", + "GetPersonResponse", + "GetPersonResponseBody", + "GetPersonResponseBodyTypedDict", + "GetPersonResponseTypedDict", + "GetPlayQueueGlobals", + "GetPlayQueueGlobalsTypedDict", + "GetPlayQueueRequest", + "GetPlayQueueRequestTypedDict", + "GetPlayQueueResponse", + "GetPlayQueueResponseTypedDict", + "GetPlaylistGeneratorDevice", + "GetPlaylistGeneratorDeviceTypedDict", + "GetPlaylistGeneratorGlobals", + "GetPlaylistGeneratorGlobalsTypedDict", + "GetPlaylistGeneratorItem", + "GetPlaylistGeneratorItemTypedDict", + "GetPlaylistGeneratorItemsGlobals", + "GetPlaylistGeneratorItemsGlobalsTypedDict", + "GetPlaylistGeneratorItemsMediaContainer", + "GetPlaylistGeneratorItemsMediaContainerTypedDict", + "GetPlaylistGeneratorItemsMetadata", + "GetPlaylistGeneratorItemsMetadataTypedDict", + "GetPlaylistGeneratorItemsRequest", + "GetPlaylistGeneratorItemsRequestTypedDict", + "GetPlaylistGeneratorItemsResponse", + "GetPlaylistGeneratorItemsResponseBody", + "GetPlaylistGeneratorItemsResponseBodyTypedDict", + "GetPlaylistGeneratorItemsResponseTypedDict", + "GetPlaylistGeneratorLocation", + "GetPlaylistGeneratorLocationTypedDict", + "GetPlaylistGeneratorMediaContainer", + "GetPlaylistGeneratorMediaContainerTypedDict", + "GetPlaylistGeneratorPolicy", + "GetPlaylistGeneratorPolicyTypedDict", + "GetPlaylistGeneratorRequest", + "GetPlaylistGeneratorRequestTypedDict", + "GetPlaylistGeneratorResponse", + "GetPlaylistGeneratorResponseBody", + "GetPlaylistGeneratorResponseBodyTypedDict", + "GetPlaylistGeneratorResponseTypedDict", + "GetPlaylistGeneratorScope", + "GetPlaylistGeneratorState", + "GetPlaylistGeneratorStatus", + "GetPlaylistGeneratorStatusTypedDict", + "GetPlaylistGeneratorSubtitles", + "GetPlaylistGeneratorType", + "GetPlaylistGeneratorsGlobals", + "GetPlaylistGeneratorsGlobalsTypedDict", + "GetPlaylistGeneratorsMediaContainer", + "GetPlaylistGeneratorsMediaContainerTypedDict", + "GetPlaylistGeneratorsRequest", + "GetPlaylistGeneratorsRequestTypedDict", + "GetPlaylistGeneratorsResponse", + "GetPlaylistGeneratorsResponseBody", + "GetPlaylistGeneratorsResponseBodyTypedDict", + "GetPlaylistGeneratorsResponseTypedDict", + "GetPlaylistGeneratorsType", + "GetPlaylistGlobals", + "GetPlaylistGlobalsTypedDict", + "GetPlaylistItemsGlobals", + "GetPlaylistItemsGlobalsTypedDict", + "GetPlaylistItemsRequest", + "GetPlaylistItemsRequestTypedDict", + "GetPlaylistItemsResponse", + "GetPlaylistItemsResponseTypedDict", "GetPlaylistRequest", "GetPlaylistRequestTypedDict", "GetPlaylistResponse", - "GetPlaylistResponseBody", - "GetPlaylistResponseBodyTypedDict", "GetPlaylistResponseTypedDict", - "GetPlaylistsMediaContainer", - "GetPlaylistsMediaContainerTypedDict", - "GetPlaylistsMetadata", - "GetPlaylistsMetadataTypedDict", - "GetPlaylistsRequest", - "GetPlaylistsRequestTypedDict", - "GetPlaylistsResponse", - "GetPlaylistsResponseBody", - "GetPlaylistsResponseBodyTypedDict", - "GetPlaylistsResponseTypedDict", - "GetRecentlyAddedActiveDirection", - "GetRecentlyAddedDefaultDirection", - "GetRecentlyAddedField", - "GetRecentlyAddedFieldType", - "GetRecentlyAddedFieldTypeTypedDict", - "GetRecentlyAddedFieldTypedDict", - "GetRecentlyAddedFilter", - "GetRecentlyAddedFilterTypedDict", - "GetRecentlyAddedHubsResponseType", - "GetRecentlyAddedHubsType", - "GetRecentlyAddedImage", - "GetRecentlyAddedImageTypedDict", - "GetRecentlyAddedLibraryCountry", - "GetRecentlyAddedLibraryCountryTypedDict", - "GetRecentlyAddedLibraryDirector", - "GetRecentlyAddedLibraryDirectorTypedDict", - "GetRecentlyAddedLibraryFilter", - "GetRecentlyAddedLibraryFilterTypedDict", - "GetRecentlyAddedLibraryGenre", - "GetRecentlyAddedLibraryGenreTypedDict", - "GetRecentlyAddedLibraryMedia", - "GetRecentlyAddedLibraryMediaContainer", - "GetRecentlyAddedLibraryMediaContainerTypedDict", - "GetRecentlyAddedLibraryMediaTypedDict", - "GetRecentlyAddedLibraryMetadata", - "GetRecentlyAddedLibraryMetadataTypedDict", - "GetRecentlyAddedLibraryPart", - "GetRecentlyAddedLibraryPartTypedDict", - "GetRecentlyAddedLibraryRequest", - "GetRecentlyAddedLibraryRequestTypedDict", - "GetRecentlyAddedLibraryResponse", - "GetRecentlyAddedLibraryResponseBody", - "GetRecentlyAddedLibraryResponseBodyTypedDict", - "GetRecentlyAddedLibraryResponseTypedDict", - "GetRecentlyAddedLibraryRole", - "GetRecentlyAddedLibraryRoleTypedDict", - "GetRecentlyAddedLibraryType", - "GetRecentlyAddedLibraryTypeTypedDict", - "GetRecentlyAddedLibraryWriter", - "GetRecentlyAddedLibraryWriterTypedDict", - "GetRecentlyAddedMediaContainer", - "GetRecentlyAddedMediaContainerTypedDict", - "GetRecentlyAddedMetadata", - "GetRecentlyAddedMetadataTypedDict", - "GetRecentlyAddedOperator", - "GetRecentlyAddedOperatorTypedDict", - "GetRecentlyAddedOptimizedForStreaming", - "GetRecentlyAddedOptimizedForStreaming1", - "GetRecentlyAddedOptimizedForStreamingTypedDict", - "GetRecentlyAddedRequest", - "GetRecentlyAddedRequestTypedDict", - "GetRecentlyAddedResponse", - "GetRecentlyAddedResponseBody", - "GetRecentlyAddedResponseBodyTypedDict", - "GetRecentlyAddedResponseTypedDict", - "GetRecentlyAddedSort", - "GetRecentlyAddedSortTypedDict", - "GetRecentlyAddedType", - "GetRecentlyAddedTypeTypedDict", - "GetRefreshLibraryMetadataRequest", - "GetRefreshLibraryMetadataRequestTypedDict", - "GetRefreshLibraryMetadataResponse", - "GetRefreshLibraryMetadataResponseTypedDict", - "GetResizedPhotoRequest", - "GetResizedPhotoRequestTypedDict", - "GetResizedPhotoResponse", - "GetResizedPhotoResponseTypedDict", - "GetResourcesStatisticsMediaContainer", - "GetResourcesStatisticsMediaContainerTypedDict", - "GetResourcesStatisticsRequest", - "GetResourcesStatisticsRequestTypedDict", - "GetResourcesStatisticsResponse", - "GetResourcesStatisticsResponseBody", - "GetResourcesStatisticsResponseBodyTypedDict", - "GetResourcesStatisticsResponseTypedDict", - "GetSearchAllLibrariesCountry", - "GetSearchAllLibrariesCountryTypedDict", - "GetSearchAllLibrariesDirector", - "GetSearchAllLibrariesDirectorTypedDict", - "GetSearchAllLibrariesDirectory", - "GetSearchAllLibrariesDirectoryTypedDict", - "GetSearchAllLibrariesFlattenSeasons", - "GetSearchAllLibrariesGenre", - "GetSearchAllLibrariesGenreTypedDict", - "GetSearchAllLibrariesGuids", - "GetSearchAllLibrariesGuidsTypedDict", - "GetSearchAllLibrariesHasThumbnail", - "GetSearchAllLibrariesImage", - "GetSearchAllLibrariesImageTypedDict", - "GetSearchAllLibrariesLibraryOptimizedForStreaming", - "GetSearchAllLibrariesLibraryOptimizedForStreamingTypedDict", - "GetSearchAllLibrariesLibraryType", - "GetSearchAllLibrariesLocation", - "GetSearchAllLibrariesLocationTypedDict", - "GetSearchAllLibrariesMedia", - "GetSearchAllLibrariesMediaContainer", - "GetSearchAllLibrariesMediaContainerTypedDict", - "GetSearchAllLibrariesMediaTypedDict", - "GetSearchAllLibrariesMetadata", - "GetSearchAllLibrariesMetadataTypedDict", - "GetSearchAllLibrariesOptimizedForStreaming", - "GetSearchAllLibrariesOptimizedForStreaming1", - "GetSearchAllLibrariesOptimizedForStreamingLibrary1", - "GetSearchAllLibrariesOptimizedForStreamingTypedDict", - "GetSearchAllLibrariesPart", - "GetSearchAllLibrariesPartTypedDict", - "GetSearchAllLibrariesQueryParamIncludeCollections", - "GetSearchAllLibrariesQueryParamIncludeExternalMedia", - "GetSearchAllLibrariesRequest", - "GetSearchAllLibrariesRequestTypedDict", - "GetSearchAllLibrariesResponse", - "GetSearchAllLibrariesResponseBody", - "GetSearchAllLibrariesResponseBodyTypedDict", - "GetSearchAllLibrariesResponseTypedDict", - "GetSearchAllLibrariesRole", - "GetSearchAllLibrariesRoleTypedDict", - "GetSearchAllLibrariesShowOrdering", - "GetSearchAllLibrariesType", - "GetSearchAllLibrariesUltraBlurColors", - "GetSearchAllLibrariesUltraBlurColorsTypedDict", - "GetSearchAllLibrariesWriter", - "GetSearchAllLibrariesWriterTypedDict", - "GetSearchLibraryMediaContainer", - "GetSearchLibraryMediaContainerTypedDict", - "GetSearchLibraryMetadata", - "GetSearchLibraryMetadataTypedDict", - "GetSearchLibraryQueryParamType", - "GetSearchLibraryRequest", - "GetSearchLibraryRequestTypedDict", - "GetSearchLibraryResponse", - "GetSearchLibraryResponseBody", - "GetSearchLibraryResponseBodyTypedDict", - "GetSearchLibraryResponseTypedDict", - "GetSearchResultsCountry", - "GetSearchResultsCountryTypedDict", - "GetSearchResultsDirector", - "GetSearchResultsDirectorTypedDict", - "GetSearchResultsGenre", - "GetSearchResultsGenreTypedDict", - "GetSearchResultsMedia", - "GetSearchResultsMediaContainer", - "GetSearchResultsMediaContainerTypedDict", - "GetSearchResultsMediaTypedDict", - "GetSearchResultsMetadata", - "GetSearchResultsMetadataTypedDict", - "GetSearchResultsPart", - "GetSearchResultsPartTypedDict", - "GetSearchResultsRequest", - "GetSearchResultsRequestTypedDict", - "GetSearchResultsResponse", - "GetSearchResultsResponseBody", - "GetSearchResultsResponseBodyTypedDict", - "GetSearchResultsResponseTypedDict", - "GetSearchResultsRole", - "GetSearchResultsRoleTypedDict", - "GetSearchResultsWriter", - "GetSearchResultsWriterTypedDict", - "GetServerActivitiesMediaContainer", - "GetServerActivitiesMediaContainerTypedDict", - "GetServerActivitiesResponse", - "GetServerActivitiesResponseBody", - "GetServerActivitiesResponseBodyTypedDict", - "GetServerActivitiesResponseTypedDict", - "GetServerCapabilitiesResponse", - "GetServerCapabilitiesResponseBody", - "GetServerCapabilitiesResponseBodyTypedDict", - "GetServerCapabilitiesResponseTypedDict", - "GetServerIdentityMediaContainer", - "GetServerIdentityMediaContainerTypedDict", - "GetServerIdentityResponse", - "GetServerIdentityResponseBody", - "GetServerIdentityResponseBodyTypedDict", - "GetServerIdentityResponseTypedDict", - "GetServerListMediaContainer", - "GetServerListMediaContainerTypedDict", - "GetServerListResponse", - "GetServerListResponseBody", - "GetServerListResponseBodyTypedDict", - "GetServerListResponseTypedDict", - "GetServerListServer", - "GetServerListServerTypedDict", - "GetServerPreferencesMediaContainer", - "GetServerPreferencesMediaContainerTypedDict", - "GetServerPreferencesResponse", - "GetServerPreferencesResponseBody", - "GetServerPreferencesResponseBodyTypedDict", - "GetServerPreferencesResponseTypedDict", - "GetServerResourcesRequest", - "GetServerResourcesRequestTypedDict", - "GetServerResourcesResponse", - "GetServerResourcesResponseTypedDict", - "GetSessionHistoryMediaContainer", - "GetSessionHistoryMediaContainerTypedDict", - "GetSessionHistoryMetadata", - "GetSessionHistoryMetadataTypedDict", - "GetSessionHistoryRequest", - "GetSessionHistoryRequestTypedDict", - "GetSessionHistoryResponse", - "GetSessionHistoryResponseBody", - "GetSessionHistoryResponseBodyTypedDict", - "GetSessionHistoryResponseTypedDict", - "GetSessionsMedia", - "GetSessionsMediaContainer", - "GetSessionsMediaContainerTypedDict", - "GetSessionsMediaTypedDict", - "GetSessionsMetadata", - "GetSessionsMetadataTypedDict", - "GetSessionsPart", - "GetSessionsPartTypedDict", + "GetPostplayHubsGlobals", + "GetPostplayHubsGlobalsTypedDict", + "GetPostplayHubsRequest", + "GetPostplayHubsRequestTypedDict", + "GetPostplayHubsResponse", + "GetPostplayHubsResponseTypedDict", + "GetPreferenceGlobals", + "GetPreferenceGlobalsTypedDict", + "GetPreferenceRequest", + "GetPreferenceRequestTypedDict", + "GetPreferenceResponse", + "GetPreferenceResponseTypedDict", + "GetPromotedHubsGlobals", + "GetPromotedHubsGlobalsTypedDict", + "GetPromotedHubsMediaContainer", + "GetPromotedHubsMediaContainerTypedDict", + "GetPromotedHubsRequest", + "GetPromotedHubsRequestTypedDict", + "GetPromotedHubsResponse", + "GetPromotedHubsResponseBody", + "GetPromotedHubsResponseBodyTypedDict", + "GetPromotedHubsResponseTypedDict", + "GetRandomArtworkGlobals", + "GetRandomArtworkGlobalsTypedDict", + "GetRandomArtworkRequest", + "GetRandomArtworkRequestTypedDict", + "GetRandomArtworkResponse", + "GetRandomArtworkResponseTypedDict", + "GetRelatedHubsGlobals", + "GetRelatedHubsGlobalsTypedDict", + "GetRelatedHubsRequest", + "GetRelatedHubsRequestTypedDict", + "GetRelatedHubsResponse", + "GetRelatedHubsResponseTypedDict", + "GetRelatedItemsGlobals", + "GetRelatedItemsGlobalsTypedDict", + "GetRelatedItemsMediaContainer", + "GetRelatedItemsMediaContainerTypedDict", + "GetRelatedItemsRequest", + "GetRelatedItemsRequestTypedDict", + "GetRelatedItemsResponse", + "GetRelatedItemsResponseBody", + "GetRelatedItemsResponseBodyTypedDict", + "GetRelatedItemsResponseTypedDict", + "GetScheduledRecordingsMediaContainer", + "GetScheduledRecordingsMediaContainerTypedDict", + "GetScheduledRecordingsResponse", + "GetScheduledRecordingsResponseBody", + "GetScheduledRecordingsResponseBodyTypedDict", + "GetScheduledRecordingsResponseTypedDict", + "GetSectionFiltersGlobals", + "GetSectionFiltersGlobalsTypedDict", + "GetSectionFiltersMediaContainer", + "GetSectionFiltersMediaContainerTypedDict", + "GetSectionFiltersRequest", + "GetSectionFiltersRequestTypedDict", + "GetSectionFiltersResponse", + "GetSectionFiltersResponseBody", + "GetSectionFiltersResponseBodyTypedDict", + "GetSectionFiltersResponseTypedDict", + "GetSectionHubsGlobals", + "GetSectionHubsGlobalsTypedDict", + "GetSectionHubsMediaContainer", + "GetSectionHubsMediaContainerTypedDict", + "GetSectionHubsRequest", + "GetSectionHubsRequestTypedDict", + "GetSectionHubsResponse", + "GetSectionHubsResponseBody", + "GetSectionHubsResponseBodyTypedDict", + "GetSectionHubsResponseTypedDict", + "GetSectionImageGlobals", + "GetSectionImageGlobalsTypedDict", + "GetSectionImageRequest", + "GetSectionImageRequestTypedDict", + "GetSectionImageResponse", + "GetSectionImageResponseTypedDict", + "GetSectionPreferencesGlobals", + "GetSectionPreferencesGlobalsTypedDict", + "GetSectionPreferencesRequest", + "GetSectionPreferencesRequestTypedDict", + "GetSectionPreferencesResponse", + "GetSectionPreferencesResponseTypedDict", + "GetSectionsMediaContainer", + "GetSectionsMediaContainerTypedDict", + "GetSectionsPrefsGlobals", + "GetSectionsPrefsGlobalsTypedDict", + "GetSectionsPrefsRequest", + "GetSectionsPrefsRequestTypedDict", + "GetSectionsPrefsResponse", + "GetSectionsPrefsResponseTypedDict", + "GetSectionsResponse", + "GetSectionsResponseBody", + "GetSectionsResponseBodyTypedDict", + "GetSectionsResponseTypedDict", + "GetServerInfoGlobals", + "GetServerInfoGlobalsTypedDict", + "GetServerInfoRequest", + "GetServerInfoRequestTypedDict", + "GetServerInfoResponse", + "GetServerInfoResponseTypedDict", + "GetSessionPlaylistIndexGlobals", + "GetSessionPlaylistIndexGlobalsTypedDict", + "GetSessionPlaylistIndexRequest", + "GetSessionPlaylistIndexRequestTypedDict", + "GetSessionPlaylistIndexResponse", + "GetSessionPlaylistIndexResponseTypedDict", + "GetSessionSegmentGlobals", + "GetSessionSegmentGlobalsTypedDict", + "GetSessionSegmentRequest", + "GetSessionSegmentRequestTypedDict", + "GetSessionSegmentResponse", + "GetSessionSegmentResponseTypedDict", "GetSessionsResponse", - "GetSessionsResponseBody", - "GetSessionsResponseBodyTypedDict", "GetSessionsResponseTypedDict", - "GetSessionsStream", - "GetSessionsStreamTypedDict", - "GetSessionsUser", - "GetSessionsUserTypedDict", + "GetSonicPathGlobals", + "GetSonicPathGlobalsTypedDict", + "GetSonicPathRequest", + "GetSonicPathRequestTypedDict", + "GetSonicPathResponse", + "GetSonicPathResponseTypedDict", + "GetSonicallySimilarGlobals", + "GetSonicallySimilarGlobalsTypedDict", + "GetSonicallySimilarRequest", + "GetSonicallySimilarRequestTypedDict", + "GetSonicallySimilarResponse", + "GetSonicallySimilarResponseTypedDict", + "GetSourceConnectionInformationGlobals", + "GetSourceConnectionInformationGlobalsTypedDict", + "GetSourceConnectionInformationMediaContainer", + "GetSourceConnectionInformationMediaContainerTypedDict", "GetSourceConnectionInformationRequest", "GetSourceConnectionInformationRequestTypedDict", "GetSourceConnectionInformationResponse", + "GetSourceConnectionInformationResponseBody", + "GetSourceConnectionInformationResponseBodyTypedDict", "GetSourceConnectionInformationResponseTypedDict", - "GetStatisticsDevice", - "GetStatisticsDeviceTypedDict", - "GetStatisticsMediaContainer", - "GetStatisticsMediaContainerTypedDict", - "GetStatisticsRequest", - "GetStatisticsRequestTypedDict", - "GetStatisticsResponse", - "GetStatisticsResponseBody", - "GetStatisticsResponseBodyTypedDict", - "GetStatisticsResponseTypedDict", - "GetThumbImageRequest", - "GetThumbImageRequestTypedDict", - "GetThumbImageResponse", - "GetThumbImageResponseTypedDict", - "GetTimelineRequest", - "GetTimelineRequestTypedDict", - "GetTimelineResponse", - "GetTimelineResponseTypedDict", - "GetTokenByPinIDAuthPinContainer", - "GetTokenByPinIDAuthPinContainerTypedDict", - "GetTokenByPinIDGeoData", - "GetTokenByPinIDGeoDataTypedDict", - "GetTokenByPinIDRequest", - "GetTokenByPinIDRequestTypedDict", - "GetTokenByPinIDResponse", - "GetTokenByPinIDResponseTypedDict", - "GetTokenDetailsAuthenticationResponseStatus", - "GetTokenDetailsAuthenticationStatus", - "GetTokenDetailsResponse", - "GetTokenDetailsResponseTypedDict", - "GetTokenDetailsStatus", - "GetTokenDetailsSubscription", - "GetTokenDetailsSubscriptionTypedDict", - "GetTokenDetailsUserPlexAccount", - "GetTokenDetailsUserPlexAccountTypedDict", - "GetTopWatchedContentCountry", - "GetTopWatchedContentCountryTypedDict", - "GetTopWatchedContentGenre", - "GetTopWatchedContentGenreTypedDict", - "GetTopWatchedContentGuids", - "GetTopWatchedContentGuidsTypedDict", - "GetTopWatchedContentMediaContainer", - "GetTopWatchedContentMediaContainerTypedDict", - "GetTopWatchedContentMetadata", - "GetTopWatchedContentMetadataTypedDict", - "GetTopWatchedContentQueryParamIncludeGuids", - "GetTopWatchedContentQueryParamType", - "GetTopWatchedContentRequest", - "GetTopWatchedContentRequestTypedDict", - "GetTopWatchedContentResponse", - "GetTopWatchedContentResponseBody", - "GetTopWatchedContentResponseBodyTypedDict", - "GetTopWatchedContentResponseTypedDict", - "GetTopWatchedContentRole", - "GetTopWatchedContentRoleTypedDict", - "GetTopWatchedContentUser", - "GetTopWatchedContentUserTypedDict", - "GetTranscodeSessionsMediaContainer", - "GetTranscodeSessionsMediaContainerTypedDict", - "GetTranscodeSessionsResponse", - "GetTranscodeSessionsResponseBody", - "GetTranscodeSessionsResponseBodyTypedDict", - "GetTranscodeSessionsResponseTypedDict", - "GetTransientTokenQueryParamType", + "GetStreamGlobals", + "GetStreamGlobalsTypedDict", + "GetStreamLevelsGlobals", + "GetStreamLevelsGlobalsTypedDict", + "GetStreamLevelsLevel", + "GetStreamLevelsLevelTypedDict", + "GetStreamLevelsMediaContainer", + "GetStreamLevelsMediaContainerTypedDict", + "GetStreamLevelsRequest", + "GetStreamLevelsRequestTypedDict", + "GetStreamLevelsResponse", + "GetStreamLevelsResponseBody", + "GetStreamLevelsResponseBodyTypedDict", + "GetStreamLevelsResponseTypedDict", + "GetStreamLoudnessGlobals", + "GetStreamLoudnessGlobalsTypedDict", + "GetStreamLoudnessRequest", + "GetStreamLoudnessRequestTypedDict", + "GetStreamLoudnessResponse", + "GetStreamLoudnessResponseTypedDict", + "GetStreamRequest", + "GetStreamRequestTypedDict", + "GetStreamResponse", + "GetStreamResponseTypedDict", + "GetSubscriptionGlobals", + "GetSubscriptionGlobalsTypedDict", + "GetSubscriptionRequest", + "GetSubscriptionRequestTypedDict", + "GetSubscriptionResponse", + "GetSubscriptionResponseTypedDict", + "GetTagsGlobals", + "GetTagsGlobalsTypedDict", + "GetTagsMediaContainer", + "GetTagsMediaContainerTypedDict", + "GetTagsRequest", + "GetTagsRequestTypedDict", + "GetTagsResponse", + "GetTagsResponseBody", + "GetTagsResponseBodyTypedDict", + "GetTagsResponseTypedDict", + "GetTasksResponse", + "GetTasksResponseBody", + "GetTasksResponseBodyTypedDict", + "GetTasksResponseTypedDict", + "GetTemplateGlobals", + "GetTemplateGlobalsTypedDict", + "GetTemplateMediaContainer", + "GetTemplateMediaContainerTypedDict", + "GetTemplateRequest", + "GetTemplateRequestTypedDict", + "GetTemplateResponse", + "GetTemplateResponseBody", + "GetTemplateResponseBodyTypedDict", + "GetTemplateResponseTypedDict", + "GetThumbGlobals", + "GetThumbGlobalsTypedDict", + "GetThumbRequest", + "GetThumbRequestTypedDict", + "GetThumbResponse", + "GetThumbResponseTypedDict", + "GetTransientTokenGlobals", + "GetTransientTokenGlobalsTypedDict", + "GetTransientTokenMediaContainer", + "GetTransientTokenMediaContainerTypedDict", "GetTransientTokenRequest", "GetTransientTokenRequestTypedDict", "GetTransientTokenResponse", + "GetTransientTokenResponseBody", + "GetTransientTokenResponseBodyTypedDict", "GetTransientTokenResponseTypedDict", - "GetUpdateStatusMediaContainer", - "GetUpdateStatusMediaContainerTypedDict", - "GetUpdateStatusResponse", - "GetUpdateStatusResponseBody", - "GetUpdateStatusResponseBodyTypedDict", - "GetUpdateStatusResponseTypedDict", - "GetUserFriendsResponse", - "GetUserFriendsResponseTypedDict", - "GetUsersMediaContainer", - "GetUsersMediaContainerTypedDict", - "GetUsersRequest", - "GetUsersRequestTypedDict", - "GetUsersResponse", - "GetUsersResponseBody", - "GetUsersResponseBodyTypedDict", - "GetUsersResponseTypedDict", - "GetUsersServer", - "GetUsersServerTypedDict", - "GetWatchListRequest", - "GetWatchListRequestTypedDict", - "GetWatchListResponse", - "GetWatchListResponseBody", - "GetWatchListResponseBodyTypedDict", - "GetWatchListResponseTypedDict", - "Guids", - "GuidsTypedDict", - "HasThumbnail", - "Hidden", - "Home", + "GetUpdatesStatusMediaContainer", + "GetUpdatesStatusMediaContainerTypedDict", + "GetUpdatesStatusResponse", + "GetUpdatesStatusResponseBody", + "GetUpdatesStatusResponseBodyTypedDict", + "GetUpdatesStatusResponseTypedDict", + "GetUpdatesStatusState", + "Hints", + "HintsTypedDict", + "HomeVisibility", "Hub", "HubTypedDict", - "Image", - "ImageTypedDict", - "IncludeAdvanced", - "IncludeCollections", - "IncludeDetails", - "IncludeExternalMedia", - "IncludeGuids", - "IncludeHTTPS", - "IncludeIPv6", - "IncludeMeta", - "IncludeRelay", - "InternalPaymentMethod", - "InternalPaymentMethodTypedDict", + "Index", + "IngestTransientItemGlobals", + "IngestTransientItemGlobalsTypedDict", + "IngestTransientItemRequest", + "IngestTransientItemRequestTypedDict", + "IngestTransientItemResponse", + "IngestTransientItemResponseTypedDict", + "Item", + "ItemTypedDict", + "Language", + "LanguageTypedDict", "Level", - "Libtype", + "Lineup", + "LineupType", + "LineupTypedDict", + "ListActivitiesMediaContainer", + "ListActivitiesMediaContainerTypedDict", + "ListActivitiesResponse", + "ListActivitiesResponseBody", + "ListActivitiesResponseBodyTypedDict", + "ListActivitiesResponseTypedDict", + "ListContentGlobals", + "ListContentGlobalsTypedDict", + "ListContentRequest", + "ListContentRequestTypedDict", + "ListContentResponse", + "ListContentResponseTypedDict", + "ListDVRsDVRsMediaContainer", + "ListDVRsDVRsMediaContainerTypedDict", + "ListDVRsMediaContainer", + "ListDVRsMediaContainerTypedDict", + "ListDVRsResponse", + "ListDVRsResponseBody", + "ListDVRsResponseBodyTypedDict", + "ListDVRsResponseTypedDict", + "ListDevicesResponse", + "ListDevicesResponseTypedDict", + "ListDownloadQueueItemsGlobals", + "ListDownloadQueueItemsGlobalsTypedDict", + "ListDownloadQueueItemsMediaContainer", + "ListDownloadQueueItemsMediaContainerTypedDict", + "ListDownloadQueueItemsRequest", + "ListDownloadQueueItemsRequestTypedDict", + "ListDownloadQueueItemsResponse", + "ListDownloadQueueItemsResponseBody", + "ListDownloadQueueItemsResponseBodyTypedDict", + "ListDownloadQueueItemsResponseTypedDict", + "ListDownloadQueueItemsStatus", + "ListHubsGlobals", + "ListHubsGlobalsTypedDict", + "ListHubsMediaContainer", + "ListHubsMediaContainerTypedDict", + "ListHubsRequest", + "ListHubsRequestTypedDict", + "ListHubsResponse", + "ListHubsResponseBody", + "ListHubsResponseBodyTypedDict", + "ListHubsResponseTypedDict", + "ListLineupsGlobals", + "ListLineupsGlobalsTypedDict", + "ListLineupsRequest", + "ListLineupsRequestTypedDict", + "ListLineupsResponse", + "ListLineupsResponseTypedDict", + "ListMatchesGlobals", + "ListMatchesGlobalsTypedDict", + "ListMatchesRequest", + "ListMatchesRequestTypedDict", + "ListMatchesResponse", + "ListMatchesResponseTypedDict", + "ListMomentsGlobals", + "ListMomentsGlobalsTypedDict", + "ListMomentsRequest", + "ListMomentsRequestTypedDict", + "ListMomentsResponse", + "ListMomentsResponseTypedDict", + "ListPersonMediaGlobals", + "ListPersonMediaGlobalsTypedDict", + "ListPersonMediaRequest", + "ListPersonMediaRequestTypedDict", + "ListPersonMediaResponse", + "ListPersonMediaResponseTypedDict", + "ListPlaybackHistoryGlobals", + "ListPlaybackHistoryGlobalsTypedDict", + "ListPlaybackHistoryMediaContainer", + "ListPlaybackHistoryMediaContainerTypedDict", + "ListPlaybackHistoryMetadata", + "ListPlaybackHistoryMetadataTypedDict", + "ListPlaybackHistoryRequest", + "ListPlaybackHistoryRequestTypedDict", + "ListPlaybackHistoryResponse", + "ListPlaybackHistoryResponseBody", + "ListPlaybackHistoryResponseBodyTypedDict", + "ListPlaybackHistoryResponseTypedDict", + "ListPlaylistsGlobals", + "ListPlaylistsGlobalsTypedDict", + "ListPlaylistsRequest", + "ListPlaylistsRequestTypedDict", + "ListPlaylistsResponse", + "ListPlaylistsResponseTypedDict", + "ListProvidersMediaContainer", + "ListProvidersMediaContainerTypedDict", + "ListProvidersResponse", + "ListProvidersResponseBody", + "ListProvidersResponseBodyTypedDict", + "ListProvidersResponseTypedDict", + "ListSessionsMediaContainer", + "ListSessionsMediaContainerTypedDict", + "ListSessionsResponse", + "ListSessionsResponseBody", + "ListSessionsResponseBodyTypedDict", + "ListSessionsResponseTypedDict", + "ListSimilarGlobals", + "ListSimilarGlobalsTypedDict", + "ListSimilarRequest", + "ListSimilarRequestTypedDict", + "ListSimilarResponse", + "ListSimilarResponseTypedDict", + "ListSonicallySimilarGlobals", + "ListSonicallySimilarGlobalsTypedDict", + "ListSonicallySimilarRequest", + "ListSonicallySimilarRequestTypedDict", + "ListSonicallySimilarResponse", + "ListSonicallySimilarResponseTypedDict", + "ListTopUsersGlobals", + "ListTopUsersGlobalsTypedDict", + "ListTopUsersMediaContainer", + "ListTopUsersMediaContainerTypedDict", + "ListTopUsersRequest", + "ListTopUsersRequestTypedDict", + "ListTopUsersResponse", + "ListTopUsersResponseBody", + "ListTopUsersResponseBodyTypedDict", + "ListTopUsersResponseTypedDict", "Location", - "LocationTypedDict", - "LogLineRequest", - "LogLineRequestTypedDict", - "LogLineResponse", - "LogLineResponseTypedDict", - "LogMultiLineResponse", - "LogMultiLineResponseTypedDict", - "MailingListStatus", + "MakeDecisionGlobals", + "MakeDecisionGlobalsTypedDict", + "MakeDecisionRequest", + "MakeDecisionRequestTypedDict", + "MakeDecisionResponse", + "MakeDecisionResponseTypedDict", + "MarkPlayedGlobals", + "MarkPlayedGlobalsTypedDict", "MarkPlayedRequest", "MarkPlayedRequestTypedDict", "MarkPlayedResponse", "MarkPlayedResponseTypedDict", - "MarkUnplayedRequest", - "MarkUnplayedRequestTypedDict", - "MarkUnplayedResponse", - "MarkUnplayedResponseTypedDict", - "Marker", - "MarkerTypedDict", - "Media", + "MatchItemGlobals", + "MatchItemGlobalsTypedDict", + "MatchItemRequest", + "MatchItemRequestTypedDict", + "MatchItemResponse", + "MatchItemResponseTypedDict", "MediaContainer", "MediaContainerTypedDict", - "MediaProvider", - "MediaProviderTypedDict", - "MediaReviewsVisibility", - "MediaTypedDict", - "Meta", - "MetaTypedDict", + "MediaGrabber", + "MediaGrabberTypedDict", + "MediaSettings", + "MediaSettingsTypedDict", + "MediaSubscription", + "MediaSubscriptionTypedDict", + "MergeItemsGlobals", + "MergeItemsGlobalsTypedDict", + "MergeItemsRequest", + "MergeItemsRequestTypedDict", + "MergeItemsResponse", + "MergeItemsResponseTypedDict", "Metadata", "MetadataTypedDict", - "MinSize", - "MyPlex", - "MyPlexTypedDict", - "One", - "OnlyTransient", - "Operator", - "OperatorTypedDict", - "OptimizedForStreaming", - "OptimizedForStreaming1", - "OptimizedForStreamingTypedDict", - "Owned", - "POST_USERS_SIGN_IN_DATA_SERVERS", - "Part", - "PartTypedDict", - "PastSubscription", - "PastSubscriptionTypedDict", - "PathParamTaskName", - "Pending", - "PerformSearchRequest", - "PerformSearchRequestTypedDict", - "PerformSearchResponse", - "PerformSearchResponseTypedDict", - "PerformVoiceSearchRequest", - "PerformVoiceSearchRequestTypedDict", - "PerformVoiceSearchResponse", - "PerformVoiceSearchResponseTypedDict", - "Pivot", - "PivotTypedDict", - "Player", - "PlayerTypedDict", + "ModifyDeviceGlobals", + "ModifyDeviceGlobalsTypedDict", + "ModifyDeviceMediaContainer", + "ModifyDeviceMediaContainerTypedDict", + "ModifyDeviceRequest", + "ModifyDeviceRequestTypedDict", + "ModifyDeviceResponse", + "ModifyDeviceResponseBody", + "ModifyDeviceResponseBodyTypedDict", + "ModifyDeviceResponseTypedDict", + "ModifyPlaylistGeneratorGlobals", + "ModifyPlaylistGeneratorGlobalsTypedDict", + "ModifyPlaylistGeneratorQueryParamLocation", + "ModifyPlaylistGeneratorQueryParamLocationTypedDict", + "ModifyPlaylistGeneratorRequest", + "ModifyPlaylistGeneratorRequestTypedDict", + "ModifyPlaylistGeneratorResponse", + "ModifyPlaylistGeneratorResponseTypedDict", + "MoveCollectionItemGlobals", + "MoveCollectionItemGlobalsTypedDict", + "MoveCollectionItemRequest", + "MoveCollectionItemRequestTypedDict", + "MoveCollectionItemResponse", + "MoveCollectionItemResponseTypedDict", + "MoveHubGlobals", + "MoveHubGlobalsTypedDict", + "MoveHubRequest", + "MoveHubRequestTypedDict", + "MoveHubResponse", + "MoveHubResponseTypedDict", + "MovePlayQueueItemGlobals", + "MovePlayQueueItemGlobalsTypedDict", + "MovePlayQueueItemRequest", + "MovePlayQueueItemRequestTypedDict", + "MovePlayQueueItemResponse", + "MovePlayQueueItemResponseTypedDict", + "MovePlaylistItemGlobals", + "MovePlaylistItemGlobalsTypedDict", + "MovePlaylistItemRequest", + "MovePlaylistItemRequestTypedDict", + "MovePlaylistItemResponse", + "MovePlaylistItemResponseTypedDict", + "OptimizeDatabaseGlobals", + "OptimizeDatabaseGlobalsTypedDict", + "OptimizeDatabaseRequest", + "OptimizeDatabaseRequestTypedDict", + "OptimizeDatabaseResponse", + "OptimizeDatabaseResponseTypedDict", + "Params", + "ParamsTypedDict", + "PathParamElement", + "PathParamIndex", + "PathParamTask", + "PlayQueueGenerator", + "PlayQueueGeneratorTypedDict", "PlaylistType", - "PlexDevice", - "PlexDeviceTypedDict", - "PostMediaArtsRequest", - "PostMediaArtsRequestTypedDict", - "PostMediaArtsResponse", - "PostMediaArtsResponseTypedDict", - "PostMediaPosterRequest", - "PostMediaPosterRequestTypedDict", - "PostMediaPosterResponse", - "PostMediaPosterResponseTypedDict", - "PostUsersSignInDataAuthenticationResponseStatus", - "PostUsersSignInDataAuthenticationStatus", - "PostUsersSignInDataAuthenticationSubscription", - "PostUsersSignInDataAuthenticationSubscriptionTypedDict", - "PostUsersSignInDataAutoSelectSubtitle", - "PostUsersSignInDataDefaultSubtitleAccessibility", - "PostUsersSignInDataDefaultSubtitleForced", - "PostUsersSignInDataMailingListStatus", - "PostUsersSignInDataMediaReviewsVisibility", - "PostUsersSignInDataRequest", - "PostUsersSignInDataRequestBody", - "PostUsersSignInDataRequestBodyTypedDict", - "PostUsersSignInDataRequestTypedDict", - "PostUsersSignInDataResponse", - "PostUsersSignInDataResponseTypedDict", - "PostUsersSignInDataServices", - "PostUsersSignInDataServicesTypedDict", - "PostUsersSignInDataState", - "PostUsersSignInDataStatus", - "PostUsersSignInDataSubscription", - "PostUsersSignInDataSubscriptionTypedDict", - "PostUsersSignInDataUserPlexAccount", - "PostUsersSignInDataUserPlexAccountTypedDict", - "PostUsersSignInDataUserProfile", - "PostUsersSignInDataUserProfileTypedDict", - "PostUsersSignInDataWatchedIndicator", - "Producer", - "ProducerTypedDict", - "Protected", + "Policy", + "PolicyTypedDict", + "Prefs", + "PrefsTypedDict", + "ProcessSubscriptionsResponse", + "ProcessSubscriptionsResponseTypedDict", + "ProcessingState", + "ProcessingStateContext", "Protocol", - "Provider", - "ProviderTypedDict", - "QueryParamFilter", - "QueryParamFilterTypedDict", - "QueryParamForce", - "QueryParamIncludeCollections", - "QueryParamIncludeExternalMedia", - "QueryParamIncludeGuids", - "QueryParamIncludeMeta", - "QueryParamOnlyTransient", - "QueryParamSmart", + "QueryParamArgs", + "QueryParamArgsTypedDict", + "QueryParamAttributes", + "QueryParamAttributesTypedDict", + "QueryParamLocation", + "QueryParamPrefs", + "QueryParamPrefsTypedDict", + "QueryParamProtocol", + "QueryParamScope", + "QueryParamSubtitles", "QueryParamType", - "Rating", - "RatingTypedDict", - "Ratings", - "RatingsTypedDict", + "RecommendationsVisibility", + "RefreshItemsMetadataGlobals", + "RefreshItemsMetadataGlobalsTypedDict", + "RefreshItemsMetadataRequest", + "RefreshItemsMetadataRequestTypedDict", + "RefreshItemsMetadataResponse", + "RefreshItemsMetadataResponseTypedDict", + "RefreshPlaylistGlobals", + "RefreshPlaylistGlobalsTypedDict", + "RefreshPlaylistRequest", + "RefreshPlaylistRequestTypedDict", + "RefreshPlaylistResponse", + "RefreshPlaylistResponseTypedDict", + "RefreshProvidersResponse", + "RefreshProvidersResponseTypedDict", + "RefreshSectionGlobals", + "RefreshSectionGlobalsTypedDict", + "RefreshSectionRequest", + "RefreshSectionRequestTypedDict", + "RefreshSectionResponse", + "RefreshSectionResponseTypedDict", + "RefreshSectionsMetadataGlobals", + "RefreshSectionsMetadataGlobalsTypedDict", + "RefreshSectionsMetadataRequest", + "RefreshSectionsMetadataRequestTypedDict", + "RefreshSectionsMetadataResponse", + "RefreshSectionsMetadataResponseTypedDict", "Release", "ReleaseTypedDict", - "ResponseBody", - "ResponseBodyTypedDict", - "Restricted", - "Role", - "RoleTypedDict", + "ReloadGuideGlobals", + "ReloadGuideGlobalsTypedDict", + "ReloadGuideRequest", + "ReloadGuideRequestTypedDict", + "ReloadGuideResponse", + "ReloadGuideResponseTypedDict", + "RemoveDeviceFromDVRDVR", + "RemoveDeviceFromDVRDVRTypedDict", + "RemoveDeviceFromDVRDVRsMediaContainer", + "RemoveDeviceFromDVRDVRsMediaContainerTypedDict", + "RemoveDeviceFromDVRGlobals", + "RemoveDeviceFromDVRGlobalsTypedDict", + "RemoveDeviceFromDVRMediaContainer", + "RemoveDeviceFromDVRMediaContainerTypedDict", + "RemoveDeviceFromDVRRequest", + "RemoveDeviceFromDVRRequestTypedDict", + "RemoveDeviceFromDVRResponse", + "RemoveDeviceFromDVRResponseBody", + "RemoveDeviceFromDVRResponseBodyTypedDict", + "RemoveDeviceFromDVRResponseTypedDict", + "RemoveDeviceGlobals", + "RemoveDeviceGlobalsTypedDict", + "RemoveDeviceMediaContainer", + "RemoveDeviceMediaContainerTypedDict", + "RemoveDeviceRequest", + "RemoveDeviceRequestTypedDict", + "RemoveDeviceResponse", + "RemoveDeviceResponseBody", + "RemoveDeviceResponseBodyTypedDict", + "RemoveDeviceResponseTypedDict", + "RemoveDownloadQueueItemsGlobals", + "RemoveDownloadQueueItemsGlobalsTypedDict", + "RemoveDownloadQueueItemsRequest", + "RemoveDownloadQueueItemsRequestTypedDict", + "RemoveDownloadQueueItemsResponse", + "RemoveDownloadQueueItemsResponseTypedDict", + "ReorderSubscriptionGlobals", + "ReorderSubscriptionGlobalsTypedDict", + "ReorderSubscriptionRequest", + "ReorderSubscriptionRequestTypedDict", + "ReorderSubscriptionResponse", + "ReorderSubscriptionResponseTypedDict", + "ReportGlobals", + "ReportGlobalsTypedDict", + "ReportRequest", + "ReportRequestTypedDict", + "ReportResponse", + "ReportResponseBody", + "ReportResponseBodyTypedDict", + "ReportResponseTypedDict", + "ResetPlayQueueGlobals", + "ResetPlayQueueGlobalsTypedDict", + "ResetPlayQueueRequest", + "ResetPlayQueueRequestTypedDict", + "ResetPlayQueueResponse", + "ResetPlayQueueResponseTypedDict", + "ResetSectionDefaultsGlobals", + "ResetSectionDefaultsGlobalsTypedDict", + "ResetSectionDefaultsRequest", + "ResetSectionDefaultsRequestTypedDict", + "ResetSectionDefaultsResponse", + "ResetSectionDefaultsResponseTypedDict", + "RestartProcessingDownloadQueueItemsGlobals", + "RestartProcessingDownloadQueueItemsGlobalsTypedDict", + "RestartProcessingDownloadQueueItemsRequest", + "RestartProcessingDownloadQueueItemsRequestTypedDict", + "RestartProcessingDownloadQueueItemsResponse", + "RestartProcessingDownloadQueueItemsResponseTypedDict", + "ScanGlobals", + "ScanGlobalsTypedDict", + "ScanRequest", + "ScanRequestTypedDict", + "ScanResponse", + "ScanResponseTypedDict", "Scope", - "SearchResult", - "SearchResultTypedDict", - "SearchTypes", - "Server", - "ServerTypedDict", - "Services", - "ServicesTypedDict", - "Session", - "SessionTypedDict", - "Setting", - "SettingTypedDict", - "SharedServers", - "SharedServersTypedDict", - "SharedSources", - "SharedSourcesTypedDict", - "ShowOrdering", - "Similar", - "SimilarTypedDict", - "Skip", - "Smart", - "Sort", - "SortTypedDict", - "StartAllTasksResponse", - "StartAllTasksResponseTypedDict", + "SearchHubsGlobals", + "SearchHubsGlobalsTypedDict", + "SearchHubsMediaContainer", + "SearchHubsMediaContainerTypedDict", + "SearchHubsRequest", + "SearchHubsRequestTypedDict", + "SearchHubsResponse", + "SearchHubsResponseBody", + "SearchHubsResponseBodyTypedDict", + "SearchHubsResponseTypedDict", + "SetChannelmapGlobals", + "SetChannelmapGlobalsTypedDict", + "SetChannelmapRequest", + "SetChannelmapRequestTypedDict", + "SetChannelmapResponse", + "SetChannelmapResponseTypedDict", + "SetDVRPreferencesDVR", + "SetDVRPreferencesDVRTypedDict", + "SetDVRPreferencesDVRsMediaContainer", + "SetDVRPreferencesDVRsMediaContainerTypedDict", + "SetDVRPreferencesGlobals", + "SetDVRPreferencesGlobalsTypedDict", + "SetDVRPreferencesMediaContainer", + "SetDVRPreferencesMediaContainerTypedDict", + "SetDVRPreferencesRequest", + "SetDVRPreferencesRequestTypedDict", + "SetDVRPreferencesResponse", + "SetDVRPreferencesResponseBody", + "SetDVRPreferencesResponseBodyTypedDict", + "SetDVRPreferencesResponseTypedDict", + "SetDevicePreferencesGlobals", + "SetDevicePreferencesGlobalsTypedDict", + "SetDevicePreferencesRequest", + "SetDevicePreferencesRequestTypedDict", + "SetDevicePreferencesResponse", + "SetDevicePreferencesResponseTypedDict", + "SetItemArtworkGlobals", + "SetItemArtworkGlobalsTypedDict", + "SetItemArtworkRequest", + "SetItemArtworkRequestTypedDict", + "SetItemArtworkResponse", + "SetItemArtworkResponseTypedDict", + "SetItemPreferencesGlobals", + "SetItemPreferencesGlobalsTypedDict", + "SetItemPreferencesRequest", + "SetItemPreferencesRequestTypedDict", + "SetItemPreferencesResponse", + "SetItemPreferencesResponseTypedDict", + "SetPreferencesGlobals", + "SetPreferencesGlobalsTypedDict", + "SetPreferencesRequest", + "SetPreferencesRequestTypedDict", + "SetPreferencesResponse", + "SetPreferencesResponseTypedDict", + "SetRatingGlobals", + "SetRatingGlobalsTypedDict", + "SetRatingRequest", + "SetRatingRequestTypedDict", + "SetRatingResponse", + "SetRatingResponseTypedDict", + "SetSectionPreferencesGlobals", + "SetSectionPreferencesGlobalsTypedDict", + "SetSectionPreferencesQueryParamPrefs", + "SetSectionPreferencesQueryParamPrefsTypedDict", + "SetSectionPreferencesRequest", + "SetSectionPreferencesRequestTypedDict", + "SetSectionPreferencesResponse", + "SetSectionPreferencesResponseTypedDict", + "SetStreamOffsetGlobals", + "SetStreamOffsetGlobalsTypedDict", + "SetStreamOffsetRequest", + "SetStreamOffsetRequestTypedDict", + "SetStreamOffsetResponse", + "SetStreamOffsetResponseTypedDict", + "SetStreamSelectionGlobals", + "SetStreamSelectionGlobalsTypedDict", + "SetStreamSelectionRequest", + "SetStreamSelectionRequestTypedDict", + "SetStreamSelectionResponse", + "SetStreamSelectionResponseTypedDict", + "ShuffleGlobals", + "ShuffleGlobalsTypedDict", + "ShuffleRequest", + "ShuffleRequestTypedDict", + "ShuffleResponse", + "ShuffleResponseTypedDict", + "SplitItemGlobals", + "SplitItemGlobalsTypedDict", + "SplitItemRequest", + "SplitItemRequestTypedDict", + "SplitItemResponse", + "SplitItemResponseTypedDict", + "StartAnalysisGlobals", + "StartAnalysisGlobalsTypedDict", + "StartAnalysisRequest", + "StartAnalysisRequestTypedDict", + "StartAnalysisResponse", + "StartAnalysisResponseTypedDict", + "StartBifGenerationGlobals", + "StartBifGenerationGlobalsTypedDict", + "StartBifGenerationRequest", + "StartBifGenerationRequestTypedDict", + "StartBifGenerationResponse", + "StartBifGenerationResponseTypedDict", + "StartTaskGlobals", + "StartTaskGlobalsTypedDict", "StartTaskRequest", "StartTaskRequestTypedDict", "StartTaskResponse", "StartTaskResponseTypedDict", - "StartUniversalTranscodeRequest", - "StartUniversalTranscodeRequestTypedDict", - "StartUniversalTranscodeResponse", - "StartUniversalTranscodeResponseTypedDict", + "StartTasksResponse", + "StartTasksResponseTypedDict", + "StartTranscodeSessionGlobals", + "StartTranscodeSessionGlobalsTypedDict", + "StartTranscodeSessionQueryParamLocation", + "StartTranscodeSessionQueryParamProtocol", + "StartTranscodeSessionQueryParamSubtitles", + "StartTranscodeSessionRequest", + "StartTranscodeSessionRequestTypedDict", + "StartTranscodeSessionResponse", + "StartTranscodeSessionResponseTypedDict", "State", - "StatisticsBandwidth", - "StatisticsBandwidthTypedDict", - "StatisticsMedia", - "StatisticsMediaTypedDict", - "StatisticsResources", - "StatisticsResourcesTypedDict", "Status", - "StopAllTasksResponse", - "StopAllTasksResponseTypedDict", + "StopAllRefreshesResponse", + "StopAllRefreshesResponseTypedDict", + "StopDVRReloadGlobals", + "StopDVRReloadGlobalsTypedDict", + "StopDVRReloadRequest", + "StopDVRReloadRequestTypedDict", + "StopDVRReloadResponse", + "StopDVRReloadResponseTypedDict", + "StopScanGlobals", + "StopScanGlobalsTypedDict", + "StopScanRequest", + "StopScanRequestTypedDict", + "StopScanResponse", + "StopScanResponseTypedDict", + "StopTaskGlobals", + "StopTaskGlobalsTypedDict", "StopTaskRequest", "StopTaskRequestTypedDict", "StopTaskResponse", "StopTaskResponseTypedDict", - "StopTranscodeSessionRequest", - "StopTranscodeSessionRequestTypedDict", - "StopTranscodeSessionResponse", - "StopTranscodeSessionResponseTypedDict", - "Stream", - "StreamTypedDict", - "Subscription", - "SubscriptionTypedDict", - "Tag", - "TaskName", - "Tonight", - "TranscodeSession", - "TranscodeSessionTypedDict", - "Trials", - "TrialsTypedDict", + "StopTasksResponse", + "StopTasksResponseTypedDict", + "SubscriptionTemplate", + "SubscriptionTemplateTypedDict", + "Subtitles", + "Task", + "TerminateSessionGlobals", + "TerminateSessionGlobalsTypedDict", + "TerminateSessionRequest", + "TerminateSessionRequestTypedDict", + "TerminateSessionResponse", + "TerminateSessionResponseTypedDict", + "Transcode", + "TranscodeImageGlobals", + "TranscodeImageGlobalsTypedDict", + "TranscodeImageRequest", + "TranscodeImageRequestTypedDict", + "TranscodeImageResponse", + "TranscodeImageResponseTypedDict", + "TranscodeJob", + "TranscodeJobTypedDict", + "TranscodeSubtitlesGlobals", + "TranscodeSubtitlesGlobalsTypedDict", + "TranscodeSubtitlesRequest", + "TranscodeSubtitlesRequestTypedDict", + "TranscodeSubtitlesResponse", + "TranscodeSubtitlesResponseTypedDict", + "TranscodeTypedDict", + "TriggerFallbackGlobals", + "TriggerFallbackGlobalsTypedDict", + "TriggerFallbackRequest", + "TriggerFallbackRequestTypedDict", + "TriggerFallbackResponse", + "TriggerFallbackResponseTypedDict", + "TuneChannelGlobals", + "TuneChannelGlobalsTypedDict", + "TuneChannelRequest", + "TuneChannelRequestTypedDict", + "TuneChannelResponse", + "TuneChannelResponseTypedDict", "Type", "UltraBlurColors", "UltraBlurColorsTypedDict", - "UpdatePlayProgressRequest", - "UpdatePlayProgressRequestTypedDict", - "UpdatePlayProgressResponse", - "UpdatePlayProgressResponseTypedDict", + "UnmatchGlobals", + "UnmatchGlobalsTypedDict", + "UnmatchRequest", + "UnmatchRequestTypedDict", + "UnmatchResponse", + "UnmatchResponseTypedDict", + "UnscrobbleGlobals", + "UnscrobbleGlobalsTypedDict", + "UnscrobbleRequest", + "UnscrobbleRequestTypedDict", + "UnscrobbleResponse", + "UnscrobbleResponseTypedDict", + "UnshuffleGlobals", + "UnshuffleGlobalsTypedDict", + "UnshuffleRequest", + "UnshuffleRequestTypedDict", + "UnshuffleResponse", + "UnshuffleResponseTypedDict", + "UpdateHubVisibilityGlobals", + "UpdateHubVisibilityGlobalsTypedDict", + "UpdateHubVisibilityRequest", + "UpdateHubVisibilityRequestTypedDict", + "UpdateHubVisibilityResponse", + "UpdateHubVisibilityResponseTypedDict", + "UpdateItemArtworkGlobals", + "UpdateItemArtworkGlobalsTypedDict", + "UpdateItemArtworkRequest", + "UpdateItemArtworkRequestTypedDict", + "UpdateItemArtworkResponse", + "UpdateItemArtworkResponseTypedDict", + "UpdateItemsGlobals", + "UpdateItemsGlobalsTypedDict", + "UpdateItemsRequest", + "UpdateItemsRequestTypedDict", + "UpdateItemsResponse", + "UpdateItemsResponseTypedDict", + "UpdatePlaylistGlobals", + "UpdatePlaylistGlobalsTypedDict", "UpdatePlaylistRequest", "UpdatePlaylistRequestTypedDict", "UpdatePlaylistResponse", "UpdatePlaylistResponseTypedDict", + "UploadPlaylistGlobals", + "UploadPlaylistGlobalsTypedDict", "UploadPlaylistRequest", "UploadPlaylistRequestTypedDict", "UploadPlaylistResponse", "UploadPlaylistResponseTypedDict", - "Upscale", - "User", - "UserProfile", - "UserProfileTypedDict", - "UserTypedDict", - "WatchedIndicator", - "Writer", - "WriterTypedDict", + "VoiceSearchHubsGlobals", + "VoiceSearchHubsGlobalsTypedDict", + "VoiceSearchHubsMediaContainer", + "VoiceSearchHubsMediaContainerTypedDict", + "VoiceSearchHubsRequest", + "VoiceSearchHubsRequestTypedDict", + "VoiceSearchHubsResponse", + "VoiceSearchHubsResponseBody", + "VoiceSearchHubsResponseBodyTypedDict", + "VoiceSearchHubsResponseTypedDict", + "WriteLogResponse", + "WriteLogResponseTypedDict", + "WriteMessageGlobals", + "WriteMessageGlobalsTypedDict", + "WriteMessageRequest", + "WriteMessageRequestTypedDict", + "WriteMessageResponse", + "WriteMessageResponseTypedDict", ] _dynamic_imports: dict[str, str] = { - "AddPlaylistContentsMediaContainer": ".addplaylistcontents", - "AddPlaylistContentsMediaContainerTypedDict": ".addplaylistcontents", - "AddPlaylistContentsMetadata": ".addplaylistcontents", - "AddPlaylistContentsMetadataTypedDict": ".addplaylistcontents", - "AddPlaylistContentsRequest": ".addplaylistcontents", - "AddPlaylistContentsRequestTypedDict": ".addplaylistcontents", - "AddPlaylistContentsResponse": ".addplaylistcontents", - "AddPlaylistContentsResponseBody": ".addplaylistcontents", - "AddPlaylistContentsResponseBodyTypedDict": ".addplaylistcontents", - "AddPlaylistContentsResponseTypedDict": ".addplaylistcontents", + "AddCollectionItemsGlobals": ".addcollectionitems", + "AddCollectionItemsGlobalsTypedDict": ".addcollectionitems", + "AddCollectionItemsRequest": ".addcollectionitems", + "AddCollectionItemsRequestTypedDict": ".addcollectionitems", + "AddCollectionItemsResponse": ".addcollectionitems", + "AddCollectionItemsResponseTypedDict": ".addcollectionitems", + "AddDeviceGlobals": ".adddevice", + "AddDeviceGlobalsTypedDict": ".adddevice", + "AddDeviceRequest": ".adddevice", + "AddDeviceRequestTypedDict": ".adddevice", + "AddDeviceResponse": ".adddevice", + "AddDeviceResponseTypedDict": ".adddevice", + "AddDeviceToDVRDVR": ".adddevicetodvr", + "AddDeviceToDVRDVRTypedDict": ".adddevicetodvr", + "AddDeviceToDVRDVRsMediaContainer": ".adddevicetodvr", + "AddDeviceToDVRDVRsMediaContainerTypedDict": ".adddevicetodvr", + "AddDeviceToDVRGlobals": ".adddevicetodvr", + "AddDeviceToDVRGlobalsTypedDict": ".adddevicetodvr", + "AddDeviceToDVRMediaContainer": ".adddevicetodvr", + "AddDeviceToDVRMediaContainerTypedDict": ".adddevicetodvr", + "AddDeviceToDVRRequest": ".adddevicetodvr", + "AddDeviceToDVRRequestTypedDict": ".adddevicetodvr", + "AddDeviceToDVRResponse": ".adddevicetodvr", + "AddDeviceToDVRResponseBody": ".adddevicetodvr", + "AddDeviceToDVRResponseBodyTypedDict": ".adddevicetodvr", + "AddDeviceToDVRResponseTypedDict": ".adddevicetodvr", + "AddDownloadQueueItemsGlobals": ".adddownloadqueueitems", + "AddDownloadQueueItemsGlobalsTypedDict": ".adddownloadqueueitems", + "AddDownloadQueueItemsMediaContainer": ".adddownloadqueueitems", + "AddDownloadQueueItemsMediaContainerTypedDict": ".adddownloadqueueitems", + "AddDownloadQueueItemsRequest": ".adddownloadqueueitems", + "AddDownloadQueueItemsRequestTypedDict": ".adddownloadqueueitems", + "AddDownloadQueueItemsResponse": ".adddownloadqueueitems", + "AddDownloadQueueItemsResponseBody": ".adddownloadqueueitems", + "AddDownloadQueueItemsResponseBodyTypedDict": ".adddownloadqueueitems", + "AddDownloadQueueItemsResponseTypedDict": ".adddownloadqueueitems", + "AddedQueueItems": ".adddownloadqueueitems", + "AddedQueueItemsTypedDict": ".adddownloadqueueitems", + "AddExtrasGlobals": ".addextras", + "AddExtrasGlobalsTypedDict": ".addextras", + "AddExtrasRequest": ".addextras", + "AddExtrasRequestTypedDict": ".addextras", + "AddExtrasResponse": ".addextras", + "AddExtrasResponseTypedDict": ".addextras", + "AddLineupDVR": ".addlineup", + "AddLineupDVRTypedDict": ".addlineup", + "AddLineupDVRsMediaContainer": ".addlineup", + "AddLineupDVRsMediaContainerTypedDict": ".addlineup", + "AddLineupGlobals": ".addlineup", + "AddLineupGlobalsTypedDict": ".addlineup", + "AddLineupMediaContainer": ".addlineup", + "AddLineupMediaContainerTypedDict": ".addlineup", + "AddLineupRequest": ".addlineup", + "AddLineupRequestTypedDict": ".addlineup", + "AddLineupResponse": ".addlineup", + "AddLineupResponseBody": ".addlineup", + "AddLineupResponseBodyTypedDict": ".addlineup", + "AddLineupResponseTypedDict": ".addlineup", + "AddPlaylistItemsGlobals": ".addplaylistitems", + "AddPlaylistItemsGlobalsTypedDict": ".addplaylistitems", + "AddPlaylistItemsRequest": ".addplaylistitems", + "AddPlaylistItemsRequestTypedDict": ".addplaylistitems", + "AddPlaylistItemsResponse": ".addplaylistitems", + "AddPlaylistItemsResponseTypedDict": ".addplaylistitems", + "AddProviderGlobals": ".addprovider", + "AddProviderGlobalsTypedDict": ".addprovider", + "AddProviderRequest": ".addprovider", + "AddProviderRequestTypedDict": ".addprovider", + "AddProviderResponse": ".addprovider", + "AddProviderResponseTypedDict": ".addprovider", + "AddSectionGlobals": ".addsection", + "AddSectionGlobalsTypedDict": ".addsection", + "AddSectionRequest": ".addsection", + "AddSectionRequestTypedDict": ".addsection", + "AddSectionResponse": ".addsection", + "AddSectionResponseTypedDict": ".addsection", + "QueryParamPrefs": ".addsection", + "QueryParamPrefsTypedDict": ".addsection", + "AddSubtitlesGlobals": ".addsubtitles", + "AddSubtitlesGlobalsTypedDict": ".addsubtitles", + "AddSubtitlesRequest": ".addsubtitles", + "AddSubtitlesRequestTypedDict": ".addsubtitles", + "AddSubtitlesResponse": ".addsubtitles", + "AddSubtitlesResponseTypedDict": ".addsubtitles", + "AddToPlayQueueGlobals": ".addtoplayqueue", + "AddToPlayQueueGlobalsTypedDict": ".addtoplayqueue", + "AddToPlayQueueRequest": ".addtoplayqueue", + "AddToPlayQueueRequestTypedDict": ".addtoplayqueue", + "AddToPlayQueueResponse": ".addtoplayqueue", + "AddToPlayQueueResponseTypedDict": ".addtoplayqueue", + "AnalyzeMetadataGlobals": ".analyzemetadata", + "AnalyzeMetadataGlobalsTypedDict": ".analyzemetadata", + "AnalyzeMetadataRequest": ".analyzemetadata", + "AnalyzeMetadataRequestTypedDict": ".analyzemetadata", + "AnalyzeMetadataResponse": ".analyzemetadata", + "AnalyzeMetadataResponseTypedDict": ".analyzemetadata", + "ApplyUpdatesGlobals": ".applyupdates", + "ApplyUpdatesGlobalsTypedDict": ".applyupdates", "ApplyUpdatesRequest": ".applyupdates", "ApplyUpdatesRequestTypedDict": ".applyupdates", "ApplyUpdatesResponse": ".applyupdates", "ApplyUpdatesResponseTypedDict": ".applyupdates", - "Skip": ".applyupdates", - "Tonight": ".applyupdates", - "CancelServerActivitiesRequest": ".cancelserveractivities", - "CancelServerActivitiesRequestTypedDict": ".cancelserveractivities", - "CancelServerActivitiesResponse": ".cancelserveractivities", - "CancelServerActivitiesResponseTypedDict": ".cancelserveractivities", - "CheckForUpdatesRequest": ".checkforupdates", - "CheckForUpdatesRequestTypedDict": ".checkforupdates", - "CheckForUpdatesResponse": ".checkforupdates", - "CheckForUpdatesResponseTypedDict": ".checkforupdates", - "Download": ".checkforupdates", - "ClearPlaylistContentsRequest": ".clearplaylistcontents", - "ClearPlaylistContentsRequestTypedDict": ".clearplaylistcontents", - "ClearPlaylistContentsResponse": ".clearplaylistcontents", - "ClearPlaylistContentsResponseTypedDict": ".clearplaylistcontents", - "CreatePlaylistMediaContainer": ".createplaylist", - "CreatePlaylistMediaContainerTypedDict": ".createplaylist", - "CreatePlaylistMetadata": ".createplaylist", - "CreatePlaylistMetadataTypedDict": ".createplaylist", - "CreatePlaylistQueryParamType": ".createplaylist", + "AutocompleteGlobals": ".autocomplete", + "AutocompleteGlobalsTypedDict": ".autocomplete", + "AutocompleteRequest": ".autocomplete", + "AutocompleteRequestTypedDict": ".autocomplete", + "AutocompleteResponse": ".autocomplete", + "AutocompleteResponseTypedDict": ".autocomplete", + "CancelActivityGlobals": ".cancelactivity", + "CancelActivityGlobalsTypedDict": ".cancelactivity", + "CancelActivityRequest": ".cancelactivity", + "CancelActivityRequestTypedDict": ".cancelactivity", + "CancelActivityResponse": ".cancelactivity", + "CancelActivityResponseTypedDict": ".cancelactivity", + "CancelGrabGlobals": ".cancelgrab", + "CancelGrabGlobalsTypedDict": ".cancelgrab", + "CancelGrabRequest": ".cancelgrab", + "CancelGrabRequestTypedDict": ".cancelgrab", + "CancelGrabResponse": ".cancelgrab", + "CancelGrabResponseTypedDict": ".cancelgrab", + "CancelRefreshGlobals": ".cancelrefresh", + "CancelRefreshGlobalsTypedDict": ".cancelrefresh", + "CancelRefreshRequest": ".cancelrefresh", + "CancelRefreshRequestTypedDict": ".cancelrefresh", + "CancelRefreshResponse": ".cancelrefresh", + "CancelRefreshResponseTypedDict": ".cancelrefresh", + "CheckUpdatesGlobals": ".checkupdates", + "CheckUpdatesGlobalsTypedDict": ".checkupdates", + "CheckUpdatesRequest": ".checkupdates", + "CheckUpdatesRequestTypedDict": ".checkupdates", + "CheckUpdatesResponse": ".checkupdates", + "CheckUpdatesResponseTypedDict": ".checkupdates", + "CleanBundlesResponse": ".cleanbundles", + "CleanBundlesResponseTypedDict": ".cleanbundles", + "ClearPlaylistItemsGlobals": ".clearplaylistitems", + "ClearPlaylistItemsGlobalsTypedDict": ".clearplaylistitems", + "ClearPlaylistItemsRequest": ".clearplaylistitems", + "ClearPlaylistItemsRequestTypedDict": ".clearplaylistitems", + "ClearPlaylistItemsResponse": ".clearplaylistitems", + "ClearPlaylistItemsResponseTypedDict": ".clearplaylistitems", + "ClearPlayQueueGlobals": ".clearplayqueue", + "ClearPlayQueueGlobalsTypedDict": ".clearplayqueue", + "ClearPlayQueueRequest": ".clearplayqueue", + "ClearPlayQueueRequestTypedDict": ".clearplayqueue", + "ClearPlayQueueResponse": ".clearplayqueue", + "ClearPlayQueueResponseTypedDict": ".clearplayqueue", + "ComputeChannelMapChannelMapping": ".computechannelmap", + "ComputeChannelMapChannelMappingTypedDict": ".computechannelmap", + "ComputeChannelMapGlobals": ".computechannelmap", + "ComputeChannelMapGlobalsTypedDict": ".computechannelmap", + "ComputeChannelMapMediaContainer": ".computechannelmap", + "ComputeChannelMapMediaContainerTypedDict": ".computechannelmap", + "ComputeChannelMapRequest": ".computechannelmap", + "ComputeChannelMapRequestTypedDict": ".computechannelmap", + "ComputeChannelMapResponse": ".computechannelmap", + "ComputeChannelMapResponseBody": ".computechannelmap", + "ComputeChannelMapResponseBodyTypedDict": ".computechannelmap", + "ComputeChannelMapResponseTypedDict": ".computechannelmap", + "ConnectWebSocketGlobals": ".connectwebsocket", + "ConnectWebSocketGlobalsTypedDict": ".connectwebsocket", + "ConnectWebSocketRequest": ".connectwebsocket", + "ConnectWebSocketRequestTypedDict": ".connectwebsocket", + "ConnectWebSocketResponse": ".connectwebsocket", + "ConnectWebSocketResponseTypedDict": ".connectwebsocket", + "CreateCollectionGlobals": ".createcollection", + "CreateCollectionGlobalsTypedDict": ".createcollection", + "CreateCollectionRequest": ".createcollection", + "CreateCollectionRequestTypedDict": ".createcollection", + "CreateCollectionResponse": ".createcollection", + "CreateCollectionResponseTypedDict": ".createcollection", + "CreateCustomHubGlobals": ".createcustomhub", + "CreateCustomHubGlobalsTypedDict": ".createcustomhub", + "CreateCustomHubRequest": ".createcustomhub", + "CreateCustomHubRequestTypedDict": ".createcustomhub", + "CreateCustomHubResponse": ".createcustomhub", + "CreateCustomHubResponseTypedDict": ".createcustomhub", + "CreateDownloadQueueMediaContainer": ".createdownloadqueue", + "CreateDownloadQueueMediaContainerTypedDict": ".createdownloadqueue", + "CreateDownloadQueueResponse": ".createdownloadqueue", + "CreateDownloadQueueResponseBody": ".createdownloadqueue", + "CreateDownloadQueueResponseBodyTypedDict": ".createdownloadqueue", + "CreateDownloadQueueResponseTypedDict": ".createdownloadqueue", + "DownloadQueue": ".createdownloadqueue", + "DownloadQueueTypedDict": ".createdownloadqueue", + "Status": ".createdownloadqueue", + "CreateDVRGlobals": ".createdvr", + "CreateDVRGlobalsTypedDict": ".createdvr", + "CreateDVRRequest": ".createdvr", + "CreateDVRRequestTypedDict": ".createdvr", + "CreateDVRResponse": ".createdvr", + "CreateDVRResponseTypedDict": ".createdvr", + "Attributes": ".createmarker", + "AttributesTypedDict": ".createmarker", + "CreateMarkerGlobals": ".createmarker", + "CreateMarkerGlobalsTypedDict": ".createmarker", + "CreateMarkerMediaContainer": ".createmarker", + "CreateMarkerMediaContainerTypedDict": ".createmarker", + "CreateMarkerRequest": ".createmarker", + "CreateMarkerRequestTypedDict": ".createmarker", + "CreateMarkerResponse": ".createmarker", + "CreateMarkerResponseBody": ".createmarker", + "CreateMarkerResponseBodyTypedDict": ".createmarker", + "CreateMarkerResponseTypedDict": ".createmarker", + "CreateMarkerType": ".createmarker", + "CreatePlaylistGlobals": ".createplaylist", + "CreatePlaylistGlobalsTypedDict": ".createplaylist", "CreatePlaylistRequest": ".createplaylist", "CreatePlaylistRequestTypedDict": ".createplaylist", "CreatePlaylistResponse": ".createplaylist", - "CreatePlaylistResponseBody": ".createplaylist", - "CreatePlaylistResponseBodyTypedDict": ".createplaylist", "CreatePlaylistResponseTypedDict": ".createplaylist", - "Smart": ".createplaylist", - "DeleteLibraryRequest": ".deletelibrary", - "DeleteLibraryRequestTypedDict": ".deletelibrary", - "DeleteLibraryResponse": ".deletelibrary", - "DeleteLibraryResponseTypedDict": ".deletelibrary", + "CreatePlayQueueGlobals": ".createplayqueue", + "CreatePlayQueueGlobalsTypedDict": ".createplayqueue", + "CreatePlayQueueMediaContainer": ".createplayqueue", + "CreatePlayQueueMediaContainerTypedDict": ".createplayqueue", + "CreatePlayQueueRequest": ".createplayqueue", + "CreatePlayQueueRequestTypedDict": ".createplayqueue", + "CreatePlayQueueResponse": ".createplayqueue", + "CreatePlayQueueResponseBody": ".createplayqueue", + "CreatePlayQueueResponseBodyTypedDict": ".createplayqueue", + "CreatePlayQueueResponseTypedDict": ".createplayqueue", + "Type": ".createplayqueue", + "CreateSubscriptionGlobals": ".createsubscription", + "CreateSubscriptionGlobalsTypedDict": ".createsubscription", + "CreateSubscriptionMediaContainer": ".createsubscription", + "CreateSubscriptionMediaContainerTypedDict": ".createsubscription", + "CreateSubscriptionQueryParamPrefs": ".createsubscription", + "CreateSubscriptionQueryParamPrefsTypedDict": ".createsubscription", + "CreateSubscriptionRequest": ".createsubscription", + "CreateSubscriptionRequestTypedDict": ".createsubscription", + "CreateSubscriptionResponse": ".createsubscription", + "CreateSubscriptionResponseBody": ".createsubscription", + "CreateSubscriptionResponseBodyTypedDict": ".createsubscription", + "CreateSubscriptionResponseTypedDict": ".createsubscription", + "Hints": ".createsubscription", + "HintsTypedDict": ".createsubscription", + "Params": ".createsubscription", + "ParamsTypedDict": ".createsubscription", + "DeleteCachesResponse": ".deletecaches", + "DeleteCachesResponseTypedDict": ".deletecaches", + "DeleteCollectionGlobals": ".deletecollection", + "DeleteCollectionGlobalsTypedDict": ".deletecollection", + "DeleteCollectionRequest": ".deletecollection", + "DeleteCollectionRequestTypedDict": ".deletecollection", + "DeleteCollectionResponse": ".deletecollection", + "DeleteCollectionResponseTypedDict": ".deletecollection", + "DeleteCollectionItemGlobals": ".deletecollectionitem", + "DeleteCollectionItemGlobalsTypedDict": ".deletecollectionitem", + "DeleteCollectionItemRequest": ".deletecollectionitem", + "DeleteCollectionItemRequestTypedDict": ".deletecollectionitem", + "DeleteCollectionItemResponse": ".deletecollectionitem", + "DeleteCollectionItemResponseTypedDict": ".deletecollectionitem", + "DeleteCustomHubGlobals": ".deletecustomhub", + "DeleteCustomHubGlobalsTypedDict": ".deletecustomhub", + "DeleteCustomHubRequest": ".deletecustomhub", + "DeleteCustomHubRequestTypedDict": ".deletecustomhub", + "DeleteCustomHubResponse": ".deletecustomhub", + "DeleteCustomHubResponseTypedDict": ".deletecustomhub", + "DeleteDVRGlobals": ".deletedvr", + "DeleteDVRGlobalsTypedDict": ".deletedvr", + "DeleteDVRRequest": ".deletedvr", + "DeleteDVRRequestTypedDict": ".deletedvr", + "DeleteDVRResponse": ".deletedvr", + "DeleteDVRResponseTypedDict": ".deletedvr", + "DeleteHistoryGlobals": ".deletehistory", + "DeleteHistoryGlobalsTypedDict": ".deletehistory", + "DeleteHistoryRequest": ".deletehistory", + "DeleteHistoryRequestTypedDict": ".deletehistory", + "DeleteHistoryResponse": ".deletehistory", + "DeleteHistoryResponseTypedDict": ".deletehistory", + "DeleteIndexesGlobals": ".deleteindexes", + "DeleteIndexesGlobalsTypedDict": ".deleteindexes", + "DeleteIndexesRequest": ".deleteindexes", + "DeleteIndexesRequestTypedDict": ".deleteindexes", + "DeleteIndexesResponse": ".deleteindexes", + "DeleteIndexesResponseTypedDict": ".deleteindexes", + "DeleteIntrosGlobals": ".deleteintros", + "DeleteIntrosGlobalsTypedDict": ".deleteintros", + "DeleteIntrosRequest": ".deleteintros", + "DeleteIntrosRequestTypedDict": ".deleteintros", + "DeleteIntrosResponse": ".deleteintros", + "DeleteIntrosResponseTypedDict": ".deleteintros", + "DeleteLibrarySectionGlobals": ".deletelibrarysection", + "DeleteLibrarySectionGlobalsTypedDict": ".deletelibrarysection", + "DeleteLibrarySectionRequest": ".deletelibrarysection", + "DeleteLibrarySectionRequestTypedDict": ".deletelibrarysection", + "DeleteLibrarySectionResponse": ".deletelibrarysection", + "DeleteLibrarySectionResponseTypedDict": ".deletelibrarysection", + "DeleteLineupDVR": ".deletelineup", + "DeleteLineupDVRTypedDict": ".deletelineup", + "DeleteLineupDVRsMediaContainer": ".deletelineup", + "DeleteLineupDVRsMediaContainerTypedDict": ".deletelineup", + "DeleteLineupGlobals": ".deletelineup", + "DeleteLineupGlobalsTypedDict": ".deletelineup", + "DeleteLineupMediaContainer": ".deletelineup", + "DeleteLineupMediaContainerTypedDict": ".deletelineup", + "DeleteLineupRequest": ".deletelineup", + "DeleteLineupRequestTypedDict": ".deletelineup", + "DeleteLineupResponse": ".deletelineup", + "DeleteLineupResponseBody": ".deletelineup", + "DeleteLineupResponseBodyTypedDict": ".deletelineup", + "DeleteLineupResponseTypedDict": ".deletelineup", + "DeleteMarkerGlobals": ".deletemarker", + "DeleteMarkerGlobalsTypedDict": ".deletemarker", + "DeleteMarkerRequest": ".deletemarker", + "DeleteMarkerRequestTypedDict": ".deletemarker", + "DeleteMarkerResponse": ".deletemarker", + "DeleteMarkerResponseTypedDict": ".deletemarker", + "DeleteMediaItemGlobals": ".deletemediaitem", + "DeleteMediaItemGlobalsTypedDict": ".deletemediaitem", + "DeleteMediaItemRequest": ".deletemediaitem", + "DeleteMediaItemRequestTypedDict": ".deletemediaitem", + "DeleteMediaItemResponse": ".deletemediaitem", + "DeleteMediaItemResponseTypedDict": ".deletemediaitem", + "DeleteMediaProviderGlobals": ".deletemediaprovider", + "DeleteMediaProviderGlobalsTypedDict": ".deletemediaprovider", + "DeleteMediaProviderRequest": ".deletemediaprovider", + "DeleteMediaProviderRequestTypedDict": ".deletemediaprovider", + "DeleteMediaProviderResponse": ".deletemediaprovider", + "DeleteMediaProviderResponseTypedDict": ".deletemediaprovider", + "DeleteMetadataItemGlobals": ".deletemetadataitem", + "DeleteMetadataItemGlobalsTypedDict": ".deletemetadataitem", + "DeleteMetadataItemRequest": ".deletemetadataitem", + "DeleteMetadataItemRequestTypedDict": ".deletemetadataitem", + "DeleteMetadataItemResponse": ".deletemetadataitem", + "DeleteMetadataItemResponseTypedDict": ".deletemetadataitem", + "DeletePlaylistGlobals": ".deleteplaylist", + "DeletePlaylistGlobalsTypedDict": ".deleteplaylist", "DeletePlaylistRequest": ".deleteplaylist", "DeletePlaylistRequestTypedDict": ".deleteplaylist", "DeletePlaylistResponse": ".deleteplaylist", "DeletePlaylistResponseTypedDict": ".deleteplaylist", - "EnablePaperTrailResponse": ".enablepapertrail", - "EnablePaperTrailResponseTypedDict": ".enablepapertrail", - "GetActorsLibraryDirectory": ".get_actors_library", - "GetActorsLibraryDirectoryTypedDict": ".get_actors_library", - "GetActorsLibraryMediaContainer": ".get_actors_library", - "GetActorsLibraryMediaContainerTypedDict": ".get_actors_library", - "GetActorsLibraryQueryParamType": ".get_actors_library", - "GetActorsLibraryRequest": ".get_actors_library", - "GetActorsLibraryRequestTypedDict": ".get_actors_library", - "GetActorsLibraryResponse": ".get_actors_library", - "GetActorsLibraryResponseBody": ".get_actors_library", - "GetActorsLibraryResponseBodyTypedDict": ".get_actors_library", - "GetActorsLibraryResponseTypedDict": ".get_actors_library", - "GetAllLibrariesDirectory": ".get_all_libraries", - "GetAllLibrariesDirectoryTypedDict": ".get_all_libraries", - "GetAllLibrariesLocation": ".get_all_libraries", - "GetAllLibrariesLocationTypedDict": ".get_all_libraries", - "GetAllLibrariesMediaContainer": ".get_all_libraries", - "GetAllLibrariesMediaContainerTypedDict": ".get_all_libraries", - "GetAllLibrariesResponse": ".get_all_libraries", - "GetAllLibrariesResponseBody": ".get_all_libraries", - "GetAllLibrariesResponseBodyTypedDict": ".get_all_libraries", - "GetAllLibrariesResponseTypedDict": ".get_all_libraries", - "GetAllLibrariesType": ".get_all_libraries", - "Hidden": ".get_all_libraries", - "GetBannerImageRequest": ".get_banner_image", - "GetBannerImageRequestTypedDict": ".get_banner_image", - "GetBannerImageResponse": ".get_banner_image", - "GetBannerImageResponseTypedDict": ".get_banner_image", - "GetCountriesLibraryDirectory": ".get_countries_library", - "GetCountriesLibraryDirectoryTypedDict": ".get_countries_library", - "GetCountriesLibraryMediaContainer": ".get_countries_library", - "GetCountriesLibraryMediaContainerTypedDict": ".get_countries_library", - "GetCountriesLibraryQueryParamType": ".get_countries_library", - "GetCountriesLibraryRequest": ".get_countries_library", - "GetCountriesLibraryRequestTypedDict": ".get_countries_library", - "GetCountriesLibraryResponse": ".get_countries_library", - "GetCountriesLibraryResponseBody": ".get_countries_library", - "GetCountriesLibraryResponseBodyTypedDict": ".get_countries_library", - "GetCountriesLibraryResponseTypedDict": ".get_countries_library", - "GetGenresLibraryDirectory": ".get_genres_library", - "GetGenresLibraryDirectoryTypedDict": ".get_genres_library", - "GetGenresLibraryMediaContainer": ".get_genres_library", - "GetGenresLibraryMediaContainerTypedDict": ".get_genres_library", - "GetGenresLibraryQueryParamType": ".get_genres_library", - "GetGenresLibraryRequest": ".get_genres_library", - "GetGenresLibraryRequestTypedDict": ".get_genres_library", - "GetGenresLibraryResponse": ".get_genres_library", - "GetGenresLibraryResponseBody": ".get_genres_library", - "GetGenresLibraryResponseBodyTypedDict": ".get_genres_library", - "GetGenresLibraryResponseTypedDict": ".get_genres_library", - "GetLibraryDetailsDirectory": ".get_library_details", - "GetLibraryDetailsDirectoryTypedDict": ".get_library_details", - "GetLibraryDetailsField": ".get_library_details", - "GetLibraryDetailsFieldType": ".get_library_details", - "GetLibraryDetailsFieldTypeTypedDict": ".get_library_details", - "GetLibraryDetailsFieldTypedDict": ".get_library_details", - "GetLibraryDetailsFilter": ".get_library_details", - "GetLibraryDetailsFilterTypedDict": ".get_library_details", - "GetLibraryDetailsMediaContainer": ".get_library_details", - "GetLibraryDetailsMediaContainerTypedDict": ".get_library_details", - "GetLibraryDetailsOperator": ".get_library_details", - "GetLibraryDetailsOperatorTypedDict": ".get_library_details", - "GetLibraryDetailsRequest": ".get_library_details", - "GetLibraryDetailsRequestTypedDict": ".get_library_details", - "GetLibraryDetailsResponse": ".get_library_details", - "GetLibraryDetailsResponseBody": ".get_library_details", - "GetLibraryDetailsResponseBodyTypedDict": ".get_library_details", - "GetLibraryDetailsResponseTypedDict": ".get_library_details", - "GetLibraryDetailsSort": ".get_library_details", - "GetLibraryDetailsSortTypedDict": ".get_library_details", - "GetLibraryDetailsType": ".get_library_details", - "GetLibraryDetailsTypeTypedDict": ".get_library_details", - "IncludeDetails": ".get_library_details", - "Attributes": ".get_library_items", - "AttributesTypedDict": ".get_library_items", - "Chapter": ".get_library_items", - "ChapterTypedDict": ".get_library_items", - "Extras": ".get_library_items", - "ExtrasTypedDict": ".get_library_items", - "FlattenSeasons": ".get_library_items", - "GetLibraryItemsActiveDirection": ".get_library_items", - "GetLibraryItemsCollection": ".get_library_items", - "GetLibraryItemsCollectionTypedDict": ".get_library_items", - "GetLibraryItemsCountry": ".get_library_items", - "GetLibraryItemsCountryTypedDict": ".get_library_items", - "GetLibraryItemsDefaultDirection": ".get_library_items", - "GetLibraryItemsDirector": ".get_library_items", - "GetLibraryItemsDirectorTypedDict": ".get_library_items", - "GetLibraryItemsField": ".get_library_items", - "GetLibraryItemsFieldType": ".get_library_items", - "GetLibraryItemsFieldTypeTypedDict": ".get_library_items", - "GetLibraryItemsFieldTypedDict": ".get_library_items", - "GetLibraryItemsFilter": ".get_library_items", - "GetLibraryItemsFilterTypedDict": ".get_library_items", - "GetLibraryItemsGenre": ".get_library_items", - "GetLibraryItemsGenreTypedDict": ".get_library_items", - "GetLibraryItemsGuids": ".get_library_items", - "GetLibraryItemsGuidsTypedDict": ".get_library_items", - "GetLibraryItemsHasThumbnail": ".get_library_items", - "GetLibraryItemsImage": ".get_library_items", - "GetLibraryItemsImageTypedDict": ".get_library_items", - "GetLibraryItemsLibraryOptimizedForStreaming": ".get_library_items", - "GetLibraryItemsLibraryOptimizedForStreamingTypedDict": ".get_library_items", - "GetLibraryItemsLibraryResponseType": ".get_library_items", - "GetLibraryItemsLibraryType": ".get_library_items", - "GetLibraryItemsLibraryTypeTypedDict": ".get_library_items", - "GetLibraryItemsLocation": ".get_library_items", - "GetLibraryItemsLocationTypedDict": ".get_library_items", - "GetLibraryItemsMedia": ".get_library_items", - "GetLibraryItemsMediaContainer": ".get_library_items", - "GetLibraryItemsMediaContainerTypedDict": ".get_library_items", - "GetLibraryItemsMediaTypedDict": ".get_library_items", - "GetLibraryItemsMeta": ".get_library_items", - "GetLibraryItemsMetaTypedDict": ".get_library_items", - "GetLibraryItemsMetadata": ".get_library_items", - "GetLibraryItemsMetadataTypedDict": ".get_library_items", - "GetLibraryItemsOperator": ".get_library_items", - "GetLibraryItemsOperatorTypedDict": ".get_library_items", - "GetLibraryItemsOptimizedForStreaming": ".get_library_items", - "GetLibraryItemsOptimizedForStreaming1": ".get_library_items", - "GetLibraryItemsOptimizedForStreamingTypedDict": ".get_library_items", - "GetLibraryItemsPart": ".get_library_items", - "GetLibraryItemsPartTypedDict": ".get_library_items", - "GetLibraryItemsProducer": ".get_library_items", - "GetLibraryItemsProducerTypedDict": ".get_library_items", - "GetLibraryItemsQueryParamIncludeMeta": ".get_library_items", - "GetLibraryItemsQueryParamType": ".get_library_items", - "GetLibraryItemsRequest": ".get_library_items", - "GetLibraryItemsRequestTypedDict": ".get_library_items", - "GetLibraryItemsResponse": ".get_library_items", - "GetLibraryItemsResponseBody": ".get_library_items", - "GetLibraryItemsResponseBodyTypedDict": ".get_library_items", - "GetLibraryItemsResponseTypedDict": ".get_library_items", - "GetLibraryItemsRole": ".get_library_items", - "GetLibraryItemsRoleTypedDict": ".get_library_items", - "GetLibraryItemsSimilar": ".get_library_items", - "GetLibraryItemsSimilarTypedDict": ".get_library_items", - "GetLibraryItemsSort": ".get_library_items", - "GetLibraryItemsSortTypedDict": ".get_library_items", - "GetLibraryItemsType": ".get_library_items", - "GetLibraryItemsUltraBlurColors": ".get_library_items", - "GetLibraryItemsUltraBlurColorsTypedDict": ".get_library_items", - "GetLibraryItemsWriter": ".get_library_items", - "GetLibraryItemsWriterTypedDict": ".get_library_items", - "IncludeGuids": ".get_library_items", - "Marker": ".get_library_items", - "MarkerTypedDict": ".get_library_items", - "OptimizedForStreaming1": ".get_library_items", - "Ratings": ".get_library_items", - "RatingsTypedDict": ".get_library_items", - "ShowOrdering": ".get_library_items", - "Tag": ".get_library_items", - "GetLibrarySectionsAllActiveDirection": ".get_library_sections_all", - "GetLibrarySectionsAllCollection": ".get_library_sections_all", - "GetLibrarySectionsAllCollectionTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllCountry": ".get_library_sections_all", - "GetLibrarySectionsAllCountryTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllDefaultDirection": ".get_library_sections_all", - "GetLibrarySectionsAllDirector": ".get_library_sections_all", - "GetLibrarySectionsAllDirectorTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllField": ".get_library_sections_all", - "GetLibrarySectionsAllFieldType": ".get_library_sections_all", - "GetLibrarySectionsAllFieldTypeTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllFieldTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllFilter": ".get_library_sections_all", - "GetLibrarySectionsAllFilterTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllGenre": ".get_library_sections_all", - "GetLibrarySectionsAllGenreTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllGuids": ".get_library_sections_all", - "GetLibrarySectionsAllGuidsTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllHasThumbnail": ".get_library_sections_all", - "GetLibrarySectionsAllImage": ".get_library_sections_all", - "GetLibrarySectionsAllImageTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllLibraryOptimizedForStreaming": ".get_library_sections_all", - "GetLibrarySectionsAllLibraryOptimizedForStreamingTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllLibraryResponseType": ".get_library_sections_all", - "GetLibrarySectionsAllLibraryType": ".get_library_sections_all", - "GetLibrarySectionsAllMedia": ".get_library_sections_all", - "GetLibrarySectionsAllMediaContainer": ".get_library_sections_all", - "GetLibrarySectionsAllMediaContainerTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllMediaTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllMeta": ".get_library_sections_all", - "GetLibrarySectionsAllMetaTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllMetadata": ".get_library_sections_all", - "GetLibrarySectionsAllMetadataTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllOperator": ".get_library_sections_all", - "GetLibrarySectionsAllOperatorTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllOptimizedForStreaming": ".get_library_sections_all", - "GetLibrarySectionsAllOptimizedForStreaming1": ".get_library_sections_all", - "GetLibrarySectionsAllOptimizedForStreamingLibrary1": ".get_library_sections_all", - "GetLibrarySectionsAllOptimizedForStreamingTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllPart": ".get_library_sections_all", - "GetLibrarySectionsAllPartTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllQueryParamIncludeMeta": ".get_library_sections_all", - "GetLibrarySectionsAllQueryParamType": ".get_library_sections_all", - "GetLibrarySectionsAllRequest": ".get_library_sections_all", - "GetLibrarySectionsAllRequestTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllResponse": ".get_library_sections_all", - "GetLibrarySectionsAllResponseBody": ".get_library_sections_all", - "GetLibrarySectionsAllResponseBodyTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllResponseTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllRole": ".get_library_sections_all", - "GetLibrarySectionsAllRoleTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllSort": ".get_library_sections_all", - "GetLibrarySectionsAllSortTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllStream": ".get_library_sections_all", - "GetLibrarySectionsAllStreamTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllType": ".get_library_sections_all", - "GetLibrarySectionsAllTypeTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllUltraBlurColors": ".get_library_sections_all", - "GetLibrarySectionsAllUltraBlurColorsTypedDict": ".get_library_sections_all", - "GetLibrarySectionsAllWriter": ".get_library_sections_all", - "GetLibrarySectionsAllWriterTypedDict": ".get_library_sections_all", - "IncludeAdvanced": ".get_library_sections_all", - "QueryParamIncludeCollections": ".get_library_sections_all", - "QueryParamIncludeExternalMedia": ".get_library_sections_all", - "QueryParamIncludeGuids": ".get_library_sections_all", - "GetMediaArtsMediaContainer": ".get_media_arts", - "GetMediaArtsMediaContainerTypedDict": ".get_media_arts", - "GetMediaArtsMetadata": ".get_media_arts", - "GetMediaArtsMetadataTypedDict": ".get_media_arts", - "GetMediaArtsRequest": ".get_media_arts", - "GetMediaArtsRequestTypedDict": ".get_media_arts", - "GetMediaArtsResponse": ".get_media_arts", - "GetMediaArtsResponseBody": ".get_media_arts", - "GetMediaArtsResponseBodyTypedDict": ".get_media_arts", - "GetMediaArtsResponseTypedDict": ".get_media_arts", - "GetMediaMetaDataAttributes": ".get_media_meta_data", - "GetMediaMetaDataAttributesTypedDict": ".get_media_meta_data", - "GetMediaMetaDataChapter": ".get_media_meta_data", - "GetMediaMetaDataChapterTypedDict": ".get_media_meta_data", - "GetMediaMetaDataCountry": ".get_media_meta_data", - "GetMediaMetaDataCountryTypedDict": ".get_media_meta_data", - "GetMediaMetaDataDirector": ".get_media_meta_data", - "GetMediaMetaDataDirectorTypedDict": ".get_media_meta_data", - "GetMediaMetaDataExtras": ".get_media_meta_data", - "GetMediaMetaDataExtrasTypedDict": ".get_media_meta_data", - "GetMediaMetaDataGenre": ".get_media_meta_data", - "GetMediaMetaDataGenreTypedDict": ".get_media_meta_data", - "GetMediaMetaDataGuids": ".get_media_meta_data", - "GetMediaMetaDataGuidsTypedDict": ".get_media_meta_data", - "GetMediaMetaDataHasThumbnail": ".get_media_meta_data", - "GetMediaMetaDataImage": ".get_media_meta_data", - "GetMediaMetaDataImageTypedDict": ".get_media_meta_data", - "GetMediaMetaDataLibraryOptimizedForStreaming": ".get_media_meta_data", - "GetMediaMetaDataLibraryOptimizedForStreamingTypedDict": ".get_media_meta_data", - "GetMediaMetaDataLibraryType": ".get_media_meta_data", - "GetMediaMetaDataLocation": ".get_media_meta_data", - "GetMediaMetaDataLocationTypedDict": ".get_media_meta_data", - "GetMediaMetaDataMarker": ".get_media_meta_data", - "GetMediaMetaDataMarkerTypedDict": ".get_media_meta_data", - "GetMediaMetaDataMedia": ".get_media_meta_data", - "GetMediaMetaDataMediaContainer": ".get_media_meta_data", - "GetMediaMetaDataMediaContainerTypedDict": ".get_media_meta_data", - "GetMediaMetaDataMediaTypedDict": ".get_media_meta_data", - "GetMediaMetaDataMetadata": ".get_media_meta_data", - "GetMediaMetaDataMetadataTypedDict": ".get_media_meta_data", - "GetMediaMetaDataOptimizedForStreaming": ".get_media_meta_data", - "GetMediaMetaDataOptimizedForStreaming1": ".get_media_meta_data", - "GetMediaMetaDataOptimizedForStreamingLibrary1": ".get_media_meta_data", - "GetMediaMetaDataOptimizedForStreamingTypedDict": ".get_media_meta_data", - "GetMediaMetaDataPart": ".get_media_meta_data", - "GetMediaMetaDataPartTypedDict": ".get_media_meta_data", - "GetMediaMetaDataProducer": ".get_media_meta_data", - "GetMediaMetaDataProducerTypedDict": ".get_media_meta_data", - "GetMediaMetaDataRatings": ".get_media_meta_data", - "GetMediaMetaDataRatingsTypedDict": ".get_media_meta_data", - "GetMediaMetaDataRequest": ".get_media_meta_data", - "GetMediaMetaDataRequestTypedDict": ".get_media_meta_data", - "GetMediaMetaDataResponse": ".get_media_meta_data", - "GetMediaMetaDataResponseBody": ".get_media_meta_data", - "GetMediaMetaDataResponseBodyTypedDict": ".get_media_meta_data", - "GetMediaMetaDataResponseTypedDict": ".get_media_meta_data", - "GetMediaMetaDataRole": ".get_media_meta_data", - "GetMediaMetaDataRoleTypedDict": ".get_media_meta_data", - "GetMediaMetaDataSimilar": ".get_media_meta_data", - "GetMediaMetaDataSimilarTypedDict": ".get_media_meta_data", - "GetMediaMetaDataStream": ".get_media_meta_data", - "GetMediaMetaDataStreamTypedDict": ".get_media_meta_data", - "GetMediaMetaDataType": ".get_media_meta_data", - "GetMediaMetaDataUltraBlurColors": ".get_media_meta_data", - "GetMediaMetaDataUltraBlurColorsTypedDict": ".get_media_meta_data", - "GetMediaMetaDataWriter": ".get_media_meta_data", - "GetMediaMetaDataWriterTypedDict": ".get_media_meta_data", - "GetMediaPostersMediaContainer": ".get_media_posters", - "GetMediaPostersMediaContainerTypedDict": ".get_media_posters", - "GetMediaPostersMetadata": ".get_media_posters", - "GetMediaPostersMetadataTypedDict": ".get_media_posters", - "GetMediaPostersRequest": ".get_media_posters", - "GetMediaPostersRequestTypedDict": ".get_media_posters", - "GetMediaPostersResponse": ".get_media_posters", - "GetMediaPostersResponseBody": ".get_media_posters", - "GetMediaPostersResponseBodyTypedDict": ".get_media_posters", - "GetMediaPostersResponseTypedDict": ".get_media_posters", - "Action": ".get_media_providers", - "ActionTypedDict": ".get_media_providers", - "Feature": ".get_media_providers", - "FeatureTypedDict": ".get_media_providers", - "GetMediaProvidersDirectory": ".get_media_providers", - "GetMediaProvidersDirectoryTypedDict": ".get_media_providers", - "GetMediaProvidersMediaContainer": ".get_media_providers", - "GetMediaProvidersMediaContainerTypedDict": ".get_media_providers", - "GetMediaProvidersRequest": ".get_media_providers", - "GetMediaProvidersRequestTypedDict": ".get_media_providers", - "GetMediaProvidersResponse": ".get_media_providers", - "GetMediaProvidersResponseBody": ".get_media_providers", - "GetMediaProvidersResponseBodyTypedDict": ".get_media_providers", - "GetMediaProvidersResponseTypedDict": ".get_media_providers", - "MediaProvider": ".get_media_providers", - "MediaProviderTypedDict": ".get_media_providers", - "Pivot": ".get_media_providers", - "PivotTypedDict": ".get_media_providers", - "Collection": ".get_recently_added", - "CollectionTypedDict": ".get_recently_added", - "Country": ".get_recently_added", - "CountryTypedDict": ".get_recently_added", - "Director": ".get_recently_added", - "DirectorTypedDict": ".get_recently_added", - "Genre": ".get_recently_added", - "GenreTypedDict": ".get_recently_added", - "GetRecentlyAddedActiveDirection": ".get_recently_added", - "GetRecentlyAddedDefaultDirection": ".get_recently_added", - "GetRecentlyAddedField": ".get_recently_added", - "GetRecentlyAddedFieldType": ".get_recently_added", - "GetRecentlyAddedFieldTypeTypedDict": ".get_recently_added", - "GetRecentlyAddedFieldTypedDict": ".get_recently_added", - "GetRecentlyAddedFilter": ".get_recently_added", - "GetRecentlyAddedFilterTypedDict": ".get_recently_added", - "GetRecentlyAddedHubsResponseType": ".get_recently_added", - "GetRecentlyAddedHubsType": ".get_recently_added", - "GetRecentlyAddedImage": ".get_recently_added", - "GetRecentlyAddedImageTypedDict": ".get_recently_added", - "GetRecentlyAddedMediaContainer": ".get_recently_added", - "GetRecentlyAddedMediaContainerTypedDict": ".get_recently_added", - "GetRecentlyAddedMetadata": ".get_recently_added", - "GetRecentlyAddedMetadataTypedDict": ".get_recently_added", - "GetRecentlyAddedOperator": ".get_recently_added", - "GetRecentlyAddedOperatorTypedDict": ".get_recently_added", - "GetRecentlyAddedOptimizedForStreaming": ".get_recently_added", - "GetRecentlyAddedOptimizedForStreaming1": ".get_recently_added", - "GetRecentlyAddedOptimizedForStreamingTypedDict": ".get_recently_added", - "GetRecentlyAddedRequest": ".get_recently_added", - "GetRecentlyAddedRequestTypedDict": ".get_recently_added", - "GetRecentlyAddedResponse": ".get_recently_added", - "GetRecentlyAddedResponseBody": ".get_recently_added", - "GetRecentlyAddedResponseBodyTypedDict": ".get_recently_added", - "GetRecentlyAddedResponseTypedDict": ".get_recently_added", - "GetRecentlyAddedSort": ".get_recently_added", - "GetRecentlyAddedSortTypedDict": ".get_recently_added", - "GetRecentlyAddedType": ".get_recently_added", - "GetRecentlyAddedTypeTypedDict": ".get_recently_added", - "Guids": ".get_recently_added", - "GuidsTypedDict": ".get_recently_added", - "HasThumbnail": ".get_recently_added", - "IncludeMeta": ".get_recently_added", - "Location": ".get_recently_added", - "LocationTypedDict": ".get_recently_added", - "Media": ".get_recently_added", - "MediaTypedDict": ".get_recently_added", - "Meta": ".get_recently_added", - "MetaTypedDict": ".get_recently_added", - "One": ".get_recently_added", - "OptimizedForStreaming": ".get_recently_added", - "OptimizedForStreamingTypedDict": ".get_recently_added", - "Part": ".get_recently_added", - "PartTypedDict": ".get_recently_added", - "Producer": ".get_recently_added", - "ProducerTypedDict": ".get_recently_added", - "Rating": ".get_recently_added", - "RatingTypedDict": ".get_recently_added", - "Role": ".get_recently_added", - "RoleTypedDict": ".get_recently_added", - "Similar": ".get_recently_added", - "SimilarTypedDict": ".get_recently_added", - "Stream": ".get_recently_added", - "StreamTypedDict": ".get_recently_added", - "Type": ".get_recently_added", - "UltraBlurColors": ".get_recently_added", - "UltraBlurColorsTypedDict": ".get_recently_added", - "Writer": ".get_recently_added", - "WriterTypedDict": ".get_recently_added", - "ActiveDirection": ".get_recently_added_library", - "DefaultDirection": ".get_recently_added_library", - "FieldT": ".get_recently_added_library", - "FieldTTypedDict": ".get_recently_added_library", - "FieldType": ".get_recently_added_library", - "FieldTypeTypedDict": ".get_recently_added_library", - "GetRecentlyAddedLibraryCountry": ".get_recently_added_library", - "GetRecentlyAddedLibraryCountryTypedDict": ".get_recently_added_library", - "GetRecentlyAddedLibraryDirector": ".get_recently_added_library", - "GetRecentlyAddedLibraryDirectorTypedDict": ".get_recently_added_library", - "GetRecentlyAddedLibraryFilter": ".get_recently_added_library", - "GetRecentlyAddedLibraryFilterTypedDict": ".get_recently_added_library", - "GetRecentlyAddedLibraryGenre": ".get_recently_added_library", - "GetRecentlyAddedLibraryGenreTypedDict": ".get_recently_added_library", - "GetRecentlyAddedLibraryMedia": ".get_recently_added_library", - "GetRecentlyAddedLibraryMediaContainer": ".get_recently_added_library", - "GetRecentlyAddedLibraryMediaContainerTypedDict": ".get_recently_added_library", - "GetRecentlyAddedLibraryMediaTypedDict": ".get_recently_added_library", - "GetRecentlyAddedLibraryMetadata": ".get_recently_added_library", - "GetRecentlyAddedLibraryMetadataTypedDict": ".get_recently_added_library", - "GetRecentlyAddedLibraryPart": ".get_recently_added_library", - "GetRecentlyAddedLibraryPartTypedDict": ".get_recently_added_library", - "GetRecentlyAddedLibraryRequest": ".get_recently_added_library", - "GetRecentlyAddedLibraryRequestTypedDict": ".get_recently_added_library", - "GetRecentlyAddedLibraryResponse": ".get_recently_added_library", - "GetRecentlyAddedLibraryResponseBody": ".get_recently_added_library", - "GetRecentlyAddedLibraryResponseBodyTypedDict": ".get_recently_added_library", - "GetRecentlyAddedLibraryResponseTypedDict": ".get_recently_added_library", - "GetRecentlyAddedLibraryRole": ".get_recently_added_library", - "GetRecentlyAddedLibraryRoleTypedDict": ".get_recently_added_library", - "GetRecentlyAddedLibraryType": ".get_recently_added_library", - "GetRecentlyAddedLibraryTypeTypedDict": ".get_recently_added_library", - "GetRecentlyAddedLibraryWriter": ".get_recently_added_library", - "GetRecentlyAddedLibraryWriterTypedDict": ".get_recently_added_library", - "Operator": ".get_recently_added_library", - "OperatorTypedDict": ".get_recently_added_library", - "QueryParamIncludeMeta": ".get_recently_added_library", - "QueryParamType": ".get_recently_added_library", - "Sort": ".get_recently_added_library", - "SortTypedDict": ".get_recently_added_library", - "Force": ".get_refresh_library_metadata", - "GetRefreshLibraryMetadataRequest": ".get_refresh_library_metadata", - "GetRefreshLibraryMetadataRequestTypedDict": ".get_refresh_library_metadata", - "GetRefreshLibraryMetadataResponse": ".get_refresh_library_metadata", - "GetRefreshLibraryMetadataResponseTypedDict": ".get_refresh_library_metadata", - "GetSearchAllLibrariesCountry": ".get_search_all_libraries", - "GetSearchAllLibrariesCountryTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesDirector": ".get_search_all_libraries", - "GetSearchAllLibrariesDirectorTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesDirectory": ".get_search_all_libraries", - "GetSearchAllLibrariesDirectoryTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesFlattenSeasons": ".get_search_all_libraries", - "GetSearchAllLibrariesGenre": ".get_search_all_libraries", - "GetSearchAllLibrariesGenreTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesGuids": ".get_search_all_libraries", - "GetSearchAllLibrariesGuidsTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesHasThumbnail": ".get_search_all_libraries", - "GetSearchAllLibrariesImage": ".get_search_all_libraries", - "GetSearchAllLibrariesImageTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesLibraryOptimizedForStreaming": ".get_search_all_libraries", - "GetSearchAllLibrariesLibraryOptimizedForStreamingTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesLibraryType": ".get_search_all_libraries", - "GetSearchAllLibrariesLocation": ".get_search_all_libraries", - "GetSearchAllLibrariesLocationTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesMedia": ".get_search_all_libraries", - "GetSearchAllLibrariesMediaContainer": ".get_search_all_libraries", - "GetSearchAllLibrariesMediaContainerTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesMediaTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesMetadata": ".get_search_all_libraries", - "GetSearchAllLibrariesMetadataTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesOptimizedForStreaming": ".get_search_all_libraries", - "GetSearchAllLibrariesOptimizedForStreaming1": ".get_search_all_libraries", - "GetSearchAllLibrariesOptimizedForStreamingLibrary1": ".get_search_all_libraries", - "GetSearchAllLibrariesOptimizedForStreamingTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesPart": ".get_search_all_libraries", - "GetSearchAllLibrariesPartTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesQueryParamIncludeCollections": ".get_search_all_libraries", - "GetSearchAllLibrariesQueryParamIncludeExternalMedia": ".get_search_all_libraries", - "GetSearchAllLibrariesRequest": ".get_search_all_libraries", - "GetSearchAllLibrariesRequestTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesResponse": ".get_search_all_libraries", - "GetSearchAllLibrariesResponseBody": ".get_search_all_libraries", - "GetSearchAllLibrariesResponseBodyTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesResponseTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesRole": ".get_search_all_libraries", - "GetSearchAllLibrariesRoleTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesShowOrdering": ".get_search_all_libraries", - "GetSearchAllLibrariesType": ".get_search_all_libraries", - "GetSearchAllLibrariesUltraBlurColors": ".get_search_all_libraries", - "GetSearchAllLibrariesUltraBlurColorsTypedDict": ".get_search_all_libraries", - "GetSearchAllLibrariesWriter": ".get_search_all_libraries", - "GetSearchAllLibrariesWriterTypedDict": ".get_search_all_libraries", - "SearchResult": ".get_search_all_libraries", - "SearchResultTypedDict": ".get_search_all_libraries", - "SearchTypes": ".get_search_all_libraries", - "GetSearchLibraryMediaContainer": ".get_search_library", - "GetSearchLibraryMediaContainerTypedDict": ".get_search_library", - "GetSearchLibraryMetadata": ".get_search_library", - "GetSearchLibraryMetadataTypedDict": ".get_search_library", - "GetSearchLibraryQueryParamType": ".get_search_library", - "GetSearchLibraryRequest": ".get_search_library", - "GetSearchLibraryRequestTypedDict": ".get_search_library", - "GetSearchLibraryResponse": ".get_search_library", - "GetSearchLibraryResponseBody": ".get_search_library", - "GetSearchLibraryResponseBodyTypedDict": ".get_search_library", - "GetSearchLibraryResponseTypedDict": ".get_search_library", - "GetServerIdentityMediaContainer": ".get_server_identity", - "GetServerIdentityMediaContainerTypedDict": ".get_server_identity", - "GetServerIdentityResponse": ".get_server_identity", - "GetServerIdentityResponseBody": ".get_server_identity", - "GetServerIdentityResponseBodyTypedDict": ".get_server_identity", - "GetServerIdentityResponseTypedDict": ".get_server_identity", - "Connections": ".get_server_resources", - "ConnectionsTypedDict": ".get_server_resources", - "GET_SERVER_RESOURCES_SERVERS": ".get_server_resources", - "GetServerResourcesRequest": ".get_server_resources", - "GetServerResourcesRequestTypedDict": ".get_server_resources", - "GetServerResourcesResponse": ".get_server_resources", - "GetServerResourcesResponseTypedDict": ".get_server_resources", - "IncludeHTTPS": ".get_server_resources", - "IncludeIPv6": ".get_server_resources", - "IncludeRelay": ".get_server_resources", - "PlexDevice": ".get_server_resources", - "PlexDeviceTypedDict": ".get_server_resources", - "Protocol": ".get_server_resources", - "GetThumbImageRequest": ".get_thumb_image", - "GetThumbImageRequestTypedDict": ".get_thumb_image", - "GetThumbImageResponse": ".get_thumb_image", - "GetThumbImageResponseTypedDict": ".get_thumb_image", - "AllLibraries": ".get_users", - "AllowCameraUpload": ".get_users", - "AllowChannels": ".get_users", - "AllowSubtitleAdmin": ".get_users", - "AllowSync": ".get_users", - "AllowTuners": ".get_users", - "GET_USERS_SERVERS": ".get_users", - "GetUsersMediaContainer": ".get_users", - "GetUsersMediaContainerTypedDict": ".get_users", - "GetUsersRequest": ".get_users", - "GetUsersRequestTypedDict": ".get_users", - "GetUsersResponse": ".get_users", - "GetUsersResponseBody": ".get_users", - "GetUsersResponseBodyTypedDict": ".get_users", - "GetUsersResponseTypedDict": ".get_users", - "GetUsersServer": ".get_users", - "GetUsersServerTypedDict": ".get_users", - "Home": ".get_users", - "Owned": ".get_users", - "Pending": ".get_users", - "Protected": ".get_users", - "Restricted": ".get_users", - "User": ".get_users", - "UserTypedDict": ".get_users", - "Filter": ".get_watch_list", - "GET_WATCH_LIST_SERVERS": ".get_watch_list", - "GetWatchListRequest": ".get_watch_list", - "GetWatchListRequestTypedDict": ".get_watch_list", - "GetWatchListResponse": ".get_watch_list", - "GetWatchListResponseBody": ".get_watch_list", - "GetWatchListResponseBodyTypedDict": ".get_watch_list", - "GetWatchListResponseTypedDict": ".get_watch_list", - "Image": ".get_watch_list", - "ImageTypedDict": ".get_watch_list", - "IncludeCollections": ".get_watch_list", - "IncludeExternalMedia": ".get_watch_list", - "Libtype": ".get_watch_list", - "Metadata": ".get_watch_list", - "MetadataTypedDict": ".get_watch_list", - "GetAvailableClientsMediaContainer": ".getavailableclients", - "GetAvailableClientsMediaContainerTypedDict": ".getavailableclients", - "GetAvailableClientsResponse": ".getavailableclients", - "GetAvailableClientsResponseBody": ".getavailableclients", - "GetAvailableClientsResponseBodyTypedDict": ".getavailableclients", - "GetAvailableClientsResponseTypedDict": ".getavailableclients", - "Server": ".getavailableclients", - "ServerTypedDict": ".getavailableclients", - "GetBandwidthStatisticsAccount": ".getbandwidthstatistics", - "GetBandwidthStatisticsAccountTypedDict": ".getbandwidthstatistics", - "GetBandwidthStatisticsDevice": ".getbandwidthstatistics", - "GetBandwidthStatisticsDeviceTypedDict": ".getbandwidthstatistics", - "GetBandwidthStatisticsMediaContainer": ".getbandwidthstatistics", - "GetBandwidthStatisticsMediaContainerTypedDict": ".getbandwidthstatistics", - "GetBandwidthStatisticsRequest": ".getbandwidthstatistics", - "GetBandwidthStatisticsRequestTypedDict": ".getbandwidthstatistics", - "GetBandwidthStatisticsResponse": ".getbandwidthstatistics", - "GetBandwidthStatisticsResponseBody": ".getbandwidthstatistics", - "GetBandwidthStatisticsResponseBodyTypedDict": ".getbandwidthstatistics", - "GetBandwidthStatisticsResponseTypedDict": ".getbandwidthstatistics", - "StatisticsBandwidth": ".getbandwidthstatistics", - "StatisticsBandwidthTypedDict": ".getbandwidthstatistics", - "ButlerTask": ".getbutlertasks", - "ButlerTaskTypedDict": ".getbutlertasks", - "ButlerTasks": ".getbutlertasks", - "ButlerTasksTypedDict": ".getbutlertasks", - "GetButlerTasksResponse": ".getbutlertasks", - "GetButlerTasksResponseBody": ".getbutlertasks", - "GetButlerTasksResponseBodyTypedDict": ".getbutlertasks", - "GetButlerTasksResponseTypedDict": ".getbutlertasks", - "GET_COMPANIONS_DATA_SERVERS": ".getcompanionsdata", - "GetCompanionsDataResponse": ".getcompanionsdata", - "GetCompanionsDataResponseTypedDict": ".getcompanionsdata", - "ResponseBody": ".getcompanionsdata", - "ResponseBodyTypedDict": ".getcompanionsdata", - "Device": ".getdevices", - "DeviceTypedDict": ".getdevices", - "GetDevicesMediaContainer": ".getdevices", - "GetDevicesMediaContainerTypedDict": ".getdevices", - "GetDevicesResponse": ".getdevices", - "GetDevicesResponseBody": ".getdevices", - "GetDevicesResponseBodyTypedDict": ".getdevices", - "GetDevicesResponseTypedDict": ".getdevices", - "GetFileHashRequest": ".getfilehash", - "GetFileHashRequestTypedDict": ".getfilehash", - "GetFileHashResponse": ".getfilehash", - "GetFileHashResponseTypedDict": ".getfilehash", - "GET_GEO_DATA_SERVERS": ".getgeodata", - "GetGeoDataGeoData": ".getgeodata", - "GetGeoDataGeoDataTypedDict": ".getgeodata", - "GetGeoDataResponse": ".getgeodata", - "GetGeoDataResponseTypedDict": ".getgeodata", - "GetGlobalHubsMediaContainer": ".getglobalhubs", - "GetGlobalHubsMediaContainerTypedDict": ".getglobalhubs", - "GetGlobalHubsMetadata": ".getglobalhubs", - "GetGlobalHubsMetadataTypedDict": ".getglobalhubs", - "GetGlobalHubsRequest": ".getglobalhubs", - "GetGlobalHubsRequestTypedDict": ".getglobalhubs", - "GetGlobalHubsResponse": ".getglobalhubs", - "GetGlobalHubsResponseBody": ".getglobalhubs", - "GetGlobalHubsResponseBodyTypedDict": ".getglobalhubs", - "GetGlobalHubsResponseTypedDict": ".getglobalhubs", - "Hub": ".getglobalhubs", - "HubTypedDict": ".getglobalhubs", - "OnlyTransient": ".getglobalhubs", - "GetHomeDataResponse": ".gethomedata", - "GetHomeDataResponseBody": ".gethomedata", - "GetHomeDataResponseBodyTypedDict": ".gethomedata", - "GetHomeDataResponseTypedDict": ".gethomedata", - "GetLibraryHubsCountry": ".getlibraryhubs", - "GetLibraryHubsCountryTypedDict": ".getlibraryhubs", - "GetLibraryHubsDirector": ".getlibraryhubs", - "GetLibraryHubsDirectorTypedDict": ".getlibraryhubs", - "GetLibraryHubsGenre": ".getlibraryhubs", - "GetLibraryHubsGenreTypedDict": ".getlibraryhubs", - "GetLibraryHubsHub": ".getlibraryhubs", - "GetLibraryHubsHubTypedDict": ".getlibraryhubs", - "GetLibraryHubsMedia": ".getlibraryhubs", - "GetLibraryHubsMediaContainer": ".getlibraryhubs", - "GetLibraryHubsMediaContainerTypedDict": ".getlibraryhubs", - "GetLibraryHubsMediaTypedDict": ".getlibraryhubs", - "GetLibraryHubsMetadata": ".getlibraryhubs", - "GetLibraryHubsMetadataTypedDict": ".getlibraryhubs", - "GetLibraryHubsPart": ".getlibraryhubs", - "GetLibraryHubsPartTypedDict": ".getlibraryhubs", - "GetLibraryHubsRequest": ".getlibraryhubs", - "GetLibraryHubsRequestTypedDict": ".getlibraryhubs", - "GetLibraryHubsResponse": ".getlibraryhubs", - "GetLibraryHubsResponseBody": ".getlibraryhubs", - "GetLibraryHubsResponseBodyTypedDict": ".getlibraryhubs", - "GetLibraryHubsResponseTypedDict": ".getlibraryhubs", - "GetLibraryHubsRole": ".getlibraryhubs", - "GetLibraryHubsRoleTypedDict": ".getlibraryhubs", - "GetLibraryHubsWriter": ".getlibraryhubs", - "GetLibraryHubsWriterTypedDict": ".getlibraryhubs", - "QueryParamOnlyTransient": ".getlibraryhubs", - "GetMetadataChildrenDirectory": ".getmetadatachildren", - "GetMetadataChildrenDirectoryTypedDict": ".getmetadatachildren", - "GetMetadataChildrenMediaContainer": ".getmetadatachildren", - "GetMetadataChildrenMediaContainerTypedDict": ".getmetadatachildren", - "GetMetadataChildrenMetadata": ".getmetadatachildren", - "GetMetadataChildrenMetadataTypedDict": ".getmetadatachildren", - "GetMetadataChildrenRequest": ".getmetadatachildren", - "GetMetadataChildrenRequestTypedDict": ".getmetadatachildren", - "GetMetadataChildrenResponse": ".getmetadatachildren", - "GetMetadataChildrenResponseBody": ".getmetadatachildren", - "GetMetadataChildrenResponseBodyTypedDict": ".getmetadatachildren", - "GetMetadataChildrenResponseTypedDict": ".getmetadatachildren", - "GetMyPlexAccountResponse": ".getmyplexaccount", - "GetMyPlexAccountResponseBody": ".getmyplexaccount", - "GetMyPlexAccountResponseBodyTypedDict": ".getmyplexaccount", - "GetMyPlexAccountResponseTypedDict": ".getmyplexaccount", - "MyPlex": ".getmyplexaccount", - "MyPlexTypedDict": ".getmyplexaccount", - "GET_PIN_SERVERS": ".getpin", - "GeoData": ".getpin", - "GeoDataTypedDict": ".getpin", - "GetPinAuthPinContainer": ".getpin", - "GetPinAuthPinContainerTypedDict": ".getpin", - "GetPinRequest": ".getpin", - "GetPinRequestTypedDict": ".getpin", - "GetPinResponse": ".getpin", - "GetPinResponseTypedDict": ".getpin", - "GetPlaylistMediaContainer": ".getplaylist", - "GetPlaylistMediaContainerTypedDict": ".getplaylist", - "GetPlaylistMetadata": ".getplaylist", - "GetPlaylistMetadataTypedDict": ".getplaylist", + "DeletePlaylistItemGlobals": ".deleteplaylistitem", + "DeletePlaylistItemGlobalsTypedDict": ".deleteplaylistitem", + "DeletePlaylistItemRequest": ".deleteplaylistitem", + "DeletePlaylistItemRequestTypedDict": ".deleteplaylistitem", + "DeletePlaylistItemResponse": ".deleteplaylistitem", + "DeletePlaylistItemResponseTypedDict": ".deleteplaylistitem", + "DeletePlayQueueItemGlobals": ".deleteplayqueueitem", + "DeletePlayQueueItemGlobalsTypedDict": ".deleteplayqueueitem", + "DeletePlayQueueItemRequest": ".deleteplayqueueitem", + "DeletePlayQueueItemRequestTypedDict": ".deleteplayqueueitem", + "DeletePlayQueueItemResponse": ".deleteplayqueueitem", + "DeletePlayQueueItemResponseTypedDict": ".deleteplayqueueitem", + "DeleteStreamGlobals": ".deletestream", + "DeleteStreamGlobalsTypedDict": ".deletestream", + "DeleteStreamRequest": ".deletestream", + "DeleteStreamRequestTypedDict": ".deletestream", + "DeleteStreamResponse": ".deletestream", + "DeleteStreamResponseTypedDict": ".deletestream", + "DeleteSubscriptionGlobals": ".deletesubscription", + "DeleteSubscriptionGlobalsTypedDict": ".deletesubscription", + "DeleteSubscriptionRequest": ".deletesubscription", + "DeleteSubscriptionRequestTypedDict": ".deletesubscription", + "DeleteSubscriptionResponse": ".deletesubscription", + "DeleteSubscriptionResponseTypedDict": ".deletesubscription", + "DetectAdsGlobals": ".detectads", + "DetectAdsGlobalsTypedDict": ".detectads", + "DetectAdsRequest": ".detectads", + "DetectAdsRequestTypedDict": ".detectads", + "DetectAdsResponse": ".detectads", + "DetectAdsResponseTypedDict": ".detectads", + "DetectCreditsGlobals": ".detectcredits", + "DetectCreditsGlobalsTypedDict": ".detectcredits", + "DetectCreditsRequest": ".detectcredits", + "DetectCreditsRequestTypedDict": ".detectcredits", + "DetectCreditsResponse": ".detectcredits", + "DetectCreditsResponseTypedDict": ".detectcredits", + "DetectIntrosGlobals": ".detectintros", + "DetectIntrosGlobalsTypedDict": ".detectintros", + "DetectIntrosRequest": ".detectintros", + "DetectIntrosRequestTypedDict": ".detectintros", + "DetectIntrosResponse": ".detectintros", + "DetectIntrosResponseTypedDict": ".detectintros", + "DetectVoiceActivityGlobals": ".detectvoiceactivity", + "DetectVoiceActivityGlobalsTypedDict": ".detectvoiceactivity", + "DetectVoiceActivityRequest": ".detectvoiceactivity", + "DetectVoiceActivityRequestTypedDict": ".detectvoiceactivity", + "DetectVoiceActivityResponse": ".detectvoiceactivity", + "DetectVoiceActivityResponseTypedDict": ".detectvoiceactivity", + "DiscoverDevicesResponse": ".discoverdevices", + "DiscoverDevicesResponseTypedDict": ".discoverdevices", + "EditMarkerGlobals": ".editmarker", + "EditMarkerGlobalsTypedDict": ".editmarker", + "EditMarkerRequest": ".editmarker", + "EditMarkerRequestTypedDict": ".editmarker", + "EditMarkerResponse": ".editmarker", + "EditMarkerResponseTypedDict": ".editmarker", + "QueryParamAttributes": ".editmarker", + "QueryParamAttributesTypedDict": ".editmarker", + "Args": ".editmetadataitem", + "ArgsTypedDict": ".editmetadataitem", + "EditMetadataItemGlobals": ".editmetadataitem", + "EditMetadataItemGlobalsTypedDict": ".editmetadataitem", + "EditMetadataItemRequest": ".editmetadataitem", + "EditMetadataItemRequestTypedDict": ".editmetadataitem", + "EditMetadataItemResponse": ".editmetadataitem", + "EditMetadataItemResponseTypedDict": ".editmetadataitem", + "EditSectionGlobals": ".editsection", + "EditSectionGlobalsTypedDict": ".editsection", + "EditSectionQueryParamPrefs": ".editsection", + "EditSectionQueryParamPrefsTypedDict": ".editsection", + "EditSectionRequest": ".editsection", + "EditSectionRequestTypedDict": ".editsection", + "EditSectionResponse": ".editsection", + "EditSectionResponseTypedDict": ".editsection", + "EditSubscriptionPreferencesGlobals": ".editsubscriptionpreferences", + "EditSubscriptionPreferencesGlobalsTypedDict": ".editsubscriptionpreferences", + "EditSubscriptionPreferencesQueryParamPrefs": ".editsubscriptionpreferences", + "EditSubscriptionPreferencesQueryParamPrefsTypedDict": ".editsubscriptionpreferences", + "EditSubscriptionPreferencesRequest": ".editsubscriptionpreferences", + "EditSubscriptionPreferencesRequestTypedDict": ".editsubscriptionpreferences", + "EditSubscriptionPreferencesResponse": ".editsubscriptionpreferences", + "EditSubscriptionPreferencesResponseTypedDict": ".editsubscriptionpreferences", + "EmptyTrashGlobals": ".emptytrash", + "EmptyTrashGlobalsTypedDict": ".emptytrash", + "EmptyTrashRequest": ".emptytrash", + "EmptyTrashRequestTypedDict": ".emptytrash", + "EmptyTrashResponse": ".emptytrash", + "EmptyTrashResponseTypedDict": ".emptytrash", + "EnablePapertrailGlobals": ".enablepapertrail", + "EnablePapertrailGlobalsTypedDict": ".enablepapertrail", + "EnablePapertrailRequest": ".enablepapertrail", + "EnablePapertrailRequestTypedDict": ".enablepapertrail", + "EnablePapertrailResponse": ".enablepapertrail", + "EnablePapertrailResponseTypedDict": ".enablepapertrail", + "GenerateThumbsGlobals": ".generatethumbs", + "GenerateThumbsGlobalsTypedDict": ".generatethumbs", + "GenerateThumbsRequest": ".generatethumbs", + "GenerateThumbsRequestTypedDict": ".generatethumbs", + "GenerateThumbsResponse": ".generatethumbs", + "GenerateThumbsResponseTypedDict": ".generatethumbs", + "GetAlbumsGlobals": ".getalbums", + "GetAlbumsGlobalsTypedDict": ".getalbums", + "GetAlbumsRequest": ".getalbums", + "GetAlbumsRequestTypedDict": ".getalbums", + "GetAlbumsResponse": ".getalbums", + "GetAlbumsResponseTypedDict": ".getalbums", + "GetAllHubsGlobals": ".getallhubs", + "GetAllHubsGlobalsTypedDict": ".getallhubs", + "GetAllHubsMediaContainer": ".getallhubs", + "GetAllHubsMediaContainerTypedDict": ".getallhubs", + "GetAllHubsRequest": ".getallhubs", + "GetAllHubsRequestTypedDict": ".getallhubs", + "GetAllHubsResponse": ".getallhubs", + "GetAllHubsResponseBody": ".getallhubs", + "GetAllHubsResponseBodyTypedDict": ".getallhubs", + "GetAllHubsResponseTypedDict": ".getallhubs", + "GetAllItemLeavesGlobals": ".getallitemleaves", + "GetAllItemLeavesGlobalsTypedDict": ".getallitemleaves", + "GetAllItemLeavesRequest": ".getallitemleaves", + "GetAllItemLeavesRequestTypedDict": ".getallitemleaves", + "GetAllItemLeavesResponse": ".getallitemleaves", + "GetAllItemLeavesResponseTypedDict": ".getallitemleaves", + "GetAllLanguagesMediaContainer": ".getalllanguages", + "GetAllLanguagesMediaContainerTypedDict": ".getalllanguages", + "GetAllLanguagesResponse": ".getalllanguages", + "GetAllLanguagesResponseBody": ".getalllanguages", + "GetAllLanguagesResponseBodyTypedDict": ".getalllanguages", + "GetAllLanguagesResponseTypedDict": ".getalllanguages", + "Language": ".getalllanguages", + "LanguageTypedDict": ".getalllanguages", + "GetAllLeavesGlobals": ".getallleaves", + "GetAllLeavesGlobalsTypedDict": ".getallleaves", + "GetAllLeavesRequest": ".getallleaves", + "GetAllLeavesRequestTypedDict": ".getallleaves", + "GetAllLeavesResponse": ".getallleaves", + "GetAllLeavesResponseTypedDict": ".getallleaves", + "GetAllPreferencesResponse": ".getallpreferences", + "GetAllPreferencesResponseTypedDict": ".getallpreferences", + "GetAllSubscriptionsGlobals": ".getallsubscriptions", + "GetAllSubscriptionsGlobalsTypedDict": ".getallsubscriptions", + "GetAllSubscriptionsRequest": ".getallsubscriptions", + "GetAllSubscriptionsRequestTypedDict": ".getallsubscriptions", + "GetAllSubscriptionsResponse": ".getallsubscriptions", + "GetAllSubscriptionsResponseTypedDict": ".getallsubscriptions", + "GetArtsGlobals": ".getarts", + "GetArtsGlobalsTypedDict": ".getarts", + "GetArtsRequest": ".getarts", + "GetArtsRequestTypedDict": ".getarts", + "GetArtsResponse": ".getarts", + "GetArtsResponseTypedDict": ".getarts", + "GetAugmentationStatusGlobals": ".getaugmentationstatus", + "GetAugmentationStatusGlobalsTypedDict": ".getaugmentationstatus", + "GetAugmentationStatusRequest": ".getaugmentationstatus", + "GetAugmentationStatusRequestTypedDict": ".getaugmentationstatus", + "GetAugmentationStatusResponse": ".getaugmentationstatus", + "GetAugmentationStatusResponseTypedDict": ".getaugmentationstatus", + "GetAvailableGrabbersGlobals": ".getavailablegrabbers", + "GetAvailableGrabbersGlobalsTypedDict": ".getavailablegrabbers", + "GetAvailableGrabbersMediaContainer": ".getavailablegrabbers", + "GetAvailableGrabbersMediaContainerTypedDict": ".getavailablegrabbers", + "GetAvailableGrabbersRequest": ".getavailablegrabbers", + "GetAvailableGrabbersRequestTypedDict": ".getavailablegrabbers", + "GetAvailableGrabbersResponse": ".getavailablegrabbers", + "GetAvailableGrabbersResponseBody": ".getavailablegrabbers", + "GetAvailableGrabbersResponseBodyTypedDict": ".getavailablegrabbers", + "GetAvailableGrabbersResponseTypedDict": ".getavailablegrabbers", + "MediaGrabber": ".getavailablegrabbers", + "MediaGrabberTypedDict": ".getavailablegrabbers", + "GetAvailableSortsGlobals": ".getavailablesorts", + "GetAvailableSortsGlobalsTypedDict": ".getavailablesorts", + "GetAvailableSortsMediaContainer": ".getavailablesorts", + "GetAvailableSortsMediaContainerTypedDict": ".getavailablesorts", + "GetAvailableSortsRequest": ".getavailablesorts", + "GetAvailableSortsRequestTypedDict": ".getavailablesorts", + "GetAvailableSortsResponse": ".getavailablesorts", + "GetAvailableSortsResponseBody": ".getavailablesorts", + "GetAvailableSortsResponseBodyTypedDict": ".getavailablesorts", + "GetAvailableSortsResponseTypedDict": ".getavailablesorts", + "GetBackgroundTasksMediaContainer": ".getbackgroundtasks", + "GetBackgroundTasksMediaContainerTypedDict": ".getbackgroundtasks", + "GetBackgroundTasksResponse": ".getbackgroundtasks", + "GetBackgroundTasksResponseBody": ".getbackgroundtasks", + "GetBackgroundTasksResponseBodyTypedDict": ".getbackgroundtasks", + "GetBackgroundTasksResponseTypedDict": ".getbackgroundtasks", + "GetBackgroundTasksType": ".getbackgroundtasks", + "TranscodeJob": ".getbackgroundtasks", + "TranscodeJobTypedDict": ".getbackgroundtasks", + "GetCategoriesGlobals": ".getcategories", + "GetCategoriesGlobalsTypedDict": ".getcategories", + "GetCategoriesRequest": ".getcategories", + "GetCategoriesRequestTypedDict": ".getcategories", + "GetCategoriesResponse": ".getcategories", + "GetCategoriesResponseTypedDict": ".getcategories", + "GetChannelsGlobals": ".getchannels", + "GetChannelsGlobalsTypedDict": ".getchannels", + "GetChannelsMediaContainer": ".getchannels", + "GetChannelsMediaContainerTypedDict": ".getchannels", + "GetChannelsRequest": ".getchannels", + "GetChannelsRequestTypedDict": ".getchannels", + "GetChannelsResponse": ".getchannels", + "GetChannelsResponseBody": ".getchannels", + "GetChannelsResponseBodyTypedDict": ".getchannels", + "GetChannelsResponseTypedDict": ".getchannels", + "GetChapterImageGlobals": ".getchapterimage", + "GetChapterImageGlobalsTypedDict": ".getchapterimage", + "GetChapterImageRequest": ".getchapterimage", + "GetChapterImageRequestTypedDict": ".getchapterimage", + "GetChapterImageResponse": ".getchapterimage", + "GetChapterImageResponseTypedDict": ".getchapterimage", + "GetClusterGlobals": ".getcluster", + "GetClusterGlobalsTypedDict": ".getcluster", + "GetClusterRequest": ".getcluster", + "GetClusterRequestTypedDict": ".getcluster", + "GetClusterResponse": ".getcluster", + "GetClusterResponseTypedDict": ".getcluster", + "GetCollectionImageGlobals": ".getcollectionimage", + "GetCollectionImageGlobalsTypedDict": ".getcollectionimage", + "GetCollectionImageRequest": ".getcollectionimage", + "GetCollectionImageRequestTypedDict": ".getcollectionimage", + "GetCollectionImageResponse": ".getcollectionimage", + "GetCollectionImageResponseTypedDict": ".getcollectionimage", + "GetCollectionItemsGlobals": ".getcollectionitems", + "GetCollectionItemsGlobalsTypedDict": ".getcollectionitems", + "GetCollectionItemsRequest": ".getcollectionitems", + "GetCollectionItemsRequestTypedDict": ".getcollectionitems", + "GetCollectionItemsResponse": ".getcollectionitems", + "GetCollectionItemsResponseTypedDict": ".getcollectionitems", + "GetCollectionsGlobals": ".getcollections", + "GetCollectionsGlobalsTypedDict": ".getcollections", + "GetCollectionsRequest": ".getcollections", + "GetCollectionsRequestTypedDict": ".getcollections", + "GetCollectionsResponse": ".getcollections", + "GetCollectionsResponseTypedDict": ".getcollections", + "GetColorsGlobals": ".getcolors", + "GetColorsGlobalsTypedDict": ".getcolors", + "GetColorsMediaContainer": ".getcolors", + "GetColorsMediaContainerTypedDict": ".getcolors", + "GetColorsRequest": ".getcolors", + "GetColorsRequestTypedDict": ".getcolors", + "GetColorsResponse": ".getcolors", + "GetColorsResponseBody": ".getcolors", + "GetColorsResponseBodyTypedDict": ".getcolors", + "GetColorsResponseTypedDict": ".getcolors", + "UltraBlurColors": ".getcolors", + "UltraBlurColorsTypedDict": ".getcolors", + "GetCommonGlobals": ".getcommon", + "GetCommonGlobalsTypedDict": ".getcommon", + "GetCommonRequest": ".getcommon", + "GetCommonRequestTypedDict": ".getcommon", + "GetCommonResponse": ".getcommon", + "GetCommonResponseTypedDict": ".getcommon", + "GetContinueWatchingGlobals": ".getcontinuewatching", + "GetContinueWatchingGlobalsTypedDict": ".getcontinuewatching", + "GetContinueWatchingMediaContainer": ".getcontinuewatching", + "GetContinueWatchingMediaContainerTypedDict": ".getcontinuewatching", + "GetContinueWatchingRequest": ".getcontinuewatching", + "GetContinueWatchingRequestTypedDict": ".getcontinuewatching", + "GetContinueWatchingResponse": ".getcontinuewatching", + "GetContinueWatchingResponseBody": ".getcontinuewatching", + "GetContinueWatchingResponseBodyTypedDict": ".getcontinuewatching", + "GetContinueWatchingResponseTypedDict": ".getcontinuewatching", + "Country": ".getcountries", + "CountryTypedDict": ".getcountries", + "Flavor": ".getcountries", + "GetCountriesMediaContainer": ".getcountries", + "GetCountriesMediaContainerTypedDict": ".getcountries", + "GetCountriesResponse": ".getcountries", + "GetCountriesResponseBody": ".getcountries", + "GetCountriesResponseBodyTypedDict": ".getcountries", + "GetCountriesResponseTypedDict": ".getcountries", + "GetCountriesLineupsGlobals": ".getcountrieslineups", + "GetCountriesLineupsGlobalsTypedDict": ".getcountrieslineups", + "GetCountriesLineupsRequest": ".getcountrieslineups", + "GetCountriesLineupsRequestTypedDict": ".getcountrieslineups", + "GetCountriesLineupsResponse": ".getcountrieslineups", + "GetCountriesLineupsResponseTypedDict": ".getcountrieslineups", + "GetCountryRegionsCountry": ".getcountryregions", + "GetCountryRegionsCountryTypedDict": ".getcountryregions", + "GetCountryRegionsGlobals": ".getcountryregions", + "GetCountryRegionsGlobalsTypedDict": ".getcountryregions", + "GetCountryRegionsMediaContainer": ".getcountryregions", + "GetCountryRegionsMediaContainerTypedDict": ".getcountryregions", + "GetCountryRegionsRequest": ".getcountryregions", + "GetCountryRegionsRequestTypedDict": ".getcountryregions", + "GetCountryRegionsResponse": ".getcountryregions", + "GetCountryRegionsResponseBody": ".getcountryregions", + "GetCountryRegionsResponseBodyTypedDict": ".getcountryregions", + "GetCountryRegionsResponseTypedDict": ".getcountryregions", + "GetDeviceDetailsGlobals": ".getdevicedetails", + "GetDeviceDetailsGlobalsTypedDict": ".getdevicedetails", + "GetDeviceDetailsRequest": ".getdevicedetails", + "GetDeviceDetailsRequestTypedDict": ".getdevicedetails", + "GetDeviceDetailsResponse": ".getdevicedetails", + "GetDeviceDetailsResponseTypedDict": ".getdevicedetails", + "DeviceChannel": ".getdeviceschannels", + "DeviceChannelTypedDict": ".getdeviceschannels", + "GetDevicesChannelsGlobals": ".getdeviceschannels", + "GetDevicesChannelsGlobalsTypedDict": ".getdeviceschannels", + "GetDevicesChannelsMediaContainer": ".getdeviceschannels", + "GetDevicesChannelsMediaContainerTypedDict": ".getdeviceschannels", + "GetDevicesChannelsRequest": ".getdeviceschannels", + "GetDevicesChannelsRequestTypedDict": ".getdeviceschannels", + "GetDevicesChannelsResponse": ".getdeviceschannels", + "GetDevicesChannelsResponseBody": ".getdeviceschannels", + "GetDevicesChannelsResponseBodyTypedDict": ".getdeviceschannels", + "GetDevicesChannelsResponseTypedDict": ".getdeviceschannels", + "GetDownloadQueueDownloadQueue": ".getdownloadqueue", + "GetDownloadQueueDownloadQueueTypedDict": ".getdownloadqueue", + "GetDownloadQueueGlobals": ".getdownloadqueue", + "GetDownloadQueueGlobalsTypedDict": ".getdownloadqueue", + "GetDownloadQueueMediaContainer": ".getdownloadqueue", + "GetDownloadQueueMediaContainerTypedDict": ".getdownloadqueue", + "GetDownloadQueueRequest": ".getdownloadqueue", + "GetDownloadQueueRequestTypedDict": ".getdownloadqueue", + "GetDownloadQueueResponse": ".getdownloadqueue", + "GetDownloadQueueResponseBody": ".getdownloadqueue", + "GetDownloadQueueResponseBodyTypedDict": ".getdownloadqueue", + "GetDownloadQueueResponseTypedDict": ".getdownloadqueue", + "GetDownloadQueueStatus": ".getdownloadqueue", + "GetDownloadQueueItemsDecisionResult": ".getdownloadqueueitems", + "GetDownloadQueueItemsDecisionResultTypedDict": ".getdownloadqueueitems", + "GetDownloadQueueItemsDownloadQueueItem": ".getdownloadqueueitems", + "GetDownloadQueueItemsDownloadQueueItemTypedDict": ".getdownloadqueueitems", + "GetDownloadQueueItemsGlobals": ".getdownloadqueueitems", + "GetDownloadQueueItemsGlobalsTypedDict": ".getdownloadqueueitems", + "GetDownloadQueueItemsMediaContainer": ".getdownloadqueueitems", + "GetDownloadQueueItemsMediaContainerTypedDict": ".getdownloadqueueitems", + "GetDownloadQueueItemsRequest": ".getdownloadqueueitems", + "GetDownloadQueueItemsRequestTypedDict": ".getdownloadqueueitems", + "GetDownloadQueueItemsResponse": ".getdownloadqueueitems", + "GetDownloadQueueItemsResponseBody": ".getdownloadqueueitems", + "GetDownloadQueueItemsResponseBodyTypedDict": ".getdownloadqueueitems", + "GetDownloadQueueItemsResponseTypedDict": ".getdownloadqueueitems", + "GetDownloadQueueItemsStatus": ".getdownloadqueueitems", + "GetDownloadQueueItemsTranscode": ".getdownloadqueueitems", + "GetDownloadQueueItemsTranscodeTypedDict": ".getdownloadqueueitems", + "GetDownloadQueueMediaGlobals": ".getdownloadqueuemedia", + "GetDownloadQueueMediaGlobalsTypedDict": ".getdownloadqueuemedia", + "GetDownloadQueueMediaRequest": ".getdownloadqueuemedia", + "GetDownloadQueueMediaRequestTypedDict": ".getdownloadqueuemedia", + "GetDownloadQueueMediaResponse": ".getdownloadqueuemedia", + "GetDownloadQueueMediaResponseTypedDict": ".getdownloadqueuemedia", + "GetDVRDVR": ".getdvr", + "GetDVRDVRTypedDict": ".getdvr", + "GetDVRDVRsMediaContainer": ".getdvr", + "GetDVRDVRsMediaContainerTypedDict": ".getdvr", + "GetDVRGlobals": ".getdvr", + "GetDVRGlobalsTypedDict": ".getdvr", + "GetDVRMediaContainer": ".getdvr", + "GetDVRMediaContainerTypedDict": ".getdvr", + "GetDVRRequest": ".getdvr", + "GetDVRRequestTypedDict": ".getdvr", + "GetDVRResponse": ".getdvr", + "GetDVRResponseBody": ".getdvr", + "GetDVRResponseBodyTypedDict": ".getdvr", + "GetDVRResponseTypedDict": ".getdvr", + "GetExtrasGlobals": ".getextras", + "GetExtrasGlobalsTypedDict": ".getextras", + "GetExtrasRequest": ".getextras", + "GetExtrasRequestTypedDict": ".getextras", + "GetExtrasResponse": ".getextras", + "GetExtrasResponseTypedDict": ".getextras", + "GetFileGlobals": ".getfile", + "GetFileGlobalsTypedDict": ".getfile", + "GetFileRequest": ".getfile", + "GetFileRequestTypedDict": ".getfile", + "GetFileResponse": ".getfile", + "GetFileResponseTypedDict": ".getfile", + "GetFirstCharactersDirectory": ".getfirstcharacters", + "GetFirstCharactersDirectoryTypedDict": ".getfirstcharacters", + "GetFirstCharactersGlobals": ".getfirstcharacters", + "GetFirstCharactersGlobalsTypedDict": ".getfirstcharacters", + "GetFirstCharactersMediaContainer": ".getfirstcharacters", + "GetFirstCharactersMediaContainerTypedDict": ".getfirstcharacters", + "GetFirstCharactersRequest": ".getfirstcharacters", + "GetFirstCharactersRequestTypedDict": ".getfirstcharacters", + "GetFirstCharactersResponse": ".getfirstcharacters", + "GetFirstCharactersResponseBody": ".getfirstcharacters", + "GetFirstCharactersResponseBodyTypedDict": ".getfirstcharacters", + "GetFirstCharactersResponseTypedDict": ".getfirstcharacters", + "GetFoldersDirectory": ".getfolders", + "GetFoldersDirectoryTypedDict": ".getfolders", + "GetFoldersGlobals": ".getfolders", + "GetFoldersGlobalsTypedDict": ".getfolders", + "GetFoldersMediaContainer": ".getfolders", + "GetFoldersMediaContainerTypedDict": ".getfolders", + "GetFoldersRequest": ".getfolders", + "GetFoldersRequestTypedDict": ".getfolders", + "GetFoldersResponse": ".getfolders", + "GetFoldersResponseBody": ".getfolders", + "GetFoldersResponseBodyTypedDict": ".getfolders", + "GetFoldersResponseTypedDict": ".getfolders", + "GetHistoryItemGlobals": ".gethistoryitem", + "GetHistoryItemGlobalsTypedDict": ".gethistoryitem", + "GetHistoryItemRequest": ".gethistoryitem", + "GetHistoryItemRequestTypedDict": ".gethistoryitem", + "GetHistoryItemResponse": ".gethistoryitem", + "GetHistoryItemResponseTypedDict": ".gethistoryitem", + "GetHubItemsGlobals": ".gethubitems", + "GetHubItemsGlobalsTypedDict": ".gethubitems", + "GetHubItemsRequest": ".gethubitems", + "GetHubItemsRequestTypedDict": ".gethubitems", + "GetHubItemsResponse": ".gethubitems", + "GetHubItemsResponseBody": ".gethubitems", + "GetHubItemsResponseBodyTypedDict": ".gethubitems", + "GetHubItemsResponseTypedDict": ".gethubitems", + "GetIdentityMediaContainer": ".getidentity", + "GetIdentityMediaContainerTypedDict": ".getidentity", + "GetIdentityResponse": ".getidentity", + "GetIdentityResponseBody": ".getidentity", + "GetIdentityResponseBodyTypedDict": ".getidentity", + "GetIdentityResponseTypedDict": ".getidentity", + "GetImageGlobals": ".getimage", + "GetImageGlobalsTypedDict": ".getimage", + "GetImageRequest": ".getimage", + "GetImageRequestTypedDict": ".getimage", + "GetImageResponse": ".getimage", + "GetImageResponseTypedDict": ".getimage", + "GetImageFromBifGlobals": ".getimagefrombif", + "GetImageFromBifGlobalsTypedDict": ".getimagefrombif", + "GetImageFromBifRequest": ".getimagefrombif", + "GetImageFromBifRequestTypedDict": ".getimagefrombif", + "GetImageFromBifResponse": ".getimagefrombif", + "GetImageFromBifResponseTypedDict": ".getimagefrombif", + "PathParamIndex": ".getimagefrombif", + "GetItemArtworkGlobals": ".getitemartwork", + "GetItemArtworkGlobalsTypedDict": ".getitemartwork", + "GetItemArtworkPathParamElement": ".getitemartwork", + "GetItemArtworkRequest": ".getitemartwork", + "GetItemArtworkRequestTypedDict": ".getitemartwork", + "GetItemArtworkResponse": ".getitemartwork", + "GetItemArtworkResponseTypedDict": ".getitemartwork", + "GetItemDecisionGlobals": ".getitemdecision", + "GetItemDecisionGlobalsTypedDict": ".getitemdecision", + "GetItemDecisionRequest": ".getitemdecision", + "GetItemDecisionRequestTypedDict": ".getitemdecision", + "GetItemDecisionResponse": ".getitemdecision", + "GetItemDecisionResponseTypedDict": ".getitemdecision", + "GetItemTreeGlobals": ".getitemtree", + "GetItemTreeGlobalsTypedDict": ".getitemtree", + "GetItemTreeRequest": ".getitemtree", + "GetItemTreeRequestTypedDict": ".getitemtree", + "GetItemTreeResponse": ".getitemtree", + "GetItemTreeResponseTypedDict": ".getitemtree", + "GetLibraryDetailsGlobals": ".getlibrarydetails", + "GetLibraryDetailsGlobalsTypedDict": ".getlibrarydetails", + "GetLibraryDetailsMediaContainer": ".getlibrarydetails", + "GetLibraryDetailsMediaContainerTypedDict": ".getlibrarydetails", + "GetLibraryDetailsRequest": ".getlibrarydetails", + "GetLibraryDetailsRequestTypedDict": ".getlibrarydetails", + "GetLibraryDetailsResponse": ".getlibrarydetails", + "GetLibraryDetailsResponseBody": ".getlibrarydetails", + "GetLibraryDetailsResponseBodyTypedDict": ".getlibrarydetails", + "GetLibraryDetailsResponseTypedDict": ".getlibrarydetails", + "GetLibraryItemsGlobals": ".getlibraryitems", + "GetLibraryItemsGlobalsTypedDict": ".getlibraryitems", + "GetLibraryItemsRequest": ".getlibraryitems", + "GetLibraryItemsRequestTypedDict": ".getlibraryitems", + "GetLibraryItemsResponse": ".getlibraryitems", + "GetLibraryItemsResponseTypedDict": ".getlibraryitems", + "GetLibraryMatchesGlobals": ".getlibrarymatches", + "GetLibraryMatchesGlobalsTypedDict": ".getlibrarymatches", + "GetLibraryMatchesRequest": ".getlibrarymatches", + "GetLibraryMatchesRequestTypedDict": ".getlibrarymatches", + "GetLibraryMatchesResponse": ".getlibrarymatches", + "GetLibraryMatchesResponseTypedDict": ".getlibrarymatches", + "GetLineupGlobals": ".getlineup", + "GetLineupGlobalsTypedDict": ".getlineup", + "GetLineupRequest": ".getlineup", + "GetLineupRequestTypedDict": ".getlineup", + "GetLineupResponse": ".getlineup", + "GetLineupResponseTypedDict": ".getlineup", + "GetLineupChannelsGlobals": ".getlineupchannels", + "GetLineupChannelsGlobalsTypedDict": ".getlineupchannels", + "GetLineupChannelsMediaContainer": ".getlineupchannels", + "GetLineupChannelsMediaContainerTypedDict": ".getlineupchannels", + "GetLineupChannelsRequest": ".getlineupchannels", + "GetLineupChannelsRequestTypedDict": ".getlineupchannels", + "GetLineupChannelsResponse": ".getlineupchannels", + "GetLineupChannelsResponseBody": ".getlineupchannels", + "GetLineupChannelsResponseBodyTypedDict": ".getlineupchannels", + "GetLineupChannelsResponseTypedDict": ".getlineupchannels", + "Lineup": ".getlineupchannels", + "LineupType": ".getlineupchannels", + "LineupTypedDict": ".getlineupchannels", + "GetLiveTVSessionGlobals": ".getlivetvsession", + "GetLiveTVSessionGlobalsTypedDict": ".getlivetvsession", + "GetLiveTVSessionRequest": ".getlivetvsession", + "GetLiveTVSessionRequestTypedDict": ".getlivetvsession", + "GetLiveTVSessionResponse": ".getlivetvsession", + "GetLiveTVSessionResponseTypedDict": ".getlivetvsession", + "GetMediaPartGlobals": ".getmediapart", + "GetMediaPartGlobalsTypedDict": ".getmediapart", + "GetMediaPartRequest": ".getmediapart", + "GetMediaPartRequestTypedDict": ".getmediapart", + "GetMediaPartResponse": ".getmediapart", + "GetMediaPartResponseTypedDict": ".getmediapart", + "GetMetadataHubsGlobals": ".getmetadatahubs", + "GetMetadataHubsGlobalsTypedDict": ".getmetadatahubs", + "GetMetadataHubsRequest": ".getmetadatahubs", + "GetMetadataHubsRequestTypedDict": ".getmetadatahubs", + "GetMetadataHubsResponse": ".getmetadatahubs", + "GetMetadataHubsResponseTypedDict": ".getmetadatahubs", + "GetMetadataItemGlobals": ".getmetadataitem", + "GetMetadataItemGlobalsTypedDict": ".getmetadataitem", + "GetMetadataItemRequest": ".getmetadataitem", + "GetMetadataItemRequestTypedDict": ".getmetadataitem", + "GetMetadataItemResponse": ".getmetadataitem", + "GetMetadataItemResponseTypedDict": ".getmetadataitem", + "GetNotificationsGlobals": ".getnotifications", + "GetNotificationsGlobalsTypedDict": ".getnotifications", + "GetNotificationsRequest": ".getnotifications", + "GetNotificationsRequestTypedDict": ".getnotifications", + "GetNotificationsResponse": ".getnotifications", + "GetNotificationsResponseTypedDict": ".getnotifications", + "GetPartIndexGlobals": ".getpartindex", + "GetPartIndexGlobalsTypedDict": ".getpartindex", + "GetPartIndexRequest": ".getpartindex", + "GetPartIndexRequestTypedDict": ".getpartindex", + "GetPartIndexResponse": ".getpartindex", + "GetPartIndexResponseTypedDict": ".getpartindex", + "Index": ".getpartindex", + "GetPersonGlobals": ".getperson", + "GetPersonGlobalsTypedDict": ".getperson", + "GetPersonMediaContainer": ".getperson", + "GetPersonMediaContainerTypedDict": ".getperson", + "GetPersonRequest": ".getperson", + "GetPersonRequestTypedDict": ".getperson", + "GetPersonResponse": ".getperson", + "GetPersonResponseBody": ".getperson", + "GetPersonResponseBodyTypedDict": ".getperson", + "GetPersonResponseTypedDict": ".getperson", + "GetPlaylistGlobals": ".getplaylist", + "GetPlaylistGlobalsTypedDict": ".getplaylist", "GetPlaylistRequest": ".getplaylist", "GetPlaylistRequestTypedDict": ".getplaylist", "GetPlaylistResponse": ".getplaylist", - "GetPlaylistResponseBody": ".getplaylist", - "GetPlaylistResponseBodyTypedDict": ".getplaylist", "GetPlaylistResponseTypedDict": ".getplaylist", - "GetPlaylistContentsCountry": ".getplaylistcontents", - "GetPlaylistContentsCountryTypedDict": ".getplaylistcontents", - "GetPlaylistContentsDirector": ".getplaylistcontents", - "GetPlaylistContentsDirectorTypedDict": ".getplaylistcontents", - "GetPlaylistContentsGenre": ".getplaylistcontents", - "GetPlaylistContentsGenreTypedDict": ".getplaylistcontents", - "GetPlaylistContentsMedia": ".getplaylistcontents", - "GetPlaylistContentsMediaContainer": ".getplaylistcontents", - "GetPlaylistContentsMediaContainerTypedDict": ".getplaylistcontents", - "GetPlaylistContentsMediaTypedDict": ".getplaylistcontents", - "GetPlaylistContentsMetadata": ".getplaylistcontents", - "GetPlaylistContentsMetadataTypedDict": ".getplaylistcontents", - "GetPlaylistContentsPart": ".getplaylistcontents", - "GetPlaylistContentsPartTypedDict": ".getplaylistcontents", - "GetPlaylistContentsQueryParamType": ".getplaylistcontents", - "GetPlaylistContentsRequest": ".getplaylistcontents", - "GetPlaylistContentsRequestTypedDict": ".getplaylistcontents", - "GetPlaylistContentsResponse": ".getplaylistcontents", - "GetPlaylistContentsResponseBody": ".getplaylistcontents", - "GetPlaylistContentsResponseBodyTypedDict": ".getplaylistcontents", - "GetPlaylistContentsResponseTypedDict": ".getplaylistcontents", - "GetPlaylistContentsRole": ".getplaylistcontents", - "GetPlaylistContentsRoleTypedDict": ".getplaylistcontents", - "GetPlaylistContentsWriter": ".getplaylistcontents", - "GetPlaylistContentsWriterTypedDict": ".getplaylistcontents", - "GetPlaylistsMediaContainer": ".getplaylists", - "GetPlaylistsMediaContainerTypedDict": ".getplaylists", - "GetPlaylistsMetadata": ".getplaylists", - "GetPlaylistsMetadataTypedDict": ".getplaylists", - "GetPlaylistsRequest": ".getplaylists", - "GetPlaylistsRequestTypedDict": ".getplaylists", - "GetPlaylistsResponse": ".getplaylists", - "GetPlaylistsResponseBody": ".getplaylists", - "GetPlaylistsResponseBodyTypedDict": ".getplaylists", - "GetPlaylistsResponseTypedDict": ".getplaylists", - "PlaylistType": ".getplaylists", - "QueryParamSmart": ".getplaylists", - "GetResizedPhotoRequest": ".getresizedphoto", - "GetResizedPhotoRequestTypedDict": ".getresizedphoto", - "GetResizedPhotoResponse": ".getresizedphoto", - "GetResizedPhotoResponseTypedDict": ".getresizedphoto", - "MinSize": ".getresizedphoto", - "Upscale": ".getresizedphoto", - "GetResourcesStatisticsMediaContainer": ".getresourcesstatistics", - "GetResourcesStatisticsMediaContainerTypedDict": ".getresourcesstatistics", - "GetResourcesStatisticsRequest": ".getresourcesstatistics", - "GetResourcesStatisticsRequestTypedDict": ".getresourcesstatistics", - "GetResourcesStatisticsResponse": ".getresourcesstatistics", - "GetResourcesStatisticsResponseBody": ".getresourcesstatistics", - "GetResourcesStatisticsResponseBodyTypedDict": ".getresourcesstatistics", - "GetResourcesStatisticsResponseTypedDict": ".getresourcesstatistics", - "StatisticsResources": ".getresourcesstatistics", - "StatisticsResourcesTypedDict": ".getresourcesstatistics", - "GetSearchResultsCountry": ".getsearchresults", - "GetSearchResultsCountryTypedDict": ".getsearchresults", - "GetSearchResultsDirector": ".getsearchresults", - "GetSearchResultsDirectorTypedDict": ".getsearchresults", - "GetSearchResultsGenre": ".getsearchresults", - "GetSearchResultsGenreTypedDict": ".getsearchresults", - "GetSearchResultsMedia": ".getsearchresults", - "GetSearchResultsMediaContainer": ".getsearchresults", - "GetSearchResultsMediaContainerTypedDict": ".getsearchresults", - "GetSearchResultsMediaTypedDict": ".getsearchresults", - "GetSearchResultsMetadata": ".getsearchresults", - "GetSearchResultsMetadataTypedDict": ".getsearchresults", - "GetSearchResultsPart": ".getsearchresults", - "GetSearchResultsPartTypedDict": ".getsearchresults", - "GetSearchResultsRequest": ".getsearchresults", - "GetSearchResultsRequestTypedDict": ".getsearchresults", - "GetSearchResultsResponse": ".getsearchresults", - "GetSearchResultsResponseBody": ".getsearchresults", - "GetSearchResultsResponseBodyTypedDict": ".getsearchresults", - "GetSearchResultsResponseTypedDict": ".getsearchresults", - "GetSearchResultsRole": ".getsearchresults", - "GetSearchResultsRoleTypedDict": ".getsearchresults", - "GetSearchResultsWriter": ".getsearchresults", - "GetSearchResultsWriterTypedDict": ".getsearchresults", - "Provider": ".getsearchresults", - "ProviderTypedDict": ".getsearchresults", - "Activity": ".getserveractivities", - "ActivityTypedDict": ".getserveractivities", - "Context": ".getserveractivities", - "ContextTypedDict": ".getserveractivities", - "GetServerActivitiesMediaContainer": ".getserveractivities", - "GetServerActivitiesMediaContainerTypedDict": ".getserveractivities", - "GetServerActivitiesResponse": ".getserveractivities", - "GetServerActivitiesResponseBody": ".getserveractivities", - "GetServerActivitiesResponseBodyTypedDict": ".getserveractivities", - "GetServerActivitiesResponseTypedDict": ".getserveractivities", - "Directory": ".getservercapabilities", - "DirectoryTypedDict": ".getservercapabilities", - "GetServerCapabilitiesResponse": ".getservercapabilities", - "GetServerCapabilitiesResponseBody": ".getservercapabilities", - "GetServerCapabilitiesResponseBodyTypedDict": ".getservercapabilities", - "GetServerCapabilitiesResponseTypedDict": ".getservercapabilities", - "MediaContainer": ".getservercapabilities", - "MediaContainerTypedDict": ".getservercapabilities", - "GetServerListMediaContainer": ".getserverlist", - "GetServerListMediaContainerTypedDict": ".getserverlist", - "GetServerListResponse": ".getserverlist", - "GetServerListResponseBody": ".getserverlist", - "GetServerListResponseBodyTypedDict": ".getserverlist", - "GetServerListResponseTypedDict": ".getserverlist", - "GetServerListServer": ".getserverlist", - "GetServerListServerTypedDict": ".getserverlist", - "GetServerPreferencesMediaContainer": ".getserverpreferences", - "GetServerPreferencesMediaContainerTypedDict": ".getserverpreferences", - "GetServerPreferencesResponse": ".getserverpreferences", - "GetServerPreferencesResponseBody": ".getserverpreferences", - "GetServerPreferencesResponseBodyTypedDict": ".getserverpreferences", - "GetServerPreferencesResponseTypedDict": ".getserverpreferences", - "Setting": ".getserverpreferences", - "SettingTypedDict": ".getserverpreferences", - "GetSessionHistoryMediaContainer": ".getsessionhistory", - "GetSessionHistoryMediaContainerTypedDict": ".getsessionhistory", - "GetSessionHistoryMetadata": ".getsessionhistory", - "GetSessionHistoryMetadataTypedDict": ".getsessionhistory", - "GetSessionHistoryRequest": ".getsessionhistory", - "GetSessionHistoryRequestTypedDict": ".getsessionhistory", - "GetSessionHistoryResponse": ".getsessionhistory", - "GetSessionHistoryResponseBody": ".getsessionhistory", - "GetSessionHistoryResponseBodyTypedDict": ".getsessionhistory", - "GetSessionHistoryResponseTypedDict": ".getsessionhistory", - "QueryParamFilter": ".getsessionhistory", - "QueryParamFilterTypedDict": ".getsessionhistory", - "GetSessionsMedia": ".getsessions", - "GetSessionsMediaContainer": ".getsessions", - "GetSessionsMediaContainerTypedDict": ".getsessions", - "GetSessionsMediaTypedDict": ".getsessions", - "GetSessionsMetadata": ".getsessions", - "GetSessionsMetadataTypedDict": ".getsessions", - "GetSessionsPart": ".getsessions", - "GetSessionsPartTypedDict": ".getsessions", + "AdvancedSubtitles": ".getplaylistgenerator", + "GetPlaylistGeneratorDevice": ".getplaylistgenerator", + "GetPlaylistGeneratorDeviceTypedDict": ".getplaylistgenerator", + "GetPlaylistGeneratorGlobals": ".getplaylistgenerator", + "GetPlaylistGeneratorGlobalsTypedDict": ".getplaylistgenerator", + "GetPlaylistGeneratorItem": ".getplaylistgenerator", + "GetPlaylistGeneratorItemTypedDict": ".getplaylistgenerator", + "GetPlaylistGeneratorLocation": ".getplaylistgenerator", + "GetPlaylistGeneratorLocationTypedDict": ".getplaylistgenerator", + "GetPlaylistGeneratorMediaContainer": ".getplaylistgenerator", + "GetPlaylistGeneratorMediaContainerTypedDict": ".getplaylistgenerator", + "GetPlaylistGeneratorPolicy": ".getplaylistgenerator", + "GetPlaylistGeneratorPolicyTypedDict": ".getplaylistgenerator", + "GetPlaylistGeneratorRequest": ".getplaylistgenerator", + "GetPlaylistGeneratorRequestTypedDict": ".getplaylistgenerator", + "GetPlaylistGeneratorResponse": ".getplaylistgenerator", + "GetPlaylistGeneratorResponseBody": ".getplaylistgenerator", + "GetPlaylistGeneratorResponseBodyTypedDict": ".getplaylistgenerator", + "GetPlaylistGeneratorResponseTypedDict": ".getplaylistgenerator", + "GetPlaylistGeneratorScope": ".getplaylistgenerator", + "GetPlaylistGeneratorState": ".getplaylistgenerator", + "GetPlaylistGeneratorStatus": ".getplaylistgenerator", + "GetPlaylistGeneratorStatusTypedDict": ".getplaylistgenerator", + "GetPlaylistGeneratorSubtitles": ".getplaylistgenerator", + "GetPlaylistGeneratorType": ".getplaylistgenerator", + "MediaSettings": ".getplaylistgenerator", + "MediaSettingsTypedDict": ".getplaylistgenerator", + "GetPlaylistGeneratorItemsGlobals": ".getplaylistgeneratoritems", + "GetPlaylistGeneratorItemsGlobalsTypedDict": ".getplaylistgeneratoritems", + "GetPlaylistGeneratorItemsMediaContainer": ".getplaylistgeneratoritems", + "GetPlaylistGeneratorItemsMediaContainerTypedDict": ".getplaylistgeneratoritems", + "GetPlaylistGeneratorItemsMetadata": ".getplaylistgeneratoritems", + "GetPlaylistGeneratorItemsMetadataTypedDict": ".getplaylistgeneratoritems", + "GetPlaylistGeneratorItemsRequest": ".getplaylistgeneratoritems", + "GetPlaylistGeneratorItemsRequestTypedDict": ".getplaylistgeneratoritems", + "GetPlaylistGeneratorItemsResponse": ".getplaylistgeneratoritems", + "GetPlaylistGeneratorItemsResponseBody": ".getplaylistgeneratoritems", + "GetPlaylistGeneratorItemsResponseBodyTypedDict": ".getplaylistgeneratoritems", + "GetPlaylistGeneratorItemsResponseTypedDict": ".getplaylistgeneratoritems", + "ProcessingState": ".getplaylistgeneratoritems", + "ProcessingStateContext": ".getplaylistgeneratoritems", + "GetPlaylistGeneratorsGlobals": ".getplaylistgenerators", + "GetPlaylistGeneratorsGlobalsTypedDict": ".getplaylistgenerators", + "GetPlaylistGeneratorsMediaContainer": ".getplaylistgenerators", + "GetPlaylistGeneratorsMediaContainerTypedDict": ".getplaylistgenerators", + "GetPlaylistGeneratorsRequest": ".getplaylistgenerators", + "GetPlaylistGeneratorsRequestTypedDict": ".getplaylistgenerators", + "GetPlaylistGeneratorsResponse": ".getplaylistgenerators", + "GetPlaylistGeneratorsResponseBody": ".getplaylistgenerators", + "GetPlaylistGeneratorsResponseBodyTypedDict": ".getplaylistgenerators", + "GetPlaylistGeneratorsResponseTypedDict": ".getplaylistgenerators", + "GetPlaylistGeneratorsType": ".getplaylistgenerators", + "PlayQueueGenerator": ".getplaylistgenerators", + "PlayQueueGeneratorTypedDict": ".getplaylistgenerators", + "GetPlaylistItemsGlobals": ".getplaylistitems", + "GetPlaylistItemsGlobalsTypedDict": ".getplaylistitems", + "GetPlaylistItemsRequest": ".getplaylistitems", + "GetPlaylistItemsRequestTypedDict": ".getplaylistitems", + "GetPlaylistItemsResponse": ".getplaylistitems", + "GetPlaylistItemsResponseTypedDict": ".getplaylistitems", + "GetPlayQueueGlobals": ".getplayqueue", + "GetPlayQueueGlobalsTypedDict": ".getplayqueue", + "GetPlayQueueRequest": ".getplayqueue", + "GetPlayQueueRequestTypedDict": ".getplayqueue", + "GetPlayQueueResponse": ".getplayqueue", + "GetPlayQueueResponseTypedDict": ".getplayqueue", + "GetPostplayHubsGlobals": ".getpostplayhubs", + "GetPostplayHubsGlobalsTypedDict": ".getpostplayhubs", + "GetPostplayHubsRequest": ".getpostplayhubs", + "GetPostplayHubsRequestTypedDict": ".getpostplayhubs", + "GetPostplayHubsResponse": ".getpostplayhubs", + "GetPostplayHubsResponseTypedDict": ".getpostplayhubs", + "GetPreferenceGlobals": ".getpreference", + "GetPreferenceGlobalsTypedDict": ".getpreference", + "GetPreferenceRequest": ".getpreference", + "GetPreferenceRequestTypedDict": ".getpreference", + "GetPreferenceResponse": ".getpreference", + "GetPreferenceResponseTypedDict": ".getpreference", + "GetPromotedHubsGlobals": ".getpromotedhubs", + "GetPromotedHubsGlobalsTypedDict": ".getpromotedhubs", + "GetPromotedHubsMediaContainer": ".getpromotedhubs", + "GetPromotedHubsMediaContainerTypedDict": ".getpromotedhubs", + "GetPromotedHubsRequest": ".getpromotedhubs", + "GetPromotedHubsRequestTypedDict": ".getpromotedhubs", + "GetPromotedHubsResponse": ".getpromotedhubs", + "GetPromotedHubsResponseBody": ".getpromotedhubs", + "GetPromotedHubsResponseBodyTypedDict": ".getpromotedhubs", + "GetPromotedHubsResponseTypedDict": ".getpromotedhubs", + "GetRandomArtworkGlobals": ".getrandomartwork", + "GetRandomArtworkGlobalsTypedDict": ".getrandomartwork", + "GetRandomArtworkRequest": ".getrandomartwork", + "GetRandomArtworkRequestTypedDict": ".getrandomartwork", + "GetRandomArtworkResponse": ".getrandomartwork", + "GetRandomArtworkResponseTypedDict": ".getrandomartwork", + "GetRelatedHubsGlobals": ".getrelatedhubs", + "GetRelatedHubsGlobalsTypedDict": ".getrelatedhubs", + "GetRelatedHubsRequest": ".getrelatedhubs", + "GetRelatedHubsRequestTypedDict": ".getrelatedhubs", + "GetRelatedHubsResponse": ".getrelatedhubs", + "GetRelatedHubsResponseTypedDict": ".getrelatedhubs", + "GetRelatedItemsGlobals": ".getrelateditems", + "GetRelatedItemsGlobalsTypedDict": ".getrelateditems", + "GetRelatedItemsMediaContainer": ".getrelateditems", + "GetRelatedItemsMediaContainerTypedDict": ".getrelateditems", + "GetRelatedItemsRequest": ".getrelateditems", + "GetRelatedItemsRequestTypedDict": ".getrelateditems", + "GetRelatedItemsResponse": ".getrelateditems", + "GetRelatedItemsResponseBody": ".getrelateditems", + "GetRelatedItemsResponseBodyTypedDict": ".getrelateditems", + "GetRelatedItemsResponseTypedDict": ".getrelateditems", + "GetScheduledRecordingsMediaContainer": ".getscheduledrecordings", + "GetScheduledRecordingsMediaContainerTypedDict": ".getscheduledrecordings", + "GetScheduledRecordingsResponse": ".getscheduledrecordings", + "GetScheduledRecordingsResponseBody": ".getscheduledrecordings", + "GetScheduledRecordingsResponseBodyTypedDict": ".getscheduledrecordings", + "GetScheduledRecordingsResponseTypedDict": ".getscheduledrecordings", + "GetSectionFiltersGlobals": ".getsectionfilters", + "GetSectionFiltersGlobalsTypedDict": ".getsectionfilters", + "GetSectionFiltersMediaContainer": ".getsectionfilters", + "GetSectionFiltersMediaContainerTypedDict": ".getsectionfilters", + "GetSectionFiltersRequest": ".getsectionfilters", + "GetSectionFiltersRequestTypedDict": ".getsectionfilters", + "GetSectionFiltersResponse": ".getsectionfilters", + "GetSectionFiltersResponseBody": ".getsectionfilters", + "GetSectionFiltersResponseBodyTypedDict": ".getsectionfilters", + "GetSectionFiltersResponseTypedDict": ".getsectionfilters", + "GetSectionHubsGlobals": ".getsectionhubs", + "GetSectionHubsGlobalsTypedDict": ".getsectionhubs", + "GetSectionHubsMediaContainer": ".getsectionhubs", + "GetSectionHubsMediaContainerTypedDict": ".getsectionhubs", + "GetSectionHubsRequest": ".getsectionhubs", + "GetSectionHubsRequestTypedDict": ".getsectionhubs", + "GetSectionHubsResponse": ".getsectionhubs", + "GetSectionHubsResponseBody": ".getsectionhubs", + "GetSectionHubsResponseBodyTypedDict": ".getsectionhubs", + "GetSectionHubsResponseTypedDict": ".getsectionhubs", + "GetSectionImageGlobals": ".getsectionimage", + "GetSectionImageGlobalsTypedDict": ".getsectionimage", + "GetSectionImageRequest": ".getsectionimage", + "GetSectionImageRequestTypedDict": ".getsectionimage", + "GetSectionImageResponse": ".getsectionimage", + "GetSectionImageResponseTypedDict": ".getsectionimage", + "GetSectionPreferencesGlobals": ".getsectionpreferences", + "GetSectionPreferencesGlobalsTypedDict": ".getsectionpreferences", + "GetSectionPreferencesRequest": ".getsectionpreferences", + "GetSectionPreferencesRequestTypedDict": ".getsectionpreferences", + "GetSectionPreferencesResponse": ".getsectionpreferences", + "GetSectionPreferencesResponseTypedDict": ".getsectionpreferences", + "GetSectionsMediaContainer": ".getsections", + "GetSectionsMediaContainerTypedDict": ".getsections", + "GetSectionsResponse": ".getsections", + "GetSectionsResponseBody": ".getsections", + "GetSectionsResponseBodyTypedDict": ".getsections", + "GetSectionsResponseTypedDict": ".getsections", + "GetSectionsPrefsGlobals": ".getsectionsprefs", + "GetSectionsPrefsGlobalsTypedDict": ".getsectionsprefs", + "GetSectionsPrefsRequest": ".getsectionsprefs", + "GetSectionsPrefsRequestTypedDict": ".getsectionsprefs", + "GetSectionsPrefsResponse": ".getsectionsprefs", + "GetSectionsPrefsResponseTypedDict": ".getsectionsprefs", + "GetServerInfoGlobals": ".getserverinfo", + "GetServerInfoGlobalsTypedDict": ".getserverinfo", + "GetServerInfoRequest": ".getserverinfo", + "GetServerInfoRequestTypedDict": ".getserverinfo", + "GetServerInfoResponse": ".getserverinfo", + "GetServerInfoResponseTypedDict": ".getserverinfo", + "GetSessionPlaylistIndexGlobals": ".getsessionplaylistindex", + "GetSessionPlaylistIndexGlobalsTypedDict": ".getsessionplaylistindex", + "GetSessionPlaylistIndexRequest": ".getsessionplaylistindex", + "GetSessionPlaylistIndexRequestTypedDict": ".getsessionplaylistindex", + "GetSessionPlaylistIndexResponse": ".getsessionplaylistindex", + "GetSessionPlaylistIndexResponseTypedDict": ".getsessionplaylistindex", "GetSessionsResponse": ".getsessions", - "GetSessionsResponseBody": ".getsessions", - "GetSessionsResponseBodyTypedDict": ".getsessions", "GetSessionsResponseTypedDict": ".getsessions", - "GetSessionsStream": ".getsessions", - "GetSessionsStreamTypedDict": ".getsessions", - "GetSessionsUser": ".getsessions", - "GetSessionsUserTypedDict": ".getsessions", - "Player": ".getsessions", - "PlayerTypedDict": ".getsessions", - "Session": ".getsessions", - "SessionTypedDict": ".getsessions", + "GetSessionSegmentGlobals": ".getsessionsegment", + "GetSessionSegmentGlobalsTypedDict": ".getsessionsegment", + "GetSessionSegmentRequest": ".getsessionsegment", + "GetSessionSegmentRequestTypedDict": ".getsessionsegment", + "GetSessionSegmentResponse": ".getsessionsegment", + "GetSessionSegmentResponseTypedDict": ".getsessionsegment", + "GetSonicallySimilarGlobals": ".getsonicallysimilar", + "GetSonicallySimilarGlobalsTypedDict": ".getsonicallysimilar", + "GetSonicallySimilarRequest": ".getsonicallysimilar", + "GetSonicallySimilarRequestTypedDict": ".getsonicallysimilar", + "GetSonicallySimilarResponse": ".getsonicallysimilar", + "GetSonicallySimilarResponseTypedDict": ".getsonicallysimilar", + "GetSonicPathGlobals": ".getsonicpath", + "GetSonicPathGlobalsTypedDict": ".getsonicpath", + "GetSonicPathRequest": ".getsonicpath", + "GetSonicPathRequestTypedDict": ".getsonicpath", + "GetSonicPathResponse": ".getsonicpath", + "GetSonicPathResponseTypedDict": ".getsonicpath", + "Connection": ".getsourceconnectioninformation", + "ConnectionTypedDict": ".getsourceconnectioninformation", + "Device": ".getsourceconnectioninformation", + "DeviceTypedDict": ".getsourceconnectioninformation", + "GetSourceConnectionInformationGlobals": ".getsourceconnectioninformation", + "GetSourceConnectionInformationGlobalsTypedDict": ".getsourceconnectioninformation", + "GetSourceConnectionInformationMediaContainer": ".getsourceconnectioninformation", + "GetSourceConnectionInformationMediaContainerTypedDict": ".getsourceconnectioninformation", "GetSourceConnectionInformationRequest": ".getsourceconnectioninformation", "GetSourceConnectionInformationRequestTypedDict": ".getsourceconnectioninformation", "GetSourceConnectionInformationResponse": ".getsourceconnectioninformation", + "GetSourceConnectionInformationResponseBody": ".getsourceconnectioninformation", + "GetSourceConnectionInformationResponseBodyTypedDict": ".getsourceconnectioninformation", "GetSourceConnectionInformationResponseTypedDict": ".getsourceconnectioninformation", - "Account": ".getstatistics", - "AccountTypedDict": ".getstatistics", - "GetStatisticsDevice": ".getstatistics", - "GetStatisticsDeviceTypedDict": ".getstatistics", - "GetStatisticsMediaContainer": ".getstatistics", - "GetStatisticsMediaContainerTypedDict": ".getstatistics", - "GetStatisticsRequest": ".getstatistics", - "GetStatisticsRequestTypedDict": ".getstatistics", - "GetStatisticsResponse": ".getstatistics", - "GetStatisticsResponseBody": ".getstatistics", - "GetStatisticsResponseBodyTypedDict": ".getstatistics", - "GetStatisticsResponseTypedDict": ".getstatistics", - "StatisticsMedia": ".getstatistics", - "StatisticsMediaTypedDict": ".getstatistics", - "GetTimelineRequest": ".gettimeline", - "GetTimelineRequestTypedDict": ".gettimeline", - "GetTimelineResponse": ".gettimeline", - "GetTimelineResponseTypedDict": ".gettimeline", - "State": ".gettimeline", - "GET_TOKEN_BY_PIN_ID_SERVERS": ".gettokenbypinid", - "GetTokenByPinIDAuthPinContainer": ".gettokenbypinid", - "GetTokenByPinIDAuthPinContainerTypedDict": ".gettokenbypinid", - "GetTokenByPinIDGeoData": ".gettokenbypinid", - "GetTokenByPinIDGeoDataTypedDict": ".gettokenbypinid", - "GetTokenByPinIDRequest": ".gettokenbypinid", - "GetTokenByPinIDRequestTypedDict": ".gettokenbypinid", - "GetTokenByPinIDResponse": ".gettokenbypinid", - "GetTokenByPinIDResponseTypedDict": ".gettokenbypinid", - "AutoSelectSubtitle": ".gettokendetails", - "DefaultSubtitleAccessibility": ".gettokendetails", - "DefaultSubtitleForced": ".gettokendetails", - "GET_TOKEN_DETAILS_SERVERS": ".gettokendetails", - "GetTokenDetailsAuthenticationResponseStatus": ".gettokendetails", - "GetTokenDetailsAuthenticationStatus": ".gettokendetails", - "GetTokenDetailsResponse": ".gettokendetails", - "GetTokenDetailsResponseTypedDict": ".gettokendetails", - "GetTokenDetailsStatus": ".gettokendetails", - "GetTokenDetailsSubscription": ".gettokendetails", - "GetTokenDetailsSubscriptionTypedDict": ".gettokendetails", - "GetTokenDetailsUserPlexAccount": ".gettokendetails", - "GetTokenDetailsUserPlexAccountTypedDict": ".gettokendetails", - "MailingListStatus": ".gettokendetails", - "MediaReviewsVisibility": ".gettokendetails", - "Services": ".gettokendetails", - "ServicesTypedDict": ".gettokendetails", - "Subscription": ".gettokendetails", - "SubscriptionTypedDict": ".gettokendetails", - "UserProfile": ".gettokendetails", - "UserProfileTypedDict": ".gettokendetails", - "WatchedIndicator": ".gettokendetails", - "GetTopWatchedContentCountry": ".gettopwatchedcontent", - "GetTopWatchedContentCountryTypedDict": ".gettopwatchedcontent", - "GetTopWatchedContentGenre": ".gettopwatchedcontent", - "GetTopWatchedContentGenreTypedDict": ".gettopwatchedcontent", - "GetTopWatchedContentGuids": ".gettopwatchedcontent", - "GetTopWatchedContentGuidsTypedDict": ".gettopwatchedcontent", - "GetTopWatchedContentMediaContainer": ".gettopwatchedcontent", - "GetTopWatchedContentMediaContainerTypedDict": ".gettopwatchedcontent", - "GetTopWatchedContentMetadata": ".gettopwatchedcontent", - "GetTopWatchedContentMetadataTypedDict": ".gettopwatchedcontent", - "GetTopWatchedContentQueryParamIncludeGuids": ".gettopwatchedcontent", - "GetTopWatchedContentQueryParamType": ".gettopwatchedcontent", - "GetTopWatchedContentRequest": ".gettopwatchedcontent", - "GetTopWatchedContentRequestTypedDict": ".gettopwatchedcontent", - "GetTopWatchedContentResponse": ".gettopwatchedcontent", - "GetTopWatchedContentResponseBody": ".gettopwatchedcontent", - "GetTopWatchedContentResponseBodyTypedDict": ".gettopwatchedcontent", - "GetTopWatchedContentResponseTypedDict": ".gettopwatchedcontent", - "GetTopWatchedContentRole": ".gettopwatchedcontent", - "GetTopWatchedContentRoleTypedDict": ".gettopwatchedcontent", - "GetTopWatchedContentUser": ".gettopwatchedcontent", - "GetTopWatchedContentUserTypedDict": ".gettopwatchedcontent", - "GetTranscodeSessionsMediaContainer": ".gettranscodesessions", - "GetTranscodeSessionsMediaContainerTypedDict": ".gettranscodesessions", - "GetTranscodeSessionsResponse": ".gettranscodesessions", - "GetTranscodeSessionsResponseBody": ".gettranscodesessions", - "GetTranscodeSessionsResponseBodyTypedDict": ".gettranscodesessions", - "GetTranscodeSessionsResponseTypedDict": ".gettranscodesessions", - "TranscodeSession": ".gettranscodesessions", - "TranscodeSessionTypedDict": ".gettranscodesessions", - "GetTransientTokenQueryParamType": ".gettransienttoken", + "GetStreamGlobals": ".getstream", + "GetStreamGlobalsTypedDict": ".getstream", + "GetStreamRequest": ".getstream", + "GetStreamRequestTypedDict": ".getstream", + "GetStreamResponse": ".getstream", + "GetStreamResponseTypedDict": ".getstream", + "GetStreamLevelsGlobals": ".getstreamlevels", + "GetStreamLevelsGlobalsTypedDict": ".getstreamlevels", + "GetStreamLevelsLevel": ".getstreamlevels", + "GetStreamLevelsLevelTypedDict": ".getstreamlevels", + "GetStreamLevelsMediaContainer": ".getstreamlevels", + "GetStreamLevelsMediaContainerTypedDict": ".getstreamlevels", + "GetStreamLevelsRequest": ".getstreamlevels", + "GetStreamLevelsRequestTypedDict": ".getstreamlevels", + "GetStreamLevelsResponse": ".getstreamlevels", + "GetStreamLevelsResponseBody": ".getstreamlevels", + "GetStreamLevelsResponseBodyTypedDict": ".getstreamlevels", + "GetStreamLevelsResponseTypedDict": ".getstreamlevels", + "GetStreamLoudnessGlobals": ".getstreamloudness", + "GetStreamLoudnessGlobalsTypedDict": ".getstreamloudness", + "GetStreamLoudnessRequest": ".getstreamloudness", + "GetStreamLoudnessRequestTypedDict": ".getstreamloudness", + "GetStreamLoudnessResponse": ".getstreamloudness", + "GetStreamLoudnessResponseTypedDict": ".getstreamloudness", + "GetSubscriptionGlobals": ".getsubscription", + "GetSubscriptionGlobalsTypedDict": ".getsubscription", + "GetSubscriptionRequest": ".getsubscription", + "GetSubscriptionRequestTypedDict": ".getsubscription", + "GetSubscriptionResponse": ".getsubscription", + "GetSubscriptionResponseTypedDict": ".getsubscription", + "Directory": ".gettags", + "DirectoryTypedDict": ".gettags", + "GetTagsGlobals": ".gettags", + "GetTagsGlobalsTypedDict": ".gettags", + "GetTagsMediaContainer": ".gettags", + "GetTagsMediaContainerTypedDict": ".gettags", + "GetTagsRequest": ".gettags", + "GetTagsRequestTypedDict": ".gettags", + "GetTagsResponse": ".gettags", + "GetTagsResponseBody": ".gettags", + "GetTagsResponseBodyTypedDict": ".gettags", + "GetTagsResponseTypedDict": ".gettags", + "ButlerTask": ".gettasks", + "ButlerTaskTypedDict": ".gettasks", + "ButlerTasks": ".gettasks", + "ButlerTasksTypedDict": ".gettasks", + "GetTasksResponse": ".gettasks", + "GetTasksResponseBody": ".gettasks", + "GetTasksResponseBodyTypedDict": ".gettasks", + "GetTasksResponseTypedDict": ".gettasks", + "GetTemplateGlobals": ".gettemplate", + "GetTemplateGlobalsTypedDict": ".gettemplate", + "GetTemplateMediaContainer": ".gettemplate", + "GetTemplateMediaContainerTypedDict": ".gettemplate", + "GetTemplateRequest": ".gettemplate", + "GetTemplateRequestTypedDict": ".gettemplate", + "GetTemplateResponse": ".gettemplate", + "GetTemplateResponseBody": ".gettemplate", + "GetTemplateResponseBodyTypedDict": ".gettemplate", + "GetTemplateResponseTypedDict": ".gettemplate", + "MediaSubscription": ".gettemplate", + "MediaSubscriptionTypedDict": ".gettemplate", + "SubscriptionTemplate": ".gettemplate", + "SubscriptionTemplateTypedDict": ".gettemplate", + "GetThumbGlobals": ".getthumb", + "GetThumbGlobalsTypedDict": ".getthumb", + "GetThumbRequest": ".getthumb", + "GetThumbRequestTypedDict": ".getthumb", + "GetThumbResponse": ".getthumb", + "GetThumbResponseTypedDict": ".getthumb", + "GetTransientTokenGlobals": ".gettransienttoken", + "GetTransientTokenGlobalsTypedDict": ".gettransienttoken", + "GetTransientTokenMediaContainer": ".gettransienttoken", + "GetTransientTokenMediaContainerTypedDict": ".gettransienttoken", "GetTransientTokenRequest": ".gettransienttoken", "GetTransientTokenRequestTypedDict": ".gettransienttoken", "GetTransientTokenResponse": ".gettransienttoken", + "GetTransientTokenResponseBody": ".gettransienttoken", + "GetTransientTokenResponseBodyTypedDict": ".gettransienttoken", "GetTransientTokenResponseTypedDict": ".gettransienttoken", + "QueryParamType": ".gettransienttoken", "Scope": ".gettransienttoken", - "GetUpdateStatusMediaContainer": ".getupdatestatus", - "GetUpdateStatusMediaContainerTypedDict": ".getupdatestatus", - "GetUpdateStatusResponse": ".getupdatestatus", - "GetUpdateStatusResponseBody": ".getupdatestatus", - "GetUpdateStatusResponseBodyTypedDict": ".getupdatestatus", - "GetUpdateStatusResponseTypedDict": ".getupdatestatus", - "Release": ".getupdatestatus", - "ReleaseTypedDict": ".getupdatestatus", - "Friend": ".getuserfriends", - "FriendTypedDict": ".getuserfriends", - "GET_USER_FRIENDS_SERVERS": ".getuserfriends", - "GetUserFriendsResponse": ".getuserfriends", - "GetUserFriendsResponseTypedDict": ".getuserfriends", - "SharedServers": ".getuserfriends", - "SharedServersTypedDict": ".getuserfriends", - "SharedSources": ".getuserfriends", - "SharedSourcesTypedDict": ".getuserfriends", - "Status": ".getuserfriends", - "Level": ".logline", - "LogLineRequest": ".logline", - "LogLineRequestTypedDict": ".logline", - "LogLineResponse": ".logline", - "LogLineResponseTypedDict": ".logline", - "LogMultiLineResponse": ".logmultiline", - "LogMultiLineResponseTypedDict": ".logmultiline", + "GetUpdatesStatusMediaContainer": ".getupdatesstatus", + "GetUpdatesStatusMediaContainerTypedDict": ".getupdatesstatus", + "GetUpdatesStatusResponse": ".getupdatesstatus", + "GetUpdatesStatusResponseBody": ".getupdatesstatus", + "GetUpdatesStatusResponseBodyTypedDict": ".getupdatesstatus", + "GetUpdatesStatusResponseTypedDict": ".getupdatesstatus", + "GetUpdatesStatusState": ".getupdatesstatus", + "Release": ".getupdatesstatus", + "ReleaseTypedDict": ".getupdatesstatus", + "IngestTransientItemGlobals": ".ingesttransientitem", + "IngestTransientItemGlobalsTypedDict": ".ingesttransientitem", + "IngestTransientItemRequest": ".ingesttransientitem", + "IngestTransientItemRequestTypedDict": ".ingesttransientitem", + "IngestTransientItemResponse": ".ingesttransientitem", + "IngestTransientItemResponseTypedDict": ".ingesttransientitem", + "Activity": ".listactivities", + "ActivityTypedDict": ".listactivities", + "ListActivitiesMediaContainer": ".listactivities", + "ListActivitiesMediaContainerTypedDict": ".listactivities", + "ListActivitiesResponse": ".listactivities", + "ListActivitiesResponseBody": ".listactivities", + "ListActivitiesResponseBodyTypedDict": ".listactivities", + "ListActivitiesResponseTypedDict": ".listactivities", + "ListContentGlobals": ".listcontent", + "ListContentGlobalsTypedDict": ".listcontent", + "ListContentRequest": ".listcontent", + "ListContentRequestTypedDict": ".listcontent", + "ListContentResponse": ".listcontent", + "ListContentResponseTypedDict": ".listcontent", + "ListDevicesResponse": ".listdevices", + "ListDevicesResponseTypedDict": ".listdevices", + "DecisionResult": ".listdownloadqueueitems", + "DecisionResultTypedDict": ".listdownloadqueueitems", + "DownloadQueueItem": ".listdownloadqueueitems", + "DownloadQueueItemTypedDict": ".listdownloadqueueitems", + "ListDownloadQueueItemsGlobals": ".listdownloadqueueitems", + "ListDownloadQueueItemsGlobalsTypedDict": ".listdownloadqueueitems", + "ListDownloadQueueItemsMediaContainer": ".listdownloadqueueitems", + "ListDownloadQueueItemsMediaContainerTypedDict": ".listdownloadqueueitems", + "ListDownloadQueueItemsRequest": ".listdownloadqueueitems", + "ListDownloadQueueItemsRequestTypedDict": ".listdownloadqueueitems", + "ListDownloadQueueItemsResponse": ".listdownloadqueueitems", + "ListDownloadQueueItemsResponseBody": ".listdownloadqueueitems", + "ListDownloadQueueItemsResponseBodyTypedDict": ".listdownloadqueueitems", + "ListDownloadQueueItemsResponseTypedDict": ".listdownloadqueueitems", + "ListDownloadQueueItemsStatus": ".listdownloadqueueitems", + "Transcode": ".listdownloadqueueitems", + "TranscodeTypedDict": ".listdownloadqueueitems", + "Dvr": ".listdvrs", + "DvrTypedDict": ".listdvrs", + "ListDVRsDVRsMediaContainer": ".listdvrs", + "ListDVRsDVRsMediaContainerTypedDict": ".listdvrs", + "ListDVRsMediaContainer": ".listdvrs", + "ListDVRsMediaContainerTypedDict": ".listdvrs", + "ListDVRsResponse": ".listdvrs", + "ListDVRsResponseBody": ".listdvrs", + "ListDVRsResponseBodyTypedDict": ".listdvrs", + "ListDVRsResponseTypedDict": ".listdvrs", + "HomeVisibility": ".listhubs", + "Hub": ".listhubs", + "HubTypedDict": ".listhubs", + "ListHubsGlobals": ".listhubs", + "ListHubsGlobalsTypedDict": ".listhubs", + "ListHubsMediaContainer": ".listhubs", + "ListHubsMediaContainerTypedDict": ".listhubs", + "ListHubsRequest": ".listhubs", + "ListHubsRequestTypedDict": ".listhubs", + "ListHubsResponse": ".listhubs", + "ListHubsResponseBody": ".listhubs", + "ListHubsResponseBodyTypedDict": ".listhubs", + "ListHubsResponseTypedDict": ".listhubs", + "RecommendationsVisibility": ".listhubs", + "ListLineupsGlobals": ".listlineups", + "ListLineupsGlobalsTypedDict": ".listlineups", + "ListLineupsRequest": ".listlineups", + "ListLineupsRequestTypedDict": ".listlineups", + "ListLineupsResponse": ".listlineups", + "ListLineupsResponseTypedDict": ".listlineups", + "ListMatchesGlobals": ".listmatches", + "ListMatchesGlobalsTypedDict": ".listmatches", + "ListMatchesRequest": ".listmatches", + "ListMatchesRequestTypedDict": ".listmatches", + "ListMatchesResponse": ".listmatches", + "ListMatchesResponseTypedDict": ".listmatches", + "ListMomentsGlobals": ".listmoments", + "ListMomentsGlobalsTypedDict": ".listmoments", + "ListMomentsRequest": ".listmoments", + "ListMomentsRequestTypedDict": ".listmoments", + "ListMomentsResponse": ".listmoments", + "ListMomentsResponseTypedDict": ".listmoments", + "ListPersonMediaGlobals": ".listpersonmedia", + "ListPersonMediaGlobalsTypedDict": ".listpersonmedia", + "ListPersonMediaRequest": ".listpersonmedia", + "ListPersonMediaRequestTypedDict": ".listpersonmedia", + "ListPersonMediaResponse": ".listpersonmedia", + "ListPersonMediaResponseTypedDict": ".listpersonmedia", + "ListPlaybackHistoryGlobals": ".listplaybackhistory", + "ListPlaybackHistoryGlobalsTypedDict": ".listplaybackhistory", + "ListPlaybackHistoryMediaContainer": ".listplaybackhistory", + "ListPlaybackHistoryMediaContainerTypedDict": ".listplaybackhistory", + "ListPlaybackHistoryMetadata": ".listplaybackhistory", + "ListPlaybackHistoryMetadataTypedDict": ".listplaybackhistory", + "ListPlaybackHistoryRequest": ".listplaybackhistory", + "ListPlaybackHistoryRequestTypedDict": ".listplaybackhistory", + "ListPlaybackHistoryResponse": ".listplaybackhistory", + "ListPlaybackHistoryResponseBody": ".listplaybackhistory", + "ListPlaybackHistoryResponseBodyTypedDict": ".listplaybackhistory", + "ListPlaybackHistoryResponseTypedDict": ".listplaybackhistory", + "ListPlaylistsGlobals": ".listplaylists", + "ListPlaylistsGlobalsTypedDict": ".listplaylists", + "ListPlaylistsRequest": ".listplaylists", + "ListPlaylistsRequestTypedDict": ".listplaylists", + "ListPlaylistsResponse": ".listplaylists", + "ListPlaylistsResponseTypedDict": ".listplaylists", + "PlaylistType": ".listplaylists", + "Feature": ".listproviders", + "FeatureTypedDict": ".listproviders", + "ListProvidersMediaContainer": ".listproviders", + "ListProvidersMediaContainerTypedDict": ".listproviders", + "ListProvidersResponse": ".listproviders", + "ListProvidersResponseBody": ".listproviders", + "ListProvidersResponseBodyTypedDict": ".listproviders", + "ListProvidersResponseTypedDict": ".listproviders", + "ListSessionsMediaContainer": ".listsessions", + "ListSessionsMediaContainerTypedDict": ".listsessions", + "ListSessionsResponse": ".listsessions", + "ListSessionsResponseBody": ".listsessions", + "ListSessionsResponseBodyTypedDict": ".listsessions", + "ListSessionsResponseTypedDict": ".listsessions", + "Metadata": ".listsessions", + "MetadataTypedDict": ".listsessions", + "ListSimilarGlobals": ".listsimilar", + "ListSimilarGlobalsTypedDict": ".listsimilar", + "ListSimilarRequest": ".listsimilar", + "ListSimilarRequestTypedDict": ".listsimilar", + "ListSimilarResponse": ".listsimilar", + "ListSimilarResponseTypedDict": ".listsimilar", + "ListSonicallySimilarGlobals": ".listsonicallysimilar", + "ListSonicallySimilarGlobalsTypedDict": ".listsonicallysimilar", + "ListSonicallySimilarRequest": ".listsonicallysimilar", + "ListSonicallySimilarRequestTypedDict": ".listsonicallysimilar", + "ListSonicallySimilarResponse": ".listsonicallysimilar", + "ListSonicallySimilarResponseTypedDict": ".listsonicallysimilar", + "Account": ".listtopusers", + "AccountTypedDict": ".listtopusers", + "ListTopUsersGlobals": ".listtopusers", + "ListTopUsersGlobalsTypedDict": ".listtopusers", + "ListTopUsersMediaContainer": ".listtopusers", + "ListTopUsersMediaContainerTypedDict": ".listtopusers", + "ListTopUsersRequest": ".listtopusers", + "ListTopUsersRequestTypedDict": ".listtopusers", + "ListTopUsersResponse": ".listtopusers", + "ListTopUsersResponseBody": ".listtopusers", + "ListTopUsersResponseBodyTypedDict": ".listtopusers", + "ListTopUsersResponseTypedDict": ".listtopusers", + "Location": ".makedecision", + "MakeDecisionGlobals": ".makedecision", + "MakeDecisionGlobalsTypedDict": ".makedecision", + "MakeDecisionRequest": ".makedecision", + "MakeDecisionRequestTypedDict": ".makedecision", + "MakeDecisionResponse": ".makedecision", + "MakeDecisionResponseTypedDict": ".makedecision", + "Protocol": ".makedecision", + "Subtitles": ".makedecision", + "MarkPlayedGlobals": ".markplayed", + "MarkPlayedGlobalsTypedDict": ".markplayed", "MarkPlayedRequest": ".markplayed", "MarkPlayedRequestTypedDict": ".markplayed", "MarkPlayedResponse": ".markplayed", "MarkPlayedResponseTypedDict": ".markplayed", - "MarkUnplayedRequest": ".markunplayed", - "MarkUnplayedRequestTypedDict": ".markunplayed", - "MarkUnplayedResponse": ".markunplayed", - "MarkUnplayedResponseTypedDict": ".markunplayed", - "PerformSearchRequest": ".performsearch", - "PerformSearchRequestTypedDict": ".performsearch", - "PerformSearchResponse": ".performsearch", - "PerformSearchResponseTypedDict": ".performsearch", - "PerformVoiceSearchRequest": ".performvoicesearch", - "PerformVoiceSearchRequestTypedDict": ".performvoicesearch", - "PerformVoiceSearchResponse": ".performvoicesearch", - "PerformVoiceSearchResponseTypedDict": ".performvoicesearch", - "PostMediaArtsRequest": ".post_media_arts", - "PostMediaArtsRequestTypedDict": ".post_media_arts", - "PostMediaArtsResponse": ".post_media_arts", - "PostMediaArtsResponseTypedDict": ".post_media_arts", - "PostMediaPosterRequest": ".post_media_poster", - "PostMediaPosterRequestTypedDict": ".post_media_poster", - "PostMediaPosterResponse": ".post_media_poster", - "PostMediaPosterResponseTypedDict": ".post_media_poster", - "Billing": ".post_users_sign_in_data", - "BillingTypedDict": ".post_users_sign_in_data", - "InternalPaymentMethod": ".post_users_sign_in_data", - "InternalPaymentMethodTypedDict": ".post_users_sign_in_data", - "POST_USERS_SIGN_IN_DATA_SERVERS": ".post_users_sign_in_data", - "PastSubscription": ".post_users_sign_in_data", - "PastSubscriptionTypedDict": ".post_users_sign_in_data", - "PostUsersSignInDataAuthenticationResponseStatus": ".post_users_sign_in_data", - "PostUsersSignInDataAuthenticationStatus": ".post_users_sign_in_data", - "PostUsersSignInDataAuthenticationSubscription": ".post_users_sign_in_data", - "PostUsersSignInDataAuthenticationSubscriptionTypedDict": ".post_users_sign_in_data", - "PostUsersSignInDataAutoSelectSubtitle": ".post_users_sign_in_data", - "PostUsersSignInDataDefaultSubtitleAccessibility": ".post_users_sign_in_data", - "PostUsersSignInDataDefaultSubtitleForced": ".post_users_sign_in_data", - "PostUsersSignInDataMailingListStatus": ".post_users_sign_in_data", - "PostUsersSignInDataMediaReviewsVisibility": ".post_users_sign_in_data", - "PostUsersSignInDataRequest": ".post_users_sign_in_data", - "PostUsersSignInDataRequestBody": ".post_users_sign_in_data", - "PostUsersSignInDataRequestBodyTypedDict": ".post_users_sign_in_data", - "PostUsersSignInDataRequestTypedDict": ".post_users_sign_in_data", - "PostUsersSignInDataResponse": ".post_users_sign_in_data", - "PostUsersSignInDataResponseTypedDict": ".post_users_sign_in_data", - "PostUsersSignInDataServices": ".post_users_sign_in_data", - "PostUsersSignInDataServicesTypedDict": ".post_users_sign_in_data", - "PostUsersSignInDataState": ".post_users_sign_in_data", - "PostUsersSignInDataStatus": ".post_users_sign_in_data", - "PostUsersSignInDataSubscription": ".post_users_sign_in_data", - "PostUsersSignInDataSubscriptionTypedDict": ".post_users_sign_in_data", - "PostUsersSignInDataUserPlexAccount": ".post_users_sign_in_data", - "PostUsersSignInDataUserPlexAccountTypedDict": ".post_users_sign_in_data", - "PostUsersSignInDataUserProfile": ".post_users_sign_in_data", - "PostUsersSignInDataUserProfileTypedDict": ".post_users_sign_in_data", - "PostUsersSignInDataWatchedIndicator": ".post_users_sign_in_data", - "Trials": ".post_users_sign_in_data", - "TrialsTypedDict": ".post_users_sign_in_data", - "StartAllTasksResponse": ".startalltasks", - "StartAllTasksResponseTypedDict": ".startalltasks", + "MatchItemGlobals": ".matchitem", + "MatchItemGlobalsTypedDict": ".matchitem", + "MatchItemRequest": ".matchitem", + "MatchItemRequestTypedDict": ".matchitem", + "MatchItemResponse": ".matchitem", + "MatchItemResponseTypedDict": ".matchitem", + "MergeItemsGlobals": ".mergeitems", + "MergeItemsGlobalsTypedDict": ".mergeitems", + "MergeItemsRequest": ".mergeitems", + "MergeItemsRequestTypedDict": ".mergeitems", + "MergeItemsResponse": ".mergeitems", + "MergeItemsResponseTypedDict": ".mergeitems", + "ModifyDeviceGlobals": ".modifydevice", + "ModifyDeviceGlobalsTypedDict": ".modifydevice", + "ModifyDeviceMediaContainer": ".modifydevice", + "ModifyDeviceMediaContainerTypedDict": ".modifydevice", + "ModifyDeviceRequest": ".modifydevice", + "ModifyDeviceRequestTypedDict": ".modifydevice", + "ModifyDeviceResponse": ".modifydevice", + "ModifyDeviceResponseBody": ".modifydevice", + "ModifyDeviceResponseBodyTypedDict": ".modifydevice", + "ModifyDeviceResponseTypedDict": ".modifydevice", + "Item": ".modifyplaylistgenerator", + "ItemTypedDict": ".modifyplaylistgenerator", + "ModifyPlaylistGeneratorGlobals": ".modifyplaylistgenerator", + "ModifyPlaylistGeneratorGlobalsTypedDict": ".modifyplaylistgenerator", + "ModifyPlaylistGeneratorQueryParamLocation": ".modifyplaylistgenerator", + "ModifyPlaylistGeneratorQueryParamLocationTypedDict": ".modifyplaylistgenerator", + "ModifyPlaylistGeneratorRequest": ".modifyplaylistgenerator", + "ModifyPlaylistGeneratorRequestTypedDict": ".modifyplaylistgenerator", + "ModifyPlaylistGeneratorResponse": ".modifyplaylistgenerator", + "ModifyPlaylistGeneratorResponseTypedDict": ".modifyplaylistgenerator", + "Policy": ".modifyplaylistgenerator", + "PolicyTypedDict": ".modifyplaylistgenerator", + "QueryParamScope": ".modifyplaylistgenerator", + "MoveCollectionItemGlobals": ".movecollectionitem", + "MoveCollectionItemGlobalsTypedDict": ".movecollectionitem", + "MoveCollectionItemRequest": ".movecollectionitem", + "MoveCollectionItemRequestTypedDict": ".movecollectionitem", + "MoveCollectionItemResponse": ".movecollectionitem", + "MoveCollectionItemResponseTypedDict": ".movecollectionitem", + "MoveHubGlobals": ".movehub", + "MoveHubGlobalsTypedDict": ".movehub", + "MoveHubRequest": ".movehub", + "MoveHubRequestTypedDict": ".movehub", + "MoveHubResponse": ".movehub", + "MoveHubResponseTypedDict": ".movehub", + "MovePlaylistItemGlobals": ".moveplaylistitem", + "MovePlaylistItemGlobalsTypedDict": ".moveplaylistitem", + "MovePlaylistItemRequest": ".moveplaylistitem", + "MovePlaylistItemRequestTypedDict": ".moveplaylistitem", + "MovePlaylistItemResponse": ".moveplaylistitem", + "MovePlaylistItemResponseTypedDict": ".moveplaylistitem", + "MovePlayQueueItemGlobals": ".moveplayqueueitem", + "MovePlayQueueItemGlobalsTypedDict": ".moveplayqueueitem", + "MovePlayQueueItemRequest": ".moveplayqueueitem", + "MovePlayQueueItemRequestTypedDict": ".moveplayqueueitem", + "MovePlayQueueItemResponse": ".moveplayqueueitem", + "MovePlayQueueItemResponseTypedDict": ".moveplayqueueitem", + "OptimizeDatabaseGlobals": ".optimizedatabase", + "OptimizeDatabaseGlobalsTypedDict": ".optimizedatabase", + "OptimizeDatabaseRequest": ".optimizedatabase", + "OptimizeDatabaseRequestTypedDict": ".optimizedatabase", + "OptimizeDatabaseResponse": ".optimizedatabase", + "OptimizeDatabaseResponseTypedDict": ".optimizedatabase", + "ProcessSubscriptionsResponse": ".processsubscriptions", + "ProcessSubscriptionsResponseTypedDict": ".processsubscriptions", + "RefreshItemsMetadataGlobals": ".refreshitemsmetadata", + "RefreshItemsMetadataGlobalsTypedDict": ".refreshitemsmetadata", + "RefreshItemsMetadataRequest": ".refreshitemsmetadata", + "RefreshItemsMetadataRequestTypedDict": ".refreshitemsmetadata", + "RefreshItemsMetadataResponse": ".refreshitemsmetadata", + "RefreshItemsMetadataResponseTypedDict": ".refreshitemsmetadata", + "Action": ".refreshplaylist", + "RefreshPlaylistGlobals": ".refreshplaylist", + "RefreshPlaylistGlobalsTypedDict": ".refreshplaylist", + "RefreshPlaylistRequest": ".refreshplaylist", + "RefreshPlaylistRequestTypedDict": ".refreshplaylist", + "RefreshPlaylistResponse": ".refreshplaylist", + "RefreshPlaylistResponseTypedDict": ".refreshplaylist", + "RefreshProvidersResponse": ".refreshproviders", + "RefreshProvidersResponseTypedDict": ".refreshproviders", + "RefreshSectionGlobals": ".refreshsection", + "RefreshSectionGlobalsTypedDict": ".refreshsection", + "RefreshSectionRequest": ".refreshsection", + "RefreshSectionRequestTypedDict": ".refreshsection", + "RefreshSectionResponse": ".refreshsection", + "RefreshSectionResponseTypedDict": ".refreshsection", + "RefreshSectionsMetadataGlobals": ".refreshsectionsmetadata", + "RefreshSectionsMetadataGlobalsTypedDict": ".refreshsectionsmetadata", + "RefreshSectionsMetadataRequest": ".refreshsectionsmetadata", + "RefreshSectionsMetadataRequestTypedDict": ".refreshsectionsmetadata", + "RefreshSectionsMetadataResponse": ".refreshsectionsmetadata", + "RefreshSectionsMetadataResponseTypedDict": ".refreshsectionsmetadata", + "ReloadGuideGlobals": ".reloadguide", + "ReloadGuideGlobalsTypedDict": ".reloadguide", + "ReloadGuideRequest": ".reloadguide", + "ReloadGuideRequestTypedDict": ".reloadguide", + "ReloadGuideResponse": ".reloadguide", + "ReloadGuideResponseTypedDict": ".reloadguide", + "RemoveDeviceGlobals": ".removedevice", + "RemoveDeviceGlobalsTypedDict": ".removedevice", + "RemoveDeviceMediaContainer": ".removedevice", + "RemoveDeviceMediaContainerTypedDict": ".removedevice", + "RemoveDeviceRequest": ".removedevice", + "RemoveDeviceRequestTypedDict": ".removedevice", + "RemoveDeviceResponse": ".removedevice", + "RemoveDeviceResponseBody": ".removedevice", + "RemoveDeviceResponseBodyTypedDict": ".removedevice", + "RemoveDeviceResponseTypedDict": ".removedevice", + "RemoveDeviceFromDVRDVR": ".removedevicefromdvr", + "RemoveDeviceFromDVRDVRTypedDict": ".removedevicefromdvr", + "RemoveDeviceFromDVRDVRsMediaContainer": ".removedevicefromdvr", + "RemoveDeviceFromDVRDVRsMediaContainerTypedDict": ".removedevicefromdvr", + "RemoveDeviceFromDVRGlobals": ".removedevicefromdvr", + "RemoveDeviceFromDVRGlobalsTypedDict": ".removedevicefromdvr", + "RemoveDeviceFromDVRMediaContainer": ".removedevicefromdvr", + "RemoveDeviceFromDVRMediaContainerTypedDict": ".removedevicefromdvr", + "RemoveDeviceFromDVRRequest": ".removedevicefromdvr", + "RemoveDeviceFromDVRRequestTypedDict": ".removedevicefromdvr", + "RemoveDeviceFromDVRResponse": ".removedevicefromdvr", + "RemoveDeviceFromDVRResponseBody": ".removedevicefromdvr", + "RemoveDeviceFromDVRResponseBodyTypedDict": ".removedevicefromdvr", + "RemoveDeviceFromDVRResponseTypedDict": ".removedevicefromdvr", + "RemoveDownloadQueueItemsGlobals": ".removedownloadqueueitems", + "RemoveDownloadQueueItemsGlobalsTypedDict": ".removedownloadqueueitems", + "RemoveDownloadQueueItemsRequest": ".removedownloadqueueitems", + "RemoveDownloadQueueItemsRequestTypedDict": ".removedownloadqueueitems", + "RemoveDownloadQueueItemsResponse": ".removedownloadqueueitems", + "RemoveDownloadQueueItemsResponseTypedDict": ".removedownloadqueueitems", + "ReorderSubscriptionGlobals": ".reordersubscription", + "ReorderSubscriptionGlobalsTypedDict": ".reordersubscription", + "ReorderSubscriptionRequest": ".reordersubscription", + "ReorderSubscriptionRequestTypedDict": ".reordersubscription", + "ReorderSubscriptionResponse": ".reordersubscription", + "ReorderSubscriptionResponseTypedDict": ".reordersubscription", + "Bandwidth": ".report", + "BandwidthTypedDict": ".report", + "Bandwidths": ".report", + "BandwidthsTypedDict": ".report", + "MediaContainer": ".report", + "MediaContainerTypedDict": ".report", + "ReportGlobals": ".report", + "ReportGlobalsTypedDict": ".report", + "ReportRequest": ".report", + "ReportRequestTypedDict": ".report", + "ReportResponse": ".report", + "ReportResponseBody": ".report", + "ReportResponseBodyTypedDict": ".report", + "ReportResponseTypedDict": ".report", + "State": ".report", + "ResetPlayQueueGlobals": ".resetplayqueue", + "ResetPlayQueueGlobalsTypedDict": ".resetplayqueue", + "ResetPlayQueueRequest": ".resetplayqueue", + "ResetPlayQueueRequestTypedDict": ".resetplayqueue", + "ResetPlayQueueResponse": ".resetplayqueue", + "ResetPlayQueueResponseTypedDict": ".resetplayqueue", + "ResetSectionDefaultsGlobals": ".resetsectiondefaults", + "ResetSectionDefaultsGlobalsTypedDict": ".resetsectiondefaults", + "ResetSectionDefaultsRequest": ".resetsectiondefaults", + "ResetSectionDefaultsRequestTypedDict": ".resetsectiondefaults", + "ResetSectionDefaultsResponse": ".resetsectiondefaults", + "ResetSectionDefaultsResponseTypedDict": ".resetsectiondefaults", + "RestartProcessingDownloadQueueItemsGlobals": ".restartprocessingdownloadqueueitems", + "RestartProcessingDownloadQueueItemsGlobalsTypedDict": ".restartprocessingdownloadqueueitems", + "RestartProcessingDownloadQueueItemsRequest": ".restartprocessingdownloadqueueitems", + "RestartProcessingDownloadQueueItemsRequestTypedDict": ".restartprocessingdownloadqueueitems", + "RestartProcessingDownloadQueueItemsResponse": ".restartprocessingdownloadqueueitems", + "RestartProcessingDownloadQueueItemsResponseTypedDict": ".restartprocessingdownloadqueueitems", + "ScanGlobals": ".scan", + "ScanGlobalsTypedDict": ".scan", + "ScanRequest": ".scan", + "ScanRequestTypedDict": ".scan", + "ScanResponse": ".scan", + "ScanResponseTypedDict": ".scan", + "SearchHubsGlobals": ".searchhubs", + "SearchHubsGlobalsTypedDict": ".searchhubs", + "SearchHubsMediaContainer": ".searchhubs", + "SearchHubsMediaContainerTypedDict": ".searchhubs", + "SearchHubsRequest": ".searchhubs", + "SearchHubsRequestTypedDict": ".searchhubs", + "SearchHubsResponse": ".searchhubs", + "SearchHubsResponseBody": ".searchhubs", + "SearchHubsResponseBodyTypedDict": ".searchhubs", + "SearchHubsResponseTypedDict": ".searchhubs", + "ChannelMapping": ".setchannelmap", + "ChannelMappingByKey": ".setchannelmap", + "ChannelMappingByKeyTypedDict": ".setchannelmap", + "ChannelMappingTypedDict": ".setchannelmap", + "SetChannelmapGlobals": ".setchannelmap", + "SetChannelmapGlobalsTypedDict": ".setchannelmap", + "SetChannelmapRequest": ".setchannelmap", + "SetChannelmapRequestTypedDict": ".setchannelmap", + "SetChannelmapResponse": ".setchannelmap", + "SetChannelmapResponseTypedDict": ".setchannelmap", + "SetDevicePreferencesGlobals": ".setdevicepreferences", + "SetDevicePreferencesGlobalsTypedDict": ".setdevicepreferences", + "SetDevicePreferencesRequest": ".setdevicepreferences", + "SetDevicePreferencesRequestTypedDict": ".setdevicepreferences", + "SetDevicePreferencesResponse": ".setdevicepreferences", + "SetDevicePreferencesResponseTypedDict": ".setdevicepreferences", + "SetDVRPreferencesDVR": ".setdvrpreferences", + "SetDVRPreferencesDVRTypedDict": ".setdvrpreferences", + "SetDVRPreferencesDVRsMediaContainer": ".setdvrpreferences", + "SetDVRPreferencesDVRsMediaContainerTypedDict": ".setdvrpreferences", + "SetDVRPreferencesGlobals": ".setdvrpreferences", + "SetDVRPreferencesGlobalsTypedDict": ".setdvrpreferences", + "SetDVRPreferencesMediaContainer": ".setdvrpreferences", + "SetDVRPreferencesMediaContainerTypedDict": ".setdvrpreferences", + "SetDVRPreferencesRequest": ".setdvrpreferences", + "SetDVRPreferencesRequestTypedDict": ".setdvrpreferences", + "SetDVRPreferencesResponse": ".setdvrpreferences", + "SetDVRPreferencesResponseBody": ".setdvrpreferences", + "SetDVRPreferencesResponseBodyTypedDict": ".setdvrpreferences", + "SetDVRPreferencesResponseTypedDict": ".setdvrpreferences", + "Element": ".setitemartwork", + "SetItemArtworkGlobals": ".setitemartwork", + "SetItemArtworkGlobalsTypedDict": ".setitemartwork", + "SetItemArtworkRequest": ".setitemartwork", + "SetItemArtworkRequestTypedDict": ".setitemartwork", + "SetItemArtworkResponse": ".setitemartwork", + "SetItemArtworkResponseTypedDict": ".setitemartwork", + "QueryParamArgs": ".setitempreferences", + "QueryParamArgsTypedDict": ".setitempreferences", + "SetItemPreferencesGlobals": ".setitempreferences", + "SetItemPreferencesGlobalsTypedDict": ".setitempreferences", + "SetItemPreferencesRequest": ".setitempreferences", + "SetItemPreferencesRequestTypedDict": ".setitempreferences", + "SetItemPreferencesResponse": ".setitempreferences", + "SetItemPreferencesResponseTypedDict": ".setitempreferences", + "Prefs": ".setpreferences", + "PrefsTypedDict": ".setpreferences", + "SetPreferencesGlobals": ".setpreferences", + "SetPreferencesGlobalsTypedDict": ".setpreferences", + "SetPreferencesRequest": ".setpreferences", + "SetPreferencesRequestTypedDict": ".setpreferences", + "SetPreferencesResponse": ".setpreferences", + "SetPreferencesResponseTypedDict": ".setpreferences", + "SetRatingGlobals": ".setrating", + "SetRatingGlobalsTypedDict": ".setrating", + "SetRatingRequest": ".setrating", + "SetRatingRequestTypedDict": ".setrating", + "SetRatingResponse": ".setrating", + "SetRatingResponseTypedDict": ".setrating", + "SetSectionPreferencesGlobals": ".setsectionpreferences", + "SetSectionPreferencesGlobalsTypedDict": ".setsectionpreferences", + "SetSectionPreferencesQueryParamPrefs": ".setsectionpreferences", + "SetSectionPreferencesQueryParamPrefsTypedDict": ".setsectionpreferences", + "SetSectionPreferencesRequest": ".setsectionpreferences", + "SetSectionPreferencesRequestTypedDict": ".setsectionpreferences", + "SetSectionPreferencesResponse": ".setsectionpreferences", + "SetSectionPreferencesResponseTypedDict": ".setsectionpreferences", + "SetStreamOffsetGlobals": ".setstreamoffset", + "SetStreamOffsetGlobalsTypedDict": ".setstreamoffset", + "SetStreamOffsetRequest": ".setstreamoffset", + "SetStreamOffsetRequestTypedDict": ".setstreamoffset", + "SetStreamOffsetResponse": ".setstreamoffset", + "SetStreamOffsetResponseTypedDict": ".setstreamoffset", + "SetStreamSelectionGlobals": ".setstreamselection", + "SetStreamSelectionGlobalsTypedDict": ".setstreamselection", + "SetStreamSelectionRequest": ".setstreamselection", + "SetStreamSelectionRequestTypedDict": ".setstreamselection", + "SetStreamSelectionResponse": ".setstreamselection", + "SetStreamSelectionResponseTypedDict": ".setstreamselection", + "ShuffleGlobals": ".shuffle", + "ShuffleGlobalsTypedDict": ".shuffle", + "ShuffleRequest": ".shuffle", + "ShuffleRequestTypedDict": ".shuffle", + "ShuffleResponse": ".shuffle", + "ShuffleResponseTypedDict": ".shuffle", + "SplitItemGlobals": ".splititem", + "SplitItemGlobalsTypedDict": ".splititem", + "SplitItemRequest": ".splititem", + "SplitItemRequestTypedDict": ".splititem", + "SplitItemResponse": ".splititem", + "SplitItemResponseTypedDict": ".splititem", + "StartAnalysisGlobals": ".startanalysis", + "StartAnalysisGlobalsTypedDict": ".startanalysis", + "StartAnalysisRequest": ".startanalysis", + "StartAnalysisRequestTypedDict": ".startanalysis", + "StartAnalysisResponse": ".startanalysis", + "StartAnalysisResponseTypedDict": ".startanalysis", + "StartBifGenerationGlobals": ".startbifgeneration", + "StartBifGenerationGlobalsTypedDict": ".startbifgeneration", + "StartBifGenerationRequest": ".startbifgeneration", + "StartBifGenerationRequestTypedDict": ".startbifgeneration", + "StartBifGenerationResponse": ".startbifgeneration", + "StartBifGenerationResponseTypedDict": ".startbifgeneration", + "PathParamTask": ".starttask", + "StartTaskGlobals": ".starttask", + "StartTaskGlobalsTypedDict": ".starttask", "StartTaskRequest": ".starttask", "StartTaskRequestTypedDict": ".starttask", "StartTaskResponse": ".starttask", "StartTaskResponseTypedDict": ".starttask", - "TaskName": ".starttask", - "StartUniversalTranscodeRequest": ".startuniversaltranscode", - "StartUniversalTranscodeRequestTypedDict": ".startuniversaltranscode", - "StartUniversalTranscodeResponse": ".startuniversaltranscode", - "StartUniversalTranscodeResponseTypedDict": ".startuniversaltranscode", - "StopAllTasksResponse": ".stopalltasks", - "StopAllTasksResponseTypedDict": ".stopalltasks", - "PathParamTaskName": ".stoptask", + "StartTasksResponse": ".starttasks", + "StartTasksResponseTypedDict": ".starttasks", + "Extension": ".starttranscodesession", + "StartTranscodeSessionGlobals": ".starttranscodesession", + "StartTranscodeSessionGlobalsTypedDict": ".starttranscodesession", + "StartTranscodeSessionQueryParamLocation": ".starttranscodesession", + "StartTranscodeSessionQueryParamProtocol": ".starttranscodesession", + "StartTranscodeSessionQueryParamSubtitles": ".starttranscodesession", + "StartTranscodeSessionRequest": ".starttranscodesession", + "StartTranscodeSessionRequestTypedDict": ".starttranscodesession", + "StartTranscodeSessionResponse": ".starttranscodesession", + "StartTranscodeSessionResponseTypedDict": ".starttranscodesession", + "StopAllRefreshesResponse": ".stopallrefreshes", + "StopAllRefreshesResponseTypedDict": ".stopallrefreshes", + "StopDVRReloadGlobals": ".stopdvrreload", + "StopDVRReloadGlobalsTypedDict": ".stopdvrreload", + "StopDVRReloadRequest": ".stopdvrreload", + "StopDVRReloadRequestTypedDict": ".stopdvrreload", + "StopDVRReloadResponse": ".stopdvrreload", + "StopDVRReloadResponseTypedDict": ".stopdvrreload", + "StopScanGlobals": ".stopscan", + "StopScanGlobalsTypedDict": ".stopscan", + "StopScanRequest": ".stopscan", + "StopScanRequestTypedDict": ".stopscan", + "StopScanResponse": ".stopscan", + "StopScanResponseTypedDict": ".stopscan", + "StopTaskGlobals": ".stoptask", + "StopTaskGlobalsTypedDict": ".stoptask", "StopTaskRequest": ".stoptask", "StopTaskRequestTypedDict": ".stoptask", "StopTaskResponse": ".stoptask", "StopTaskResponseTypedDict": ".stoptask", - "StopTranscodeSessionRequest": ".stoptranscodesession", - "StopTranscodeSessionRequestTypedDict": ".stoptranscodesession", - "StopTranscodeSessionResponse": ".stoptranscodesession", - "StopTranscodeSessionResponseTypedDict": ".stoptranscodesession", + "Task": ".stoptask", + "StopTasksResponse": ".stoptasks", + "StopTasksResponseTypedDict": ".stoptasks", + "TerminateSessionGlobals": ".terminatesession", + "TerminateSessionGlobalsTypedDict": ".terminatesession", + "TerminateSessionRequest": ".terminatesession", + "TerminateSessionRequestTypedDict": ".terminatesession", + "TerminateSessionResponse": ".terminatesession", + "TerminateSessionResponseTypedDict": ".terminatesession", + "ChromaSubsampling": ".transcodeimage", + "Format": ".transcodeimage", + "TranscodeImageGlobals": ".transcodeimage", + "TranscodeImageGlobalsTypedDict": ".transcodeimage", + "TranscodeImageRequest": ".transcodeimage", + "TranscodeImageRequestTypedDict": ".transcodeimage", + "TranscodeImageResponse": ".transcodeimage", + "TranscodeImageResponseTypedDict": ".transcodeimage", + "QueryParamLocation": ".transcodesubtitles", + "QueryParamProtocol": ".transcodesubtitles", + "QueryParamSubtitles": ".transcodesubtitles", + "TranscodeSubtitlesGlobals": ".transcodesubtitles", + "TranscodeSubtitlesGlobalsTypedDict": ".transcodesubtitles", + "TranscodeSubtitlesRequest": ".transcodesubtitles", + "TranscodeSubtitlesRequestTypedDict": ".transcodesubtitles", + "TranscodeSubtitlesResponse": ".transcodesubtitles", + "TranscodeSubtitlesResponseTypedDict": ".transcodesubtitles", + "TriggerFallbackGlobals": ".triggerfallback", + "TriggerFallbackGlobalsTypedDict": ".triggerfallback", + "TriggerFallbackRequest": ".triggerfallback", + "TriggerFallbackRequestTypedDict": ".triggerfallback", + "TriggerFallbackResponse": ".triggerfallback", + "TriggerFallbackResponseTypedDict": ".triggerfallback", + "TuneChannelGlobals": ".tunechannel", + "TuneChannelGlobalsTypedDict": ".tunechannel", + "TuneChannelRequest": ".tunechannel", + "TuneChannelRequestTypedDict": ".tunechannel", + "TuneChannelResponse": ".tunechannel", + "TuneChannelResponseTypedDict": ".tunechannel", + "UnmatchGlobals": ".unmatch", + "UnmatchGlobalsTypedDict": ".unmatch", + "UnmatchRequest": ".unmatch", + "UnmatchRequestTypedDict": ".unmatch", + "UnmatchResponse": ".unmatch", + "UnmatchResponseTypedDict": ".unmatch", + "UnscrobbleGlobals": ".unscrobble", + "UnscrobbleGlobalsTypedDict": ".unscrobble", + "UnscrobbleRequest": ".unscrobble", + "UnscrobbleRequestTypedDict": ".unscrobble", + "UnscrobbleResponse": ".unscrobble", + "UnscrobbleResponseTypedDict": ".unscrobble", + "UnshuffleGlobals": ".unshuffle", + "UnshuffleGlobalsTypedDict": ".unshuffle", + "UnshuffleRequest": ".unshuffle", + "UnshuffleRequestTypedDict": ".unshuffle", + "UnshuffleResponse": ".unshuffle", + "UnshuffleResponseTypedDict": ".unshuffle", + "UpdateHubVisibilityGlobals": ".updatehubvisibility", + "UpdateHubVisibilityGlobalsTypedDict": ".updatehubvisibility", + "UpdateHubVisibilityRequest": ".updatehubvisibility", + "UpdateHubVisibilityRequestTypedDict": ".updatehubvisibility", + "UpdateHubVisibilityResponse": ".updatehubvisibility", + "UpdateHubVisibilityResponseTypedDict": ".updatehubvisibility", + "PathParamElement": ".updateitemartwork", + "UpdateItemArtworkGlobals": ".updateitemartwork", + "UpdateItemArtworkGlobalsTypedDict": ".updateitemartwork", + "UpdateItemArtworkRequest": ".updateitemartwork", + "UpdateItemArtworkRequestTypedDict": ".updateitemartwork", + "UpdateItemArtworkResponse": ".updateitemartwork", + "UpdateItemArtworkResponseTypedDict": ".updateitemartwork", + "UpdateItemsGlobals": ".updateitems", + "UpdateItemsGlobalsTypedDict": ".updateitems", + "UpdateItemsRequest": ".updateitems", + "UpdateItemsRequestTypedDict": ".updateitems", + "UpdateItemsResponse": ".updateitems", + "UpdateItemsResponseTypedDict": ".updateitems", + "UpdatePlaylistGlobals": ".updateplaylist", + "UpdatePlaylistGlobalsTypedDict": ".updateplaylist", "UpdatePlaylistRequest": ".updateplaylist", "UpdatePlaylistRequestTypedDict": ".updateplaylist", "UpdatePlaylistResponse": ".updateplaylist", "UpdatePlaylistResponseTypedDict": ".updateplaylist", - "UpdatePlayProgressRequest": ".updateplayprogress", - "UpdatePlayProgressRequestTypedDict": ".updateplayprogress", - "UpdatePlayProgressResponse": ".updateplayprogress", - "UpdatePlayProgressResponseTypedDict": ".updateplayprogress", - "QueryParamForce": ".uploadplaylist", + "UploadPlaylistGlobals": ".uploadplaylist", + "UploadPlaylistGlobalsTypedDict": ".uploadplaylist", "UploadPlaylistRequest": ".uploadplaylist", "UploadPlaylistRequestTypedDict": ".uploadplaylist", "UploadPlaylistResponse": ".uploadplaylist", "UploadPlaylistResponseTypedDict": ".uploadplaylist", + "VoiceSearchHubsGlobals": ".voicesearchhubs", + "VoiceSearchHubsGlobalsTypedDict": ".voicesearchhubs", + "VoiceSearchHubsMediaContainer": ".voicesearchhubs", + "VoiceSearchHubsMediaContainerTypedDict": ".voicesearchhubs", + "VoiceSearchHubsRequest": ".voicesearchhubs", + "VoiceSearchHubsRequestTypedDict": ".voicesearchhubs", + "VoiceSearchHubsResponse": ".voicesearchhubs", + "VoiceSearchHubsResponseBody": ".voicesearchhubs", + "VoiceSearchHubsResponseBodyTypedDict": ".voicesearchhubs", + "VoiceSearchHubsResponseTypedDict": ".voicesearchhubs", + "WriteLogResponse": ".writelog", + "WriteLogResponseTypedDict": ".writelog", + "Level": ".writemessage", + "WriteMessageGlobals": ".writemessage", + "WriteMessageGlobalsTypedDict": ".writemessage", + "WriteMessageRequest": ".writemessage", + "WriteMessageRequestTypedDict": ".writemessage", + "WriteMessageResponse": ".writemessage", + "WriteMessageResponseTypedDict": ".writemessage", } diff --git a/src/plex_api_client/models/operations/addcollectionitems.py b/src/plex_api_client/models/operations/addcollectionitems.py new file mode 100644 index 0000000..47c15f1 --- /dev/null +++ b/src/plex_api_client/models/operations/addcollectionitems.py @@ -0,0 +1,269 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AddCollectionItemsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AddCollectionItemsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AddCollectionItemsRequestTypedDict(TypedDict): + collection_id: int + r"""The collection id""" + uri: str + r"""The URI describing the items to add to this collection""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AddCollectionItemsRequest(BaseModel): + collection_id: Annotated[ + int, + pydantic.Field(alias="collectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The collection id""" + + uri: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The URI describing the items to add to this collection""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AddCollectionItemsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class AddCollectionItemsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/adddevice.py b/src/plex_api_client/models/operations/adddevice.py new file mode 100644 index 0000000..81a08a6 --- /dev/null +++ b/src/plex_api_client/models/operations/adddevice.py @@ -0,0 +1,256 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithdevice as components_mediacontainerwithdevice, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AddDeviceGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AddDeviceGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AddDeviceRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + uri: NotRequired[str] + r"""The URI of the device.""" + + +class AddDeviceRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + uri: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The URI of the device.""" + + +class AddDeviceResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_device: NotRequired[ + components_mediacontainerwithdevice.MediaContainerWithDeviceTypedDict + ] + r"""OK""" + + +class AddDeviceResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_device: Optional[ + components_mediacontainerwithdevice.MediaContainerWithDevice + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/adddevicetodvr.py b/src/plex_api_client/models/operations/adddevicetodvr.py new file mode 100644 index 0000000..86881c8 --- /dev/null +++ b/src/plex_api_client/models/operations/adddevicetodvr.py @@ -0,0 +1,363 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + device as components_device, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AddDeviceToDVRGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AddDeviceToDVRGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AddDeviceToDVRRequestTypedDict(TypedDict): + dvr_id: int + r"""The ID of the DVR.""" + device_id: int + r"""The ID of the device to add.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AddDeviceToDVRRequest(BaseModel): + dvr_id: Annotated[ + int, + pydantic.Field(alias="dvrId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the DVR.""" + + device_id: Annotated[ + int, + pydantic.Field(alias="deviceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the device to add.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AddDeviceToDVRDVRsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + status: NotRequired[int] + r"""A status indicator. If present and non-zero, indicates an error""" + + +class AddDeviceToDVRDVRsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + status: Optional[int] = None + r"""A status indicator. If present and non-zero, indicates an error""" + + +class AddDeviceToDVRDVRTypedDict(TypedDict): + device: NotRequired[List[components_device.DeviceTypedDict]] + key: NotRequired[str] + language: NotRequired[str] + lineup: NotRequired[str] + uuid: NotRequired[str] + + +class AddDeviceToDVRDVR(BaseModel): + device: Annotated[ + Optional[List[components_device.Device]], pydantic.Field(alias="Device") + ] = None + + key: Optional[str] = None + + language: Optional[str] = None + + lineup: Optional[str] = None + + uuid: Optional[str] = None + + +class AddDeviceToDVRMediaContainerTypedDict(TypedDict): + media_container: NotRequired[AddDeviceToDVRDVRsMediaContainerTypedDict] + dvr: NotRequired[List[AddDeviceToDVRDVRTypedDict]] + + +class AddDeviceToDVRMediaContainer(BaseModel): + media_container: Annotated[ + Optional[AddDeviceToDVRDVRsMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + dvr: Annotated[Optional[List[AddDeviceToDVRDVR]], pydantic.Field(alias="DVR")] = ( + None + ) + + +class AddDeviceToDVRResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[AddDeviceToDVRMediaContainerTypedDict] + + +class AddDeviceToDVRResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[AddDeviceToDVRMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class AddDeviceToDVRResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[AddDeviceToDVRResponseBodyTypedDict] + r"""OK""" + + +class AddDeviceToDVRResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[AddDeviceToDVRResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/adddownloadqueueitems.py b/src/plex_api_client/models/operations/adddownloadqueueitems.py new file mode 100644 index 0000000..47d3a55 --- /dev/null +++ b/src/plex_api_client/models/operations/adddownloadqueueitems.py @@ -0,0 +1,586 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + advancedsubtitles as components_advancedsubtitles, + boolint as components_boolint, + location as components_location, + protocol as components_protocol, + subtitles as components_subtitles, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AddDownloadQueueItemsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AddDownloadQueueItemsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AddDownloadQueueItemsRequestTypedDict(TypedDict): + queue_id: int + r"""The queue id""" + keys: List[str] + r"""Keys to add""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + advanced_subtitles: NotRequired[components_advancedsubtitles.AdvancedSubtitles] + r"""Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost + + """ + audio_boost: NotRequired[int] + r"""Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc)""" + audio_channel_count: NotRequired[int] + r"""Target video number of audio channels.""" + auto_adjust_quality: NotRequired[components_boolint.BoolInt] + r"""Indicates the client supports ABR.""" + auto_adjust_subtitle: NotRequired[components_boolint.BoolInt] + r"""Indicates if the server should adjust subtitles based on Voice Activity Data.""" + direct_play: NotRequired[components_boolint.BoolInt] + r"""Indicates the client supports direct playing the indicated content.""" + direct_stream: NotRequired[components_boolint.BoolInt] + r"""Indicates the client supports direct streaming the video of the indicated content.""" + direct_stream_audio: NotRequired[components_boolint.BoolInt] + r"""Indicates the client supports direct streaming the audio of the indicated content.""" + disable_resolution_rotation: NotRequired[components_boolint.BoolInt] + r"""Indicates if resolution should be adjusted for orientation.""" + has_mde: NotRequired[components_boolint.BoolInt] + r"""Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1""" + location: NotRequired[components_location.Location] + r"""Network type of the client, can be used to help determine target bitrate.""" + media_buffer_size: NotRequired[int] + r"""Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks.""" + media_index: NotRequired[int] + r"""Index of the media to transcode. -1 or not specified indicates let the server choose.""" + music_bitrate: NotRequired[int] + r"""Target bitrate for audio only files (in kbps, used to transcode).""" + offset: NotRequired[float] + r"""Offset from the start of the media (in seconds).""" + part_index: NotRequired[int] + r"""Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode""" + path: NotRequired[str] + r"""Internal PMS path of the media to transcode.""" + peak_bitrate: NotRequired[int] + r"""Maximum bitrate (in kbps) to use in ABR.""" + photo_resolution: NotRequired[str] + r"""Target photo resolution.""" + protocol: NotRequired[components_protocol.Protocol] + r"""Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022) + + """ + seconds_per_segment: NotRequired[int] + r"""Number of seconds to include in each transcoded segment""" + subtitle_size: NotRequired[int] + r"""Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect)""" + subtitles: NotRequired[components_subtitles.Subtitles] + r"""Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream + + """ + video_bitrate: NotRequired[int] + r"""Target video bitrate (in kbps).""" + video_quality: NotRequired[int] + r"""Target photo quality.""" + video_resolution: NotRequired[str] + r"""Target maximum video resolution.""" + + +class AddDownloadQueueItemsRequest(BaseModel): + queue_id: Annotated[ + int, + pydantic.Field(alias="queueId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The queue id""" + + keys: Annotated[ + List[str], FieldMetadata(query=QueryParamMetadata(style="form", explode=False)) + ] + r"""Keys to add""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + advanced_subtitles: Annotated[ + Optional[components_advancedsubtitles.AdvancedSubtitles], + pydantic.Field(alias="advancedSubtitles"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost + + """ + + audio_boost: Annotated[ + Optional[int], + pydantic.Field(alias="audioBoost"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc)""" + + audio_channel_count: Annotated[ + Optional[int], + pydantic.Field(alias="audioChannelCount"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target video number of audio channels.""" + + auto_adjust_quality: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="autoAdjustQuality"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the client supports ABR.""" + + auto_adjust_subtitle: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="autoAdjustSubtitle"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates if the server should adjust subtitles based on Voice Activity Data.""" + + direct_play: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="directPlay"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the client supports direct playing the indicated content.""" + + direct_stream: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="directStream"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the client supports direct streaming the video of the indicated content.""" + + direct_stream_audio: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="directStreamAudio"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the client supports direct streaming the audio of the indicated content.""" + + disable_resolution_rotation: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="disableResolutionRotation"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates if resolution should be adjusted for orientation.""" + + has_mde: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="hasMDE"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1""" + + location: Annotated[ + Optional[components_location.Location], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Network type of the client, can be used to help determine target bitrate.""" + + media_buffer_size: Annotated[ + Optional[int], + pydantic.Field(alias="mediaBufferSize"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks.""" + + media_index: Annotated[ + Optional[int], + pydantic.Field(alias="mediaIndex"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Index of the media to transcode. -1 or not specified indicates let the server choose.""" + + music_bitrate: Annotated[ + Optional[int], + pydantic.Field(alias="musicBitrate"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target bitrate for audio only files (in kbps, used to transcode).""" + + offset: Annotated[ + Optional[float], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Offset from the start of the media (in seconds).""" + + part_index: Annotated[ + Optional[int], + pydantic.Field(alias="partIndex"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode""" + + path: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Internal PMS path of the media to transcode.""" + + peak_bitrate: Annotated[ + Optional[int], + pydantic.Field(alias="peakBitrate"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Maximum bitrate (in kbps) to use in ABR.""" + + photo_resolution: Annotated[ + Optional[str], + pydantic.Field(alias="photoResolution"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target photo resolution.""" + + protocol: Annotated[ + Optional[components_protocol.Protocol], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022) + + """ + + seconds_per_segment: Annotated[ + Optional[int], + pydantic.Field(alias="secondsPerSegment"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Number of seconds to include in each transcoded segment""" + + subtitle_size: Annotated[ + Optional[int], + pydantic.Field(alias="subtitleSize"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect)""" + + subtitles: Annotated[ + Optional[components_subtitles.Subtitles], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream + + """ + + video_bitrate: Annotated[ + Optional[int], + pydantic.Field(alias="videoBitrate"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target video bitrate (in kbps).""" + + video_quality: Annotated[ + Optional[int], + pydantic.Field(alias="videoQuality"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target photo quality.""" + + video_resolution: Annotated[ + Optional[str], + pydantic.Field(alias="videoResolution"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target maximum video resolution.""" + + +class AddedQueueItemsTypedDict(TypedDict): + id: NotRequired[int] + r"""The queue item id that was added or the existing one if an item already exists in this queue with the same parameters""" + key: NotRequired[str] + r"""The key added to the queue""" + + +class AddedQueueItems(BaseModel): + id: Optional[int] = None + r"""The queue item id that was added or the existing one if an item already exists in this queue with the same parameters""" + + key: Optional[str] = None + r"""The key added to the queue""" + + +class AddDownloadQueueItemsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + added_queue_items: NotRequired[List[AddedQueueItemsTypedDict]] + + +class AddDownloadQueueItemsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + added_queue_items: Annotated[ + Optional[List[AddedQueueItems]], pydantic.Field(alias="AddedQueueItems") + ] = None + + +class AddDownloadQueueItemsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[AddDownloadQueueItemsMediaContainerTypedDict] + + +class AddDownloadQueueItemsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[AddDownloadQueueItemsMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class AddDownloadQueueItemsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[AddDownloadQueueItemsResponseBodyTypedDict] + r"""OK""" + + +class AddDownloadQueueItemsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[AddDownloadQueueItemsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/addextras.py b/src/plex_api_client/models/operations/addextras.py new file mode 100644 index 0000000..415c975 --- /dev/null +++ b/src/plex_api_client/models/operations/addextras.py @@ -0,0 +1,270 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AddExtrasGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AddExtrasGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AddExtrasRequestTypedDict(TypedDict): + ids: str + url: str + r"""The URL of the extra""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + extra_type: NotRequired[int] + r"""The metadata type of the extra""" + title: NotRequired[str] + r"""The title to filter by or assign""" + + +class AddExtrasRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + url: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The URL of the extra""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + extra_type: Annotated[ + Optional[int], + pydantic.Field(alias="extraType"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The metadata type of the extra""" + + title: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The title to filter by or assign""" + + +class AddExtrasResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class AddExtrasResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/addlineup.py b/src/plex_api_client/models/operations/addlineup.py new file mode 100644 index 0000000..2e5680d --- /dev/null +++ b/src/plex_api_client/models/operations/addlineup.py @@ -0,0 +1,363 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + device as components_device, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AddLineupGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AddLineupGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AddLineupRequestTypedDict(TypedDict): + dvr_id: int + r"""The ID of the DVR.""" + lineup: str + r"""The lineup to delete""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AddLineupRequest(BaseModel): + dvr_id: Annotated[ + int, + pydantic.Field(alias="dvrId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the DVR.""" + + lineup: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The lineup to delete""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AddLineupDVRsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + status: NotRequired[int] + r"""A status indicator. If present and non-zero, indicates an error""" + + +class AddLineupDVRsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + status: Optional[int] = None + r"""A status indicator. If present and non-zero, indicates an error""" + + +class AddLineupDVRTypedDict(TypedDict): + device: NotRequired[List[components_device.DeviceTypedDict]] + key: NotRequired[str] + language: NotRequired[str] + lineup: NotRequired[str] + uuid: NotRequired[str] + + +class AddLineupDVR(BaseModel): + device: Annotated[ + Optional[List[components_device.Device]], pydantic.Field(alias="Device") + ] = None + + key: Optional[str] = None + + language: Optional[str] = None + + lineup: Optional[str] = None + + uuid: Optional[str] = None + + +class AddLineupMediaContainerTypedDict(TypedDict): + media_container: NotRequired[AddLineupDVRsMediaContainerTypedDict] + dvr: NotRequired[List[AddLineupDVRTypedDict]] + + +class AddLineupMediaContainer(BaseModel): + media_container: Annotated[ + Optional[AddLineupDVRsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + dvr: Annotated[Optional[List[AddLineupDVR]], pydantic.Field(alias="DVR")] = None + + +class AddLineupResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[AddLineupMediaContainerTypedDict] + + +class AddLineupResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[AddLineupMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class AddLineupResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[AddLineupResponseBodyTypedDict] + r"""OK""" + + +class AddLineupResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[AddLineupResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/addplaylistcontents.py b/src/plex_api_client/models/operations/addplaylistcontents.py deleted file mode 100644 index 2c52362..0000000 --- a/src/plex_api_client/models/operations/addplaylistcontents.py +++ /dev/null @@ -1,146 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class AddPlaylistContentsRequestTypedDict(TypedDict): - playlist_id: float - r"""the ID of the playlist""" - uri: str - r"""the content URI for the playlist""" - play_queue_id: NotRequired[float] - r"""the play queue to add to a playlist""" - - -class AddPlaylistContentsRequest(BaseModel): - playlist_id: Annotated[ - float, - pydantic.Field(alias="playlistID"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""the ID of the playlist""" - - uri: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""the content URI for the playlist""" - - play_queue_id: Annotated[ - Optional[float], - pydantic.Field(alias="playQueueID"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""the play queue to add to a playlist""" - - -class AddPlaylistContentsMetadataTypedDict(TypedDict): - rating_key: NotRequired[str] - key: NotRequired[str] - guid: NotRequired[str] - type: NotRequired[str] - title: NotRequired[str] - summary: NotRequired[str] - smart: NotRequired[bool] - playlist_type: NotRequired[str] - composite: NotRequired[str] - duration: NotRequired[int] - leaf_count: NotRequired[int] - added_at: NotRequired[int] - updated_at: NotRequired[int] - - -class AddPlaylistContentsMetadata(BaseModel): - rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None - - key: Optional[str] = None - - guid: Optional[str] = None - - type: Optional[str] = None - - title: Optional[str] = None - - summary: Optional[str] = None - - smart: Optional[bool] = None - - playlist_type: Annotated[Optional[str], pydantic.Field(alias="playlistType")] = None - - composite: Optional[str] = None - - duration: Optional[int] = None - - leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None - - added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - - -class AddPlaylistContentsMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - leaf_count_added: NotRequired[int] - leaf_count_requested: NotRequired[int] - metadata: NotRequired[List[AddPlaylistContentsMetadataTypedDict]] - - -class AddPlaylistContentsMediaContainer(BaseModel): - size: Optional[int] = None - - leaf_count_added: Annotated[ - Optional[int], pydantic.Field(alias="leafCountAdded") - ] = None - - leaf_count_requested: Annotated[ - Optional[int], pydantic.Field(alias="leafCountRequested") - ] = None - - metadata: Annotated[ - Optional[List[AddPlaylistContentsMetadata]], pydantic.Field(alias="Metadata") - ] = None - - -class AddPlaylistContentsResponseBodyTypedDict(TypedDict): - r"""Playlist Updated""" - - media_container: NotRequired[AddPlaylistContentsMediaContainerTypedDict] - - -class AddPlaylistContentsResponseBody(BaseModel): - r"""Playlist Updated""" - - media_container: Annotated[ - Optional[AddPlaylistContentsMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class AddPlaylistContentsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[AddPlaylistContentsResponseBodyTypedDict] - r"""Playlist Updated""" - - -class AddPlaylistContentsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[AddPlaylistContentsResponseBody] = None - r"""Playlist Updated""" diff --git a/src/plex_api_client/models/operations/addplaylistitems.py b/src/plex_api_client/models/operations/addplaylistitems.py new file mode 100644 index 0000000..836d1f5 --- /dev/null +++ b/src/plex_api_client/models/operations/addplaylistitems.py @@ -0,0 +1,279 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithplaylistmetadata as components_mediacontainerwithplaylistmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AddPlaylistItemsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AddPlaylistItemsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AddPlaylistItemsRequestTypedDict(TypedDict): + playlist_id: int + r"""The ID of the playlist""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + uri: NotRequired[str] + r"""The content URI for the playlist.""" + play_queue_id: NotRequired[int] + r"""The play queue to add to a playlist.""" + + +class AddPlaylistItemsRequest(BaseModel): + playlist_id: Annotated[ + int, + pydantic.Field(alias="playlistId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the playlist""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + uri: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The content URI for the playlist.""" + + play_queue_id: Annotated[ + Optional[int], + pydantic.Field(alias="playQueueID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The play queue to add to a playlist.""" + + +class AddPlaylistItemsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_playlist_metadata: NotRequired[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadataTypedDict + ] + r"""OK""" + + +class AddPlaylistItemsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_playlist_metadata: Optional[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/addprovider.py b/src/plex_api_client/models/operations/addprovider.py new file mode 100644 index 0000000..4164c23 --- /dev/null +++ b/src/plex_api_client/models/operations/addprovider.py @@ -0,0 +1,243 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AddProviderGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AddProviderGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AddProviderRequestTypedDict(TypedDict): + url: str + r"""The URL of the media provider to add.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AddProviderRequest(BaseModel): + url: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The URL of the media provider to add.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AddProviderResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class AddProviderResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/addsection.py b/src/plex_api_client/models/operations/addsection.py new file mode 100644 index 0000000..eabb3d9 --- /dev/null +++ b/src/plex_api_client/models/operations/addsection.py @@ -0,0 +1,335 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, + slash_get_responses_200 as components_slash_get_responses_200, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AddSectionGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AddSectionGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class QueryParamPrefsTypedDict(TypedDict): + r"""The preferences for this section""" + + +class QueryParamPrefs(BaseModel): + r"""The preferences for this section""" + + +class AddSectionRequestTypedDict(TypedDict): + name: str + r"""The name of the new section""" + type: int + r"""The type of library section""" + agent: str + r"""The agent this section should use for metadata""" + language: str + r"""The language of this section""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + scanner: NotRequired[str] + r"""The scanner this section should use""" + metadata_agent_provider_group_id: NotRequired[str] + r"""The agent group id for this section""" + locations: NotRequired[List[str]] + r"""The locations on disk to add to this section""" + prefs: NotRequired[QueryParamPrefsTypedDict] + r"""The preferences for this section""" + relative: NotRequired[components_boolint.BoolInt] + r"""If set, paths are relative to `Media Upload` path""" + import_fromi_tunes: NotRequired[components_boolint.BoolInt] + r"""If set, import media from iTunes.""" + + +class AddSectionRequest(BaseModel): + name: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The name of the new section""" + + type: Annotated[ + int, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The type of library section""" + + agent: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The agent this section should use for metadata""" + + language: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The language of this section""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + scanner: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The scanner this section should use""" + + metadata_agent_provider_group_id: Annotated[ + Optional[str], + pydantic.Field(alias="metadataAgentProviderGroupId"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The agent group id for this section""" + + locations: Annotated[ + Optional[List[str]], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The locations on disk to add to this section""" + + prefs: Annotated[ + Optional[QueryParamPrefs], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""The preferences for this section""" + + relative: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""If set, paths are relative to `Media Upload` path""" + + import_fromi_tunes: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="importFromiTunes"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""If set, import media from iTunes.""" + + +class AddSectionResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + slash_get_responses_200: NotRequired[ + components_slash_get_responses_200.SlashGetResponses200TypedDict + ] + r"""OK""" + + +class AddSectionResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + slash_get_responses_200: Optional[ + components_slash_get_responses_200.SlashGetResponses200 + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/addsubtitles.py b/src/plex_api_client/models/operations/addsubtitles.py new file mode 100644 index 0000000..747e9f0 --- /dev/null +++ b/src/plex_api_client/models/operations/addsubtitles.py @@ -0,0 +1,296 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AddSubtitlesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AddSubtitlesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AddSubtitlesRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + title: NotRequired[str] + language: NotRequired[str] + media_item_id: NotRequired[int] + url: NotRequired[str] + r"""The URL of the subtitle. If not provided, the contents of the subtitle must be in the post body""" + format_: NotRequired[str] + forced: NotRequired[components_boolint.BoolInt] + hearing_impaired: NotRequired[components_boolint.BoolInt] + + +class AddSubtitlesRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + title: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + language: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + media_item_id: Annotated[ + Optional[int], + pydantic.Field(alias="mediaItemID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + url: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The URL of the subtitle. If not provided, the contents of the subtitle must be in the post body""" + + format_: Annotated[ + Optional[str], + pydantic.Field(alias="format"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + forced: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + hearing_impaired: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="hearingImpaired"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + +class AddSubtitlesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class AddSubtitlesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/addtoplayqueue.py b/src/plex_api_client/models/operations/addtoplayqueue.py new file mode 100644 index 0000000..7f7e985 --- /dev/null +++ b/src/plex_api_client/models/operations/addtoplayqueue.py @@ -0,0 +1,288 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, + mediacontainerwithplaylistmetadata as components_mediacontainerwithplaylistmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AddToPlayQueueGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AddToPlayQueueGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AddToPlayQueueRequestTypedDict(TypedDict): + play_queue_id: int + r"""The ID of the play queue.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + uri: NotRequired[str] + r"""The content URI for what we're adding to the queue.""" + playlist_id: NotRequired[str] + r"""The ID of the playlist to add to the playQueue.""" + next: NotRequired[components_boolint.BoolInt] + r"""Play this item next (defaults to 0 - queueing at the end of manually queued items).""" + + +class AddToPlayQueueRequest(BaseModel): + play_queue_id: Annotated[ + int, + pydantic.Field(alias="playQueueId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the play queue.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + uri: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The content URI for what we're adding to the queue.""" + + playlist_id: Annotated[ + Optional[str], + pydantic.Field(alias="playlistID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The ID of the playlist to add to the playQueue.""" + + next: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Play this item next (defaults to 0 - queueing at the end of manually queued items).""" + + +class AddToPlayQueueResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_playlist_metadata: NotRequired[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadataTypedDict + ] + r"""OK""" + + +class AddToPlayQueueResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_playlist_metadata: Optional[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/analyzemetadata.py b/src/plex_api_client/models/operations/analyzemetadata.py new file mode 100644 index 0000000..d462f16 --- /dev/null +++ b/src/plex_api_client/models/operations/analyzemetadata.py @@ -0,0 +1,264 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AnalyzeMetadataGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AnalyzeMetadataGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AnalyzeMetadataRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + thumb_offset: NotRequired[float] + r"""Set the offset to be used for thumbnails""" + art_offset: NotRequired[float] + r"""Set the offset to be used for artwork""" + + +class AnalyzeMetadataRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + thumb_offset: Annotated[ + Optional[float], + pydantic.Field(alias="thumbOffset"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Set the offset to be used for thumbnails""" + + art_offset: Annotated[ + Optional[float], + pydantic.Field(alias="artOffset"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Set the offset to be used for artwork""" + + +class AnalyzeMetadataResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class AnalyzeMetadataResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/applyupdates.py b/src/plex_api_client/models/operations/applyupdates.py index e46ddf7..aac8d93 100644 --- a/src/plex_api_client/models/operations/applyupdates.py +++ b/src/plex_api_client/models/operations/applyupdates.py @@ -1,47 +1,238 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from enum import Enum import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class Tonight(int, Enum): - r"""Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install""" - - ZERO = 0 - ONE = 1 +class ApplyUpdatesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" -class Skip(int, Enum): - r"""Indicate that the latest version should be marked as skipped. The [Release] entry for this version will have the `state` set to `skipped`.""" +class ApplyUpdatesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" - ZERO = 0 - ONE = 1 + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" class ApplyUpdatesRequestTypedDict(TypedDict): - tonight: NotRequired[Tonight] - r"""Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install""" - skip: NotRequired[Skip] - r"""Indicate that the latest version should be marked as skipped. The [Release] entry for this version will have the `state` set to `skipped`.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + tonight: NotRequired[components_boolint.BoolInt] + r"""Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install immediately.""" + skip: NotRequired[components_boolint.BoolInt] + r"""Indicate that the latest version should be marked as skipped. The entry for this version will have the `state` set to `skipped`.""" class ApplyUpdatesRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + tonight: Annotated[ - Optional[Tonight], + Optional[components_boolint.BoolInt], FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None - r"""Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install""" + r"""Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install immediately.""" skip: Annotated[ - Optional[Skip], + Optional[components_boolint.BoolInt], FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None - r"""Indicate that the latest version should be marked as skipped. The [Release] entry for this version will have the `state` set to `skipped`.""" + r"""Indicate that the latest version should be marked as skipped. The entry for this version will have the `state` set to `skipped`.""" class ApplyUpdatesResponseTypedDict(TypedDict): diff --git a/src/plex_api_client/models/operations/autocomplete.py b/src/plex_api_client/models/operations/autocomplete.py new file mode 100644 index 0000000..6546acf --- /dev/null +++ b/src/plex_api_client/models/operations/autocomplete.py @@ -0,0 +1,292 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, + mediaquery as components_mediaquery, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AutocompleteGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class AutocompleteGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AutocompleteRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + type: NotRequired[int] + r"""Item type""" + field_query: NotRequired[str] + r"""The \"field\" stands in for any field, the value is a partial string for matching""" + media_query: NotRequired[components_mediaquery.MediaQueryTypedDict] + r"""This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries""" + + +class AutocompleteRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + type: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Item type""" + + field_query: Annotated[ + Optional[str], + pydantic.Field(alias="field.query"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The \"field\" stands in for any field, the value is a partial string for matching""" + + media_query: Annotated[ + Optional[components_mediaquery.MediaQuery], + pydantic.Field(alias="mediaQuery"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries""" + + +class AutocompleteResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class AutocompleteResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/cancelactivity.py b/src/plex_api_client/models/operations/cancelactivity.py new file mode 100644 index 0000000..17231b0 --- /dev/null +++ b/src/plex_api_client/models/operations/cancelactivity.py @@ -0,0 +1,245 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CancelActivityGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class CancelActivityGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class CancelActivityRequestTypedDict(TypedDict): + activity_id: str + r"""The UUID of the activity to cancel.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class CancelActivityRequest(BaseModel): + activity_id: Annotated[ + str, + pydantic.Field(alias="activityId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The UUID of the activity to cancel.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class CancelActivityResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class CancelActivityResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/cancelgrab.py b/src/plex_api_client/models/operations/cancelgrab.py new file mode 100644 index 0000000..325b613 --- /dev/null +++ b/src/plex_api_client/models/operations/cancelgrab.py @@ -0,0 +1,245 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CancelGrabGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class CancelGrabGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class CancelGrabRequestTypedDict(TypedDict): + operation_id: str + r"""The ID of the operation.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class CancelGrabRequest(BaseModel): + operation_id: Annotated[ + str, + pydantic.Field(alias="operationId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the operation.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class CancelGrabResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class CancelGrabResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/cancelrefresh.py b/src/plex_api_client/models/operations/cancelrefresh.py new file mode 100644 index 0000000..68a7e53 --- /dev/null +++ b/src/plex_api_client/models/operations/cancelrefresh.py @@ -0,0 +1,245 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CancelRefreshGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class CancelRefreshGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class CancelRefreshRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class CancelRefreshRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class CancelRefreshResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class CancelRefreshResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/cancelserveractivities.py b/src/plex_api_client/models/operations/cancelserveractivities.py deleted file mode 100644 index 8e37892..0000000 --- a/src/plex_api_client/models/operations/cancelserveractivities.py +++ /dev/null @@ -1,42 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, PathParamMetadata -import pydantic -from typing_extensions import Annotated, TypedDict - - -class CancelServerActivitiesRequestTypedDict(TypedDict): - activity_uuid: str - r"""The UUID of the activity to cancel.""" - - -class CancelServerActivitiesRequest(BaseModel): - activity_uuid: Annotated[ - str, - pydantic.Field(alias="activityUUID"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""The UUID of the activity to cancel.""" - - -class CancelServerActivitiesResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class CancelServerActivitiesResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/checkforupdates.py b/src/plex_api_client/models/operations/checkforupdates.py deleted file mode 100644 index fc7ceb4..0000000 --- a/src/plex_api_client/models/operations/checkforupdates.py +++ /dev/null @@ -1,49 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class Download(int, Enum): - r"""Indicate that you want to start download any updates found.""" - - ZERO = 0 - ONE = 1 - - -class CheckForUpdatesRequestTypedDict(TypedDict): - download: NotRequired[Download] - r"""Indicate that you want to start download any updates found.""" - - -class CheckForUpdatesRequest(BaseModel): - download: Annotated[ - Optional[Download], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Indicate that you want to start download any updates found.""" - - -class CheckForUpdatesResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class CheckForUpdatesResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/checkupdates.py b/src/plex_api_client/models/operations/checkupdates.py new file mode 100644 index 0000000..4c2bac9 --- /dev/null +++ b/src/plex_api_client/models/operations/checkupdates.py @@ -0,0 +1,247 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CheckUpdatesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class CheckUpdatesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class CheckUpdatesRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + download: NotRequired[components_boolint.BoolInt] + r"""Indicate that you want to start download any updates found.""" + + +class CheckUpdatesRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + download: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicate that you want to start download any updates found.""" + + +class CheckUpdatesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class CheckUpdatesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/cleanbundles.py b/src/plex_api_client/models/operations/cleanbundles.py new file mode 100644 index 0000000..6936e32 --- /dev/null +++ b/src/plex_api_client/models/operations/cleanbundles.py @@ -0,0 +1,26 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.types import BaseModel +from typing_extensions import TypedDict + + +class CleanBundlesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class CleanBundlesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/clearplaylistcontents.py b/src/plex_api_client/models/operations/clearplaylistcontents.py deleted file mode 100644 index c7e2e0c..0000000 --- a/src/plex_api_client/models/operations/clearplaylistcontents.py +++ /dev/null @@ -1,42 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, PathParamMetadata -import pydantic -from typing_extensions import Annotated, TypedDict - - -class ClearPlaylistContentsRequestTypedDict(TypedDict): - playlist_id: float - r"""the ID of the playlist""" - - -class ClearPlaylistContentsRequest(BaseModel): - playlist_id: Annotated[ - float, - pydantic.Field(alias="playlistID"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""the ID of the playlist""" - - -class ClearPlaylistContentsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class ClearPlaylistContentsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/clearplaylistitems.py b/src/plex_api_client/models/operations/clearplaylistitems.py new file mode 100644 index 0000000..9ada823 --- /dev/null +++ b/src/plex_api_client/models/operations/clearplaylistitems.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithplaylistmetadata as components_mediacontainerwithplaylistmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ClearPlaylistItemsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ClearPlaylistItemsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ClearPlaylistItemsRequestTypedDict(TypedDict): + playlist_id: int + r"""The ID of the playlist""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ClearPlaylistItemsRequest(BaseModel): + playlist_id: Annotated[ + int, + pydantic.Field(alias="playlistId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the playlist""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ClearPlaylistItemsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_playlist_metadata: NotRequired[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadataTypedDict + ] + r"""OK""" + + +class ClearPlaylistItemsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_playlist_metadata: Optional[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/clearplayqueue.py b/src/plex_api_client/models/operations/clearplayqueue.py new file mode 100644 index 0000000..2e8d90b --- /dev/null +++ b/src/plex_api_client/models/operations/clearplayqueue.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithplaylistmetadata as components_mediacontainerwithplaylistmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ClearPlayQueueGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ClearPlayQueueGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ClearPlayQueueRequestTypedDict(TypedDict): + play_queue_id: int + r"""The ID of the play queue.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ClearPlayQueueRequest(BaseModel): + play_queue_id: Annotated[ + int, + pydantic.Field(alias="playQueueId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the play queue.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ClearPlayQueueResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_playlist_metadata: NotRequired[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadataTypedDict + ] + r"""OK""" + + +class ClearPlayQueueResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_playlist_metadata: Optional[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/computechannelmap.py b/src/plex_api_client/models/operations/computechannelmap.py new file mode 100644 index 0000000..c67ac41 --- /dev/null +++ b/src/plex_api_client/models/operations/computechannelmap.py @@ -0,0 +1,347 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ComputeChannelMapGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ComputeChannelMapGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ComputeChannelMapRequestTypedDict(TypedDict): + device_query_parameter: str + r"""The URI describing the device""" + lineup: str + r"""The URI describing the lineup""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ComputeChannelMapRequest(BaseModel): + device_query_parameter: Annotated[ + str, + pydantic.Field(alias="device"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] + r"""The URI describing the device""" + + lineup: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The URI describing the lineup""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ComputeChannelMapChannelMappingTypedDict(TypedDict): + channel_key: NotRequired[str] + device_identifier: NotRequired[str] + r"""The channel description on the device""" + favorite: NotRequired[bool] + lineup_identifier: NotRequired[str] + r"""The channel identifier in the lineup""" + + +class ComputeChannelMapChannelMapping(BaseModel): + channel_key: Annotated[Optional[str], pydantic.Field(alias="channelKey")] = None + + device_identifier: Annotated[ + Optional[str], pydantic.Field(alias="deviceIdentifier") + ] = None + r"""The channel description on the device""" + + favorite: Optional[bool] = None + + lineup_identifier: Annotated[ + Optional[str], pydantic.Field(alias="lineupIdentifier") + ] = None + r"""The channel identifier in the lineup""" + + +class ComputeChannelMapMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + channel_mapping: NotRequired[List[ComputeChannelMapChannelMappingTypedDict]] + + +class ComputeChannelMapMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + channel_mapping: Annotated[ + Optional[List[ComputeChannelMapChannelMapping]], + pydantic.Field(alias="ChannelMapping"), + ] = None + + +class ComputeChannelMapResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[ComputeChannelMapMediaContainerTypedDict] + + +class ComputeChannelMapResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[ComputeChannelMapMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class ComputeChannelMapResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[ComputeChannelMapResponseBodyTypedDict] + r"""OK""" + + +class ComputeChannelMapResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[ComputeChannelMapResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/connectwebsocket.py b/src/plex_api_client/models/operations/connectwebsocket.py new file mode 100644 index 0000000..b2b2353 --- /dev/null +++ b/src/plex_api_client/models/operations/connectwebsocket.py @@ -0,0 +1,264 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ConnectWebSocketGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ConnectWebSocketGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ConnectWebSocketRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + filter_: NotRequired[List[str]] + r"""By default, all events except logs are sent. A rich filtering mechanism is provided to allow clients to opt into or out of each event type using the `filters` parameter. For example: + + - `filters=-log`: All event types except logs (the default). + - `filters=foo,bar`: Only the foo and bar event types. + - `filters=`: All events types. + - `filters=-foo,bar`: All event types except foo and bar. + + """ + + +class ConnectWebSocketRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + filter_: Annotated[ + Optional[List[str]], + pydantic.Field(alias="filter"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""By default, all events except logs are sent. A rich filtering mechanism is provided to allow clients to opt into or out of each event type using the `filters` parameter. For example: + + - `filters=-log`: All event types except logs (the default). + - `filters=foo,bar`: Only the foo and bar event types. + - `filters=`: All events types. + - `filters=-foo,bar`: All event types except foo and bar. + + """ + + +class ConnectWebSocketResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + response_stream: NotRequired[httpx.Response] + r"""OK""" + + +class ConnectWebSocketResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + response_stream: Optional[httpx.Response] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/createcollection.py b/src/plex_api_client/models/operations/createcollection.py new file mode 100644 index 0000000..2a5c637 --- /dev/null +++ b/src/plex_api_client/models/operations/createcollection.py @@ -0,0 +1,289 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CreateCollectionGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class CreateCollectionGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class CreateCollectionRequestTypedDict(TypedDict): + section_id: str + r"""The section where this collection will be created""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + title: NotRequired[str] + r"""The title to filter by or assign""" + smart: NotRequired[bool] + r"""Whether this is a smart collection/playlist""" + uri: NotRequired[str] + r"""The URI for processing the smart collection. Required for a smart collection""" + type: NotRequired[int] + r"""The metadata type to filter by""" + + +class CreateCollectionRequest(BaseModel): + section_id: Annotated[ + str, + pydantic.Field(alias="sectionId"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] + r"""The section where this collection will be created""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + title: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The title to filter by or assign""" + + smart: Annotated[ + Optional[bool], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether this is a smart collection/playlist""" + + uri: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The URI for processing the smart collection. Required for a smart collection""" + + type: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The metadata type to filter by""" + + +class CreateCollectionResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class CreateCollectionResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/createcustomhub.py b/src/plex_api_client/models/operations/createcustomhub.py new file mode 100644 index 0000000..92a81a0 --- /dev/null +++ b/src/plex_api_client/models/operations/createcustomhub.py @@ -0,0 +1,289 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CreateCustomHubGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class CreateCustomHubGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class CreateCustomHubRequestTypedDict(TypedDict): + section_id: int + r"""The section ID for the hubs to reorder""" + metadata_item_id: int + r"""The metadata item on which to base this hub. This must currently be a collection""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + promoted_to_recommended: NotRequired[components_boolint.BoolInt] + r"""Whether this hub should be displayed in recommended""" + promoted_to_own_home: NotRequired[components_boolint.BoolInt] + r"""Whether this hub should be displayed in admin's home""" + promoted_to_shared_home: NotRequired[components_boolint.BoolInt] + r"""Whether this hub should be displayed in shared user's home""" + + +class CreateCustomHubRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The section ID for the hubs to reorder""" + + metadata_item_id: Annotated[ + int, + pydantic.Field(alias="metadataItemId"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] + r"""The metadata item on which to base this hub. This must currently be a collection""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + promoted_to_recommended: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="promotedToRecommended"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether this hub should be displayed in recommended""" + + promoted_to_own_home: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="promotedToOwnHome"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether this hub should be displayed in admin's home""" + + promoted_to_shared_home: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="promotedToSharedHome"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether this hub should be displayed in shared user's home""" + + +class CreateCustomHubResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class CreateCustomHubResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/createdownloadqueue.py b/src/plex_api_client/models/operations/createdownloadqueue.py new file mode 100644 index 0000000..3794884 --- /dev/null +++ b/src/plex_api_client/models/operations/createdownloadqueue.py @@ -0,0 +1,142 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.types import BaseModel +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class Status(str, Enum): + r"""The state of this queue + - deciding: At least one item is still being decided + - waiting: At least one item is waiting for transcode and none are currently transcoding + - processing: At least one item is being transcoded + - done: All items are available (or potentially expired) + - error: At least one item has encountered an error + + """ + + DECIDING = "deciding" + WAITING = "waiting" + PROCESSING = "processing" + DONE = "done" + ERROR = "error" + + +class DownloadQueueTypedDict(TypedDict): + id: NotRequired[int] + item_count: NotRequired[int] + status: NotRequired[Status] + r"""The state of this queue + - deciding: At least one item is still being decided + - waiting: At least one item is waiting for transcode and none are currently transcoding + - processing: At least one item is being transcoded + - done: All items are available (or potentially expired) + - error: At least one item has encountered an error + + """ + + +class DownloadQueue(BaseModel): + id: Optional[int] = None + + item_count: Annotated[Optional[int], pydantic.Field(alias="itemCount")] = None + + status: Optional[Status] = None + r"""The state of this queue + - deciding: At least one item is still being decided + - waiting: At least one item is waiting for transcode and none are currently transcoding + - processing: At least one item is being transcoded + - done: All items are available (or potentially expired) + - error: At least one item has encountered an error + + """ + + +class CreateDownloadQueueMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + download_queue: NotRequired[List[DownloadQueueTypedDict]] + + +class CreateDownloadQueueMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + download_queue: Annotated[ + Optional[List[DownloadQueue]], pydantic.Field(alias="DownloadQueue") + ] = None + + +class CreateDownloadQueueResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[CreateDownloadQueueMediaContainerTypedDict] + + +class CreateDownloadQueueResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[CreateDownloadQueueMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class CreateDownloadQueueResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[CreateDownloadQueueResponseBodyTypedDict] + r"""OK""" + + +class CreateDownloadQueueResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[CreateDownloadQueueResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/createdvr.py b/src/plex_api_client/models/operations/createdvr.py new file mode 100644 index 0000000..12fbe11 --- /dev/null +++ b/src/plex_api_client/models/operations/createdvr.py @@ -0,0 +1,276 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + dvrrequesthandler_slash_get_responses_200 as components_dvrrequesthandler_slash_get_responses_200, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CreateDVRGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class CreateDVRGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class CreateDVRRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + lineup: NotRequired[str] + r"""The EPG lineup.""" + device_query_parameter: NotRequired[List[str]] + r"""The device.""" + language: NotRequired[str] + r"""The language.""" + + +class CreateDVRRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + lineup: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The EPG lineup.""" + + device_query_parameter: Annotated[ + Optional[List[str]], + pydantic.Field(alias="device"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The device.""" + + language: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The language.""" + + +class CreateDVRResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + dvr_request_handler_slash_get_responses_200: NotRequired[ + components_dvrrequesthandler_slash_get_responses_200.DvrRequestHandlerSlashGetResponses200TypedDict + ] + r"""OK""" + + +class CreateDVRResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + dvr_request_handler_slash_get_responses_200: Optional[ + components_dvrrequesthandler_slash_get_responses_200.DvrRequestHandlerSlashGetResponses200 + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/createmarker.py b/src/plex_api_client/models/operations/createmarker.py new file mode 100644 index 0000000..c23300d --- /dev/null +++ b/src/plex_api_client/models/operations/createmarker.py @@ -0,0 +1,392 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CreateMarkerGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class CreateMarkerGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AttributesTypedDict(TypedDict): + r"""The attributes to assign to this marker""" + + +class Attributes(BaseModel): + r"""The attributes to assign to this marker""" + + +class CreateMarkerRequestTypedDict(TypedDict): + ids: str + type: int + r"""The type of marker to edit/create""" + start_time_offset: int + r"""The start time of the marker""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + end_time_offset: NotRequired[int] + r"""The end time of the marker""" + attributes: NotRequired[AttributesTypedDict] + r"""The attributes to assign to this marker""" + + +class CreateMarkerRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + type: Annotated[ + int, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The type of marker to edit/create""" + + start_time_offset: Annotated[ + int, + pydantic.Field(alias="startTimeOffset"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] + r"""The start time of the marker""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + end_time_offset: Annotated[ + Optional[int], + pydantic.Field(alias="endTimeOffset"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The end time of the marker""" + + attributes: Annotated[ + Optional[Attributes], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""The attributes to assign to this marker""" + + +class CreateMarkerType(str, Enum): + INTRO = "intro" + COMMERCIAL = "commercial" + BOOKMARK = "bookmark" + RESUME = "resume" + CREDIT = "credit" + + +class CreateMarkerMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + color: NotRequired[str] + end_time_offset: NotRequired[int] + id: NotRequired[int] + start_time_offset: NotRequired[int] + title: NotRequired[str] + type: NotRequired[CreateMarkerType] + + +class CreateMarkerMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + color: Optional[str] = None + + end_time_offset: Annotated[Optional[int], pydantic.Field(alias="endTimeOffset")] = ( + None + ) + + id: Optional[int] = None + + start_time_offset: Annotated[ + Optional[int], pydantic.Field(alias="startTimeOffset") + ] = None + + title: Optional[str] = None + + type: Optional[CreateMarkerType] = None + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + +class CreateMarkerResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[CreateMarkerMediaContainerTypedDict] + + +class CreateMarkerResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[CreateMarkerMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class CreateMarkerResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[CreateMarkerResponseBodyTypedDict] + r"""OK""" + + +class CreateMarkerResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[CreateMarkerResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/createplaylist.py b/src/plex_api_client/models/operations/createplaylist.py index 7634bd8..8ff69e2 100644 --- a/src/plex_api_client/models/operations/createplaylist.py +++ b/src/plex_api_client/models/operations/createplaylist.py @@ -1,157 +1,239 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from enum import Enum import httpx -from plex_api_client import utils +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithplaylistmetadata as components_mediacontainerwithplaylistmetadata, +) from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata, validate_open_enum +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata import pydantic -from pydantic.functional_validators import PlainValidator -from typing import List, Optional +from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict -class CreatePlaylistQueryParamType(str, Enum, metaclass=utils.OpenEnumMeta): - r"""type of playlist to create""" - - AUDIO = "audio" - VIDEO = "video" - PHOTO = "photo" +class CreatePlaylistGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" -class Smart(int, Enum): - r"""whether the playlist is smart or not""" +class CreatePlaylistGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" - ZERO = 0 - ONE = 1 + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" class CreatePlaylistRequestTypedDict(TypedDict): - title: str - r"""name of the playlist""" - type: CreatePlaylistQueryParamType - r"""type of playlist to create""" - smart: Smart - r"""whether the playlist is smart or not""" - uri: str - r"""the content URI for the playlist""" - play_queue_id: NotRequired[float] - r"""the play queue to copy to a playlist""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + uri: NotRequired[str] + r"""The content URI for what we're playing (e.g. `library://...`).""" + play_queue_id: NotRequired[int] + r"""To create a playlist from an existing play queue.""" class CreatePlaylistRequest(BaseModel): - title: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""name of the playlist""" + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" - type: Annotated[ - Annotated[ - CreatePlaylistQueryParamType, PlainValidator(validate_open_enum(False)) - ], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""type of playlist to create""" + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" - smart: Annotated[ - Smart, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""whether the playlist is smart or not""" + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" uri: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""the content URI for the playlist""" + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The content URI for what we're playing (e.g. `library://...`).""" play_queue_id: Annotated[ - Optional[float], + Optional[int], pydantic.Field(alias="playQueueID"), FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] = None - r"""the play queue to copy to a playlist""" - - -class CreatePlaylistMetadataTypedDict(TypedDict): - rating_key: NotRequired[str] - key: NotRequired[str] - guid: NotRequired[str] - type: NotRequired[str] - title: NotRequired[str] - summary: NotRequired[str] - smart: NotRequired[bool] - playlist_type: NotRequired[str] - icon: NotRequired[str] - view_count: NotRequired[int] - last_viewed_at: NotRequired[int] - leaf_count: NotRequired[int] - added_at: NotRequired[int] - updated_at: NotRequired[int] - composite: NotRequired[str] - duration: NotRequired[int] - - -class CreatePlaylistMetadata(BaseModel): - rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None - - key: Optional[str] = None - - guid: Optional[str] = None - - type: Optional[str] = None - - title: Optional[str] = None - - summary: Optional[str] = None - - smart: Optional[bool] = None - - playlist_type: Annotated[Optional[str], pydantic.Field(alias="playlistType")] = None - - icon: Optional[str] = None - - view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None - - last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( - None - ) - - leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None - - added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - - composite: Optional[str] = None - - duration: Optional[int] = None - - -class CreatePlaylistMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - metadata: NotRequired[List[CreatePlaylistMetadataTypedDict]] - - -class CreatePlaylistMediaContainer(BaseModel): - size: Optional[int] = None - - metadata: Annotated[ - Optional[List[CreatePlaylistMetadata]], pydantic.Field(alias="Metadata") - ] = None - - -class CreatePlaylistResponseBodyTypedDict(TypedDict): - r"""returns all playlists""" - - media_container: NotRequired[CreatePlaylistMediaContainerTypedDict] - - -class CreatePlaylistResponseBody(BaseModel): - r"""returns all playlists""" - - media_container: Annotated[ - Optional[CreatePlaylistMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None + r"""To create a playlist from an existing play queue.""" class CreatePlaylistResponseTypedDict(TypedDict): @@ -161,8 +243,10 @@ class CreatePlaylistResponseTypedDict(TypedDict): r"""HTTP response status code for this operation""" raw_response: httpx.Response r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[CreatePlaylistResponseBodyTypedDict] - r"""returns all playlists""" + media_container_with_playlist_metadata: NotRequired[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadataTypedDict + ] + r"""OK""" class CreatePlaylistResponse(BaseModel): @@ -175,5 +259,7 @@ class CreatePlaylistResponse(BaseModel): raw_response: httpx.Response r"""Raw HTTP response; suitable for custom response parsing""" - object: Optional[CreatePlaylistResponseBody] = None - r"""returns all playlists""" + media_container_with_playlist_metadata: Optional[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/createplayqueue.py b/src/plex_api_client/models/operations/createplayqueue.py new file mode 100644 index 0000000..0233fc7 --- /dev/null +++ b/src/plex_api_client/models/operations/createplayqueue.py @@ -0,0 +1,454 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CreatePlayQueueGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class CreatePlayQueueGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class Type(str, Enum): + r"""The type of play queue to create""" + + AUDIO = "audio" + VIDEO = "video" + PHOTO = "photo" + + +class CreatePlayQueueRequestTypedDict(TypedDict): + type: Type + r"""The type of play queue to create""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + uri: NotRequired[str] + r"""The content URI for what we're playing.""" + playlist_id: NotRequired[int] + r"""the ID of the playlist we're playing.""" + key: NotRequired[str] + r"""The key of the first item to play, defaults to the first in the play queue.""" + shuffle: NotRequired[components_boolint.BoolInt] + r"""Whether to shuffle the playlist, defaults to 0.""" + repeat: NotRequired[components_boolint.BoolInt] + r"""If the PQ is bigger than the window, fill any empty space with wraparound items, defaults to 0.""" + continuous: NotRequired[components_boolint.BoolInt] + r"""Whether to create a continuous play queue (e.g. from an episode), defaults to 0.""" + extras_prefix_count: NotRequired[int] + r"""Number of trailers to prepend a movie with not including the pre-roll. If omitted the pre-roll will not be returned in the play queue. When resuming a movie `extrasPrefixCount` should be omitted as a parameter instead of passing 0.""" + recursive: NotRequired[components_boolint.BoolInt] + r"""Only applies to queues of type photo, whether to retrieve all descendent photos from an album or section, defaults to 1.""" + on_deck: NotRequired[components_boolint.BoolInt] + r"""Only applies to queues of type show or seasons, whether to return a queue that is started on the On Deck episode if one exists. Otherwise begins the play queue on the beginning of the show or season.""" + + +class CreatePlayQueueRequest(BaseModel): + type: Annotated[ + Type, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The type of play queue to create""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + uri: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The content URI for what we're playing.""" + + playlist_id: Annotated[ + Optional[int], + pydantic.Field(alias="playlistID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""the ID of the playlist we're playing.""" + + key: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The key of the first item to play, defaults to the first in the play queue.""" + + shuffle: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether to shuffle the playlist, defaults to 0.""" + + repeat: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""If the PQ is bigger than the window, fill any empty space with wraparound items, defaults to 0.""" + + continuous: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether to create a continuous play queue (e.g. from an episode), defaults to 0.""" + + extras_prefix_count: Annotated[ + Optional[int], + pydantic.Field(alias="extrasPrefixCount"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Number of trailers to prepend a movie with not including the pre-roll. If omitted the pre-roll will not be returned in the play queue. When resuming a movie `extrasPrefixCount` should be omitted as a parameter instead of passing 0.""" + + recursive: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Only applies to queues of type photo, whether to retrieve all descendent photos from an album or section, defaults to 1.""" + + on_deck: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="onDeck"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Only applies to queues of type show or seasons, whether to return a queue that is started on the On Deck episode if one exists. Otherwise begins the play queue on the beginning of the show or season.""" + + +class CreatePlayQueueMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + play_queue_id: NotRequired[int] + r"""The ID of the play queue, which is used in subsequent requests.""" + play_queue_last_added_item_id: NotRequired[str] + r"""Defines where the \"Up Next\" region starts""" + play_queue_selected_item_id: NotRequired[int] + r"""The queue item ID of the currently selected item.""" + play_queue_selected_item_offset: NotRequired[int] + r"""The offset of the selected item in the play queue, from the beginning of the queue.""" + play_queue_selected_metadata_item_id: NotRequired[int] + r"""The metadata item ID of the currently selected item (matches `ratingKey` attribute in metadata item if the media provider is a library).""" + play_queue_shuffled: NotRequired[bool] + r"""Whether or not the queue is shuffled.""" + play_queue_source_uri: NotRequired[str] + r"""The original URI used to create the play queue.""" + play_queue_total_count: NotRequired[int] + r"""The total number of items in the play queue.""" + play_queue_version: NotRequired[int] + r"""The version of the play queue. It increments every time a change is made to the play queue to assist clients in knowing when to refresh.""" + + +class CreatePlayQueueMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + play_queue_id: Annotated[Optional[int], pydantic.Field(alias="playQueueID")] = None + r"""The ID of the play queue, which is used in subsequent requests.""" + + play_queue_last_added_item_id: Annotated[ + Optional[str], pydantic.Field(alias="playQueueLastAddedItemID") + ] = None + r"""Defines where the \"Up Next\" region starts""" + + play_queue_selected_item_id: Annotated[ + Optional[int], pydantic.Field(alias="playQueueSelectedItemID") + ] = None + r"""The queue item ID of the currently selected item.""" + + play_queue_selected_item_offset: Annotated[ + Optional[int], pydantic.Field(alias="playQueueSelectedItemOffset") + ] = None + r"""The offset of the selected item in the play queue, from the beginning of the queue.""" + + play_queue_selected_metadata_item_id: Annotated[ + Optional[int], pydantic.Field(alias="playQueueSelectedMetadataItemID") + ] = None + r"""The metadata item ID of the currently selected item (matches `ratingKey` attribute in metadata item if the media provider is a library).""" + + play_queue_shuffled: Annotated[ + Optional[bool], pydantic.Field(alias="playQueueShuffled") + ] = None + r"""Whether or not the queue is shuffled.""" + + play_queue_source_uri: Annotated[ + Optional[str], pydantic.Field(alias="playQueueSourceURI") + ] = None + r"""The original URI used to create the play queue.""" + + play_queue_total_count: Annotated[ + Optional[int], pydantic.Field(alias="playQueueTotalCount") + ] = None + r"""The total number of items in the play queue.""" + + play_queue_version: Annotated[ + Optional[int], pydantic.Field(alias="playQueueVersion") + ] = None + r"""The version of the play queue. It increments every time a change is made to the play queue to assist clients in knowing when to refresh.""" + + +class CreatePlayQueueResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[CreatePlayQueueMediaContainerTypedDict] + + +class CreatePlayQueueResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[CreatePlayQueueMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class CreatePlayQueueResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[CreatePlayQueueResponseBodyTypedDict] + r"""OK""" + + +class CreatePlayQueueResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[CreatePlayQueueResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/createsubscription.py b/src/plex_api_client/models/operations/createsubscription.py new file mode 100644 index 0000000..d6b2f1c --- /dev/null +++ b/src/plex_api_client/models/operations/createsubscription.py @@ -0,0 +1,401 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediasubscription as components_mediasubscription, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class CreateSubscriptionGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class CreateSubscriptionGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class HintsTypedDict(TypedDict): + r"""Hints describing what we're looking for. Note: The hint `ratingKey` is required for downloading from a PMS remote.""" + + +class Hints(BaseModel): + r"""Hints describing what we're looking for. Note: The hint `ratingKey` is required for downloading from a PMS remote.""" + + +class CreateSubscriptionQueryParamPrefsTypedDict(TypedDict): + r"""Subscription preferences.""" + + +class CreateSubscriptionQueryParamPrefs(BaseModel): + r"""Subscription preferences.""" + + +class ParamsTypedDict(TypedDict): + r"""Subscription parameters. + - `mediaProviderID`: Required for downloads to indicate which MP the subscription will download into + - `source`: Required for downloads to indicate the source of the downloaded content. + + """ + + +class Params(BaseModel): + r"""Subscription parameters. + - `mediaProviderID`: Required for downloads to indicate which MP the subscription will download into + - `source`: Required for downloads to indicate the source of the downloaded content. + + """ + + +class CreateSubscriptionRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + target_library_section_id: NotRequired[int] + r"""The library section into which we'll grab the media. Not actually required when the subscription is to a playlist.""" + target_section_location_id: NotRequired[int] + r"""The section location into which to grab.""" + type: NotRequired[int] + r"""The type of the thing we're subscribing too (e.g. show, season).""" + hints: NotRequired[HintsTypedDict] + r"""Hints describing what we're looking for. Note: The hint `ratingKey` is required for downloading from a PMS remote.""" + prefs: NotRequired[CreateSubscriptionQueryParamPrefsTypedDict] + r"""Subscription preferences.""" + params: NotRequired[ParamsTypedDict] + r"""Subscription parameters. + - `mediaProviderID`: Required for downloads to indicate which MP the subscription will download into + - `source`: Required for downloads to indicate the source of the downloaded content. + + """ + + +class CreateSubscriptionRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + target_library_section_id: Annotated[ + Optional[int], + pydantic.Field(alias="targetLibrarySectionID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The library section into which we'll grab the media. Not actually required when the subscription is to a playlist.""" + + target_section_location_id: Annotated[ + Optional[int], + pydantic.Field(alias="targetSectionLocationID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The section location into which to grab.""" + + type: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The type of the thing we're subscribing too (e.g. show, season).""" + + hints: Annotated[ + Optional[Hints], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Hints describing what we're looking for. Note: The hint `ratingKey` is required for downloading from a PMS remote.""" + + prefs: Annotated[ + Optional[CreateSubscriptionQueryParamPrefs], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Subscription preferences.""" + + params: Annotated[ + Optional[Params], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Subscription parameters. + - `mediaProviderID`: Required for downloads to indicate which MP the subscription will download into + - `source`: Required for downloads to indicate the source of the downloaded content. + + """ + + +class CreateSubscriptionMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + media_subscription: NotRequired[ + List[components_mediasubscription.MediaSubscriptionTypedDict] + ] + + +class CreateSubscriptionMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + media_subscription: Annotated[ + Optional[List[components_mediasubscription.MediaSubscription]], + pydantic.Field(alias="MediaSubscription"), + ] = None + + +class CreateSubscriptionResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[CreateSubscriptionMediaContainerTypedDict] + + +class CreateSubscriptionResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[CreateSubscriptionMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class CreateSubscriptionResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[CreateSubscriptionResponseBodyTypedDict] + r"""OK""" + + +class CreateSubscriptionResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[CreateSubscriptionResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/deletecaches.py b/src/plex_api_client/models/operations/deletecaches.py new file mode 100644 index 0000000..957f691 --- /dev/null +++ b/src/plex_api_client/models/operations/deletecaches.py @@ -0,0 +1,26 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.types import BaseModel +from typing_extensions import TypedDict + + +class DeleteCachesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DeleteCachesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/deletecollection.py b/src/plex_api_client/models/operations/deletecollection.py new file mode 100644 index 0000000..58c837a --- /dev/null +++ b/src/plex_api_client/models/operations/deletecollection.py @@ -0,0 +1,254 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteCollectionGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteCollectionGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteCollectionRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + collection_id: int + r"""Collection Id""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteCollectionRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + collection_id: Annotated[ + int, + pydantic.Field(alias="collectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Collection Id""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteCollectionResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DeleteCollectionResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/deletecollectionitem.py b/src/plex_api_client/models/operations/deletecollectionitem.py new file mode 100644 index 0000000..1dc5cca --- /dev/null +++ b/src/plex_api_client/models/operations/deletecollectionitem.py @@ -0,0 +1,266 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteCollectionItemGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteCollectionItemGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteCollectionItemRequestTypedDict(TypedDict): + collection_id: int + r"""The collection id""" + item_id: int + r"""The item to delete""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteCollectionItemRequest(BaseModel): + collection_id: Annotated[ + int, + pydantic.Field(alias="collectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The collection id""" + + item_id: Annotated[ + int, + pydantic.Field(alias="itemId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The item to delete""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteCollectionItemResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class DeleteCollectionItemResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/deletecustomhub.py b/src/plex_api_client/models/operations/deletecustomhub.py new file mode 100644 index 0000000..4d39684 --- /dev/null +++ b/src/plex_api_client/models/operations/deletecustomhub.py @@ -0,0 +1,252 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteCustomHubGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteCustomHubGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteCustomHubRequestTypedDict(TypedDict): + section_id: int + r"""The section ID for the hubs to change""" + identifier: str + r"""The identifier of the hub to change""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteCustomHubRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The section ID for the hubs to change""" + + identifier: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The identifier of the hub to change""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteCustomHubResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DeleteCustomHubResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/deletedvr.py b/src/plex_api_client/models/operations/deletedvr.py new file mode 100644 index 0000000..404a690 --- /dev/null +++ b/src/plex_api_client/models/operations/deletedvr.py @@ -0,0 +1,245 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteDVRGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteDVRGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteDVRRequestTypedDict(TypedDict): + dvr_id: int + r"""The ID of the DVR.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteDVRRequest(BaseModel): + dvr_id: Annotated[ + int, + pydantic.Field(alias="dvrId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the DVR.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteDVRResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DeleteDVRResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/deletehistory.py b/src/plex_api_client/models/operations/deletehistory.py new file mode 100644 index 0000000..bc9ec76 --- /dev/null +++ b/src/plex_api_client/models/operations/deletehistory.py @@ -0,0 +1,256 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainer as components_mediacontainer, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteHistoryGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteHistoryGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteHistoryRequestTypedDict(TypedDict): + history_id: int + r"""The id of the history item (the `historyKey` from above)""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteHistoryRequest(BaseModel): + history_id: Annotated[ + int, + pydantic.Field(alias="historyId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The id of the history item (the `historyKey` from above)""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteHistoryResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container: NotRequired[components_mediacontainer.MediaContainerTypedDict] + r"""OK""" + + +class DeleteHistoryResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container: Optional[components_mediacontainer.MediaContainer] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/deleteindexes.py b/src/plex_api_client/models/operations/deleteindexes.py new file mode 100644 index 0000000..566c576 --- /dev/null +++ b/src/plex_api_client/models/operations/deleteindexes.py @@ -0,0 +1,245 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteIndexesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteIndexesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteIndexesRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteIndexesRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteIndexesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DeleteIndexesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/deleteintros.py b/src/plex_api_client/models/operations/deleteintros.py new file mode 100644 index 0000000..6087013 --- /dev/null +++ b/src/plex_api_client/models/operations/deleteintros.py @@ -0,0 +1,245 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteIntrosGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteIntrosGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteIntrosRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteIntrosRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteIntrosResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DeleteIntrosResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/deletelibrary.py b/src/plex_api_client/models/operations/deletelibrary.py deleted file mode 100644 index e1a3393..0000000 --- a/src/plex_api_client/models/operations/deletelibrary.py +++ /dev/null @@ -1,48 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, PathParamMetadata -import pydantic -from typing_extensions import Annotated, TypedDict - - -class DeleteLibraryRequestTypedDict(TypedDict): - section_key: int - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - - -class DeleteLibraryRequest(BaseModel): - section_key: Annotated[ - int, - pydantic.Field(alias="sectionKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - - -class DeleteLibraryResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class DeleteLibraryResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/deletelibrarysection.py b/src/plex_api_client/models/operations/deletelibrarysection.py new file mode 100644 index 0000000..74328d1 --- /dev/null +++ b/src/plex_api_client/models/operations/deletelibrarysection.py @@ -0,0 +1,262 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteLibrarySectionGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteLibrarySectionGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteLibrarySectionRequestTypedDict(TypedDict): + section_id: str + r"""The section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + async_: NotRequired[components_boolint.BoolInt] + r"""If set, response will return an activity with the actual deletion process. Otherwise request will return when deletion is complete""" + + +class DeleteLibrarySectionRequest(BaseModel): + section_id: Annotated[ + str, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + async_: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="async"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""If set, response will return an activity with the actual deletion process. Otherwise request will return when deletion is complete""" + + +class DeleteLibrarySectionResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DeleteLibrarySectionResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/deletelineup.py b/src/plex_api_client/models/operations/deletelineup.py new file mode 100644 index 0000000..406fbe2 --- /dev/null +++ b/src/plex_api_client/models/operations/deletelineup.py @@ -0,0 +1,363 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + device as components_device, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteLineupGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteLineupGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteLineupRequestTypedDict(TypedDict): + dvr_id: int + r"""The ID of the DVR.""" + lineup: str + r"""The lineup to delete""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteLineupRequest(BaseModel): + dvr_id: Annotated[ + int, + pydantic.Field(alias="dvrId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the DVR.""" + + lineup: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The lineup to delete""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteLineupDVRsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + status: NotRequired[int] + r"""A status indicator. If present and non-zero, indicates an error""" + + +class DeleteLineupDVRsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + status: Optional[int] = None + r"""A status indicator. If present and non-zero, indicates an error""" + + +class DeleteLineupDVRTypedDict(TypedDict): + device: NotRequired[List[components_device.DeviceTypedDict]] + key: NotRequired[str] + language: NotRequired[str] + lineup: NotRequired[str] + uuid: NotRequired[str] + + +class DeleteLineupDVR(BaseModel): + device: Annotated[ + Optional[List[components_device.Device]], pydantic.Field(alias="Device") + ] = None + + key: Optional[str] = None + + language: Optional[str] = None + + lineup: Optional[str] = None + + uuid: Optional[str] = None + + +class DeleteLineupMediaContainerTypedDict(TypedDict): + media_container: NotRequired[DeleteLineupDVRsMediaContainerTypedDict] + dvr: NotRequired[List[DeleteLineupDVRTypedDict]] + + +class DeleteLineupMediaContainer(BaseModel): + media_container: Annotated[ + Optional[DeleteLineupDVRsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + dvr: Annotated[Optional[List[DeleteLineupDVR]], pydantic.Field(alias="DVR")] = None + + +class DeleteLineupResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[DeleteLineupMediaContainerTypedDict] + + +class DeleteLineupResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[DeleteLineupMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class DeleteLineupResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[DeleteLineupResponseBodyTypedDict] + r"""OK""" + + +class DeleteLineupResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[DeleteLineupResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/deletemarker.py b/src/plex_api_client/models/operations/deletemarker.py new file mode 100644 index 0000000..5225af7 --- /dev/null +++ b/src/plex_api_client/models/operations/deletemarker.py @@ -0,0 +1,246 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteMarkerGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteMarkerGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteMarkerRequestTypedDict(TypedDict): + ids: str + marker: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteMarkerRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + marker: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteMarkerResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DeleteMarkerResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/deletemediaitem.py b/src/plex_api_client/models/operations/deletemediaitem.py new file mode 100644 index 0000000..30722a6 --- /dev/null +++ b/src/plex_api_client/models/operations/deletemediaitem.py @@ -0,0 +1,264 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteMediaItemGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteMediaItemGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteMediaItemRequestTypedDict(TypedDict): + ids: str + media_item: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + proxy: NotRequired[components_boolint.BoolInt] + r"""Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false.""" + + +class DeleteMediaItemRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + media_item: Annotated[ + str, + pydantic.Field(alias="mediaItem"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + proxy: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false.""" + + +class DeleteMediaItemResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DeleteMediaItemResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/deletemediaprovider.py b/src/plex_api_client/models/operations/deletemediaprovider.py new file mode 100644 index 0000000..061557a --- /dev/null +++ b/src/plex_api_client/models/operations/deletemediaprovider.py @@ -0,0 +1,243 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteMediaProviderGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteMediaProviderGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteMediaProviderRequestTypedDict(TypedDict): + provider: str + r"""The ID of the media provider to delete""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteMediaProviderRequest(BaseModel): + provider: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The ID of the media provider to delete""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteMediaProviderResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DeleteMediaProviderResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/deletemetadataitem.py b/src/plex_api_client/models/operations/deletemetadataitem.py new file mode 100644 index 0000000..eb10991 --- /dev/null +++ b/src/plex_api_client/models/operations/deletemetadataitem.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteMetadataItemGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteMetadataItemGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteMetadataItemRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + proxy: NotRequired[components_boolint.BoolInt] + r"""Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false.""" + + +class DeleteMetadataItemRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + proxy: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether proxy items, such as media optimized versions, should also be deleted. Defaults to false.""" + + +class DeleteMetadataItemResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DeleteMetadataItemResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/deleteplaylist.py b/src/plex_api_client/models/operations/deleteplaylist.py index c877ba7..6c6b985 100644 --- a/src/plex_api_client/models/operations/deleteplaylist.py +++ b/src/plex_api_client/models/operations/deleteplaylist.py @@ -2,24 +2,227 @@ from __future__ import annotations import httpx +from plex_api_client.models.components import accepts as components_accepts from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, PathParamMetadata +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic -from typing_extensions import Annotated, TypedDict +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeletePlaylistGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeletePlaylistGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" class DeletePlaylistRequestTypedDict(TypedDict): - playlist_id: float - r"""the ID of the playlist""" + playlist_id: int + r"""The ID of the playlist""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" class DeletePlaylistRequest(BaseModel): playlist_id: Annotated[ - float, - pydantic.Field(alias="playlistID"), + int, + pydantic.Field(alias="playlistId"), FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] - r"""the ID of the playlist""" + r"""The ID of the playlist""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" class DeletePlaylistResponseTypedDict(TypedDict): diff --git a/src/plex_api_client/models/operations/deleteplaylistitem.py b/src/plex_api_client/models/operations/deleteplaylistitem.py new file mode 100644 index 0000000..fd397f6 --- /dev/null +++ b/src/plex_api_client/models/operations/deleteplaylistitem.py @@ -0,0 +1,266 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithplaylistmetadata as components_mediacontainerwithplaylistmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeletePlaylistItemGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeletePlaylistItemGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeletePlaylistItemRequestTypedDict(TypedDict): + playlist_id: int + r"""The ID of the playlist""" + generator_id: int + r"""The generator item ID to delete.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeletePlaylistItemRequest(BaseModel): + playlist_id: Annotated[ + int, + pydantic.Field(alias="playlistId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the playlist""" + + generator_id: Annotated[ + int, + pydantic.Field(alias="generatorId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The generator item ID to delete.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeletePlaylistItemResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_playlist_metadata: NotRequired[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadataTypedDict + ] + r"""OK""" + + +class DeletePlaylistItemResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_playlist_metadata: Optional[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/deleteplayqueueitem.py b/src/plex_api_client/models/operations/deleteplayqueueitem.py new file mode 100644 index 0000000..4a4ad13 --- /dev/null +++ b/src/plex_api_client/models/operations/deleteplayqueueitem.py @@ -0,0 +1,266 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithplaylistmetadata as components_mediacontainerwithplaylistmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeletePlayQueueItemGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeletePlayQueueItemGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeletePlayQueueItemRequestTypedDict(TypedDict): + play_queue_id: int + r"""The ID of the play queue.""" + play_queue_item_id: int + r"""The play queue item ID to delete.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeletePlayQueueItemRequest(BaseModel): + play_queue_id: Annotated[ + int, + pydantic.Field(alias="playQueueId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the play queue.""" + + play_queue_item_id: Annotated[ + int, + pydantic.Field(alias="playQueueItemId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The play queue item ID to delete.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeletePlayQueueItemResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_playlist_metadata: NotRequired[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadataTypedDict + ] + r"""OK""" + + +class DeletePlayQueueItemResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_playlist_metadata: Optional[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/deletestream.py b/src/plex_api_client/models/operations/deletestream.py new file mode 100644 index 0000000..0d5c9d8 --- /dev/null +++ b/src/plex_api_client/models/operations/deletestream.py @@ -0,0 +1,252 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteStreamGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteStreamGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteStreamRequestTypedDict(TypedDict): + stream_id: int + r"""The id of the stream""" + ext: str + r"""This is not a part of this endpoint but documented here to satisfy OpenAPI""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteStreamRequest(BaseModel): + stream_id: Annotated[ + int, + pydantic.Field(alias="streamId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The id of the stream""" + + ext: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""This is not a part of this endpoint but documented here to satisfy OpenAPI""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteStreamResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DeleteStreamResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/deletesubscription.py b/src/plex_api_client/models/operations/deletesubscription.py new file mode 100644 index 0000000..fa400a9 --- /dev/null +++ b/src/plex_api_client/models/operations/deletesubscription.py @@ -0,0 +1,243 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DeleteSubscriptionGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteSubscriptionGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteSubscriptionRequestTypedDict(TypedDict): + subscription_id: int + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DeleteSubscriptionRequest(BaseModel): + subscription_id: Annotated[ + int, + pydantic.Field(alias="subscriptionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeleteSubscriptionResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DeleteSubscriptionResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/detectads.py b/src/plex_api_client/models/operations/detectads.py new file mode 100644 index 0000000..55845dc --- /dev/null +++ b/src/plex_api_client/models/operations/detectads.py @@ -0,0 +1,241 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DetectAdsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DetectAdsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DetectAdsRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DetectAdsRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DetectAdsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DetectAdsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/detectcredits.py b/src/plex_api_client/models/operations/detectcredits.py new file mode 100644 index 0000000..5503c1e --- /dev/null +++ b/src/plex_api_client/models/operations/detectcredits.py @@ -0,0 +1,261 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DetectCreditsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DetectCreditsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DetectCreditsRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + force: NotRequired[components_boolint.BoolInt] + manual: NotRequired[components_boolint.BoolInt] + + +class DetectCreditsRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + force: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + manual: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + +class DetectCreditsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DetectCreditsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/detectintros.py b/src/plex_api_client/models/operations/detectintros.py new file mode 100644 index 0000000..608a575 --- /dev/null +++ b/src/plex_api_client/models/operations/detectintros.py @@ -0,0 +1,265 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DetectIntrosGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DetectIntrosGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DetectIntrosRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + force: NotRequired[components_boolint.BoolInt] + r"""Indicate whether detection should be re-run""" + threshold: NotRequired[float] + r"""The threshold for determining if content is an intro or not""" + + +class DetectIntrosRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + force: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicate whether detection should be re-run""" + + threshold: Annotated[ + Optional[float], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The threshold for determining if content is an intro or not""" + + +class DetectIntrosResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DetectIntrosResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/detectvoiceactivity.py b/src/plex_api_client/models/operations/detectvoiceactivity.py new file mode 100644 index 0000000..2bfaecd --- /dev/null +++ b/src/plex_api_client/models/operations/detectvoiceactivity.py @@ -0,0 +1,265 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class DetectVoiceActivityGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class DetectVoiceActivityGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DetectVoiceActivityRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + force: NotRequired[components_boolint.BoolInt] + r"""Indicate whether detection should be re-run""" + manual: NotRequired[components_boolint.BoolInt] + r"""Indicate whether detection is manually run""" + + +class DetectVoiceActivityRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + force: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicate whether detection should be re-run""" + + manual: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicate whether detection is manually run""" + + +class DetectVoiceActivityResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class DetectVoiceActivityResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/discoverdevices.py b/src/plex_api_client/models/operations/discoverdevices.py new file mode 100644 index 0000000..ce8d605 --- /dev/null +++ b/src/plex_api_client/models/operations/discoverdevices.py @@ -0,0 +1,39 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + mediacontainerwithdevice as components_mediacontainerwithdevice, +) +from plex_api_client.types import BaseModel +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class DiscoverDevicesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_device: NotRequired[ + components_mediacontainerwithdevice.MediaContainerWithDeviceTypedDict + ] + r"""OK""" + + +class DiscoverDevicesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_device: Optional[ + components_mediacontainerwithdevice.MediaContainerWithDevice + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/editmarker.py b/src/plex_api_client/models/operations/editmarker.py new file mode 100644 index 0000000..87664c0 --- /dev/null +++ b/src/plex_api_client/models/operations/editmarker.py @@ -0,0 +1,304 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + post_responses_200 as components_post_responses_200, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class EditMarkerGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class EditMarkerGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class QueryParamAttributesTypedDict(TypedDict): + r"""The attributes to assign to this marker""" + + +class QueryParamAttributes(BaseModel): + r"""The attributes to assign to this marker""" + + +class EditMarkerRequestTypedDict(TypedDict): + ids: str + marker: str + r"""The id of the marker to edit""" + type: int + r"""The type of marker to edit/create""" + start_time_offset: int + r"""The start time of the marker""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + end_time_offset: NotRequired[int] + r"""The end time of the marker""" + attributes: NotRequired[QueryParamAttributesTypedDict] + r"""The attributes to assign to this marker""" + + +class EditMarkerRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + marker: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The id of the marker to edit""" + + type: Annotated[ + int, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The type of marker to edit/create""" + + start_time_offset: Annotated[ + int, + pydantic.Field(alias="startTimeOffset"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] + r"""The start time of the marker""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + end_time_offset: Annotated[ + Optional[int], + pydantic.Field(alias="endTimeOffset"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The end time of the marker""" + + attributes: Annotated[ + Optional[QueryParamAttributes], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""The attributes to assign to this marker""" + + +class EditMarkerResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + post_responses_200: NotRequired[ + components_post_responses_200.PostResponses200TypedDict + ] + r"""OK""" + + +class EditMarkerResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + post_responses_200: Optional[components_post_responses_200.PostResponses200] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/editmetadataitem.py b/src/plex_api_client/models/operations/editmetadataitem.py new file mode 100644 index 0000000..d73810c --- /dev/null +++ b/src/plex_api_client/models/operations/editmetadataitem.py @@ -0,0 +1,262 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class EditMetadataItemGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class EditMetadataItemGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ArgsTypedDict(TypedDict): + r"""The new values for the metadata item""" + + +class Args(BaseModel): + r"""The new values for the metadata item""" + + +class EditMetadataItemRequestTypedDict(TypedDict): + ids: List[str] + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + args: NotRequired[ArgsTypedDict] + r"""The new values for the metadata item""" + + +class EditMetadataItemRequest(BaseModel): + ids: Annotated[ + List[str], FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + args: Annotated[ + Optional[Args], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The new values for the metadata item""" + + +class EditMetadataItemResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class EditMetadataItemResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/editsection.py b/src/plex_api_client/models/operations/editsection.py new file mode 100644 index 0000000..e728394 --- /dev/null +++ b/src/plex_api_client/models/operations/editsection.py @@ -0,0 +1,314 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class EditSectionGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class EditSectionGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class EditSectionQueryParamPrefsTypedDict(TypedDict): + r"""The preferences for this section""" + + +class EditSectionQueryParamPrefs(BaseModel): + r"""The preferences for this section""" + + +class EditSectionRequestTypedDict(TypedDict): + section_id: str + r"""The section identifier""" + agent: str + r"""The agent this section should use for metadata""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + name: NotRequired[str] + r"""The name of the new section""" + scanner: NotRequired[str] + r"""The scanner this section should use""" + metadata_agent_provider_group_id: NotRequired[str] + r"""The agent group id for this section""" + language: NotRequired[str] + r"""The language of this section""" + locations: NotRequired[List[str]] + r"""The locations on disk to add to this section""" + prefs: NotRequired[EditSectionQueryParamPrefsTypedDict] + r"""The preferences for this section""" + + +class EditSectionRequest(BaseModel): + section_id: Annotated[ + str, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The section identifier""" + + agent: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The agent this section should use for metadata""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + name: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The name of the new section""" + + scanner: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The scanner this section should use""" + + metadata_agent_provider_group_id: Annotated[ + Optional[str], + pydantic.Field(alias="metadataAgentProviderGroupId"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The agent group id for this section""" + + language: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The language of this section""" + + locations: Annotated[ + Optional[List[str]], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The locations on disk to add to this section""" + + prefs: Annotated[ + Optional[EditSectionQueryParamPrefs], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""The preferences for this section""" + + +class EditSectionResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class EditSectionResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/editsubscriptionpreferences.py b/src/plex_api_client/models/operations/editsubscriptionpreferences.py new file mode 100644 index 0000000..8538234 --- /dev/null +++ b/src/plex_api_client/models/operations/editsubscriptionpreferences.py @@ -0,0 +1,274 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithsubscription as components_mediacontainerwithsubscription, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class EditSubscriptionPreferencesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class EditSubscriptionPreferencesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class EditSubscriptionPreferencesQueryParamPrefsTypedDict(TypedDict): + pass + + +class EditSubscriptionPreferencesQueryParamPrefs(BaseModel): + pass + + +class EditSubscriptionPreferencesRequestTypedDict(TypedDict): + subscription_id: int + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + prefs: NotRequired[EditSubscriptionPreferencesQueryParamPrefsTypedDict] + + +class EditSubscriptionPreferencesRequest(BaseModel): + subscription_id: Annotated[ + int, + pydantic.Field(alias="subscriptionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + prefs: Annotated[ + Optional[EditSubscriptionPreferencesQueryParamPrefs], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + + +class EditSubscriptionPreferencesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_subscription: NotRequired[ + components_mediacontainerwithsubscription.MediaContainerWithSubscriptionTypedDict + ] + r"""OK""" + + +class EditSubscriptionPreferencesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_subscription: Optional[ + components_mediacontainerwithsubscription.MediaContainerWithSubscription + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/emptytrash.py b/src/plex_api_client/models/operations/emptytrash.py new file mode 100644 index 0000000..444928a --- /dev/null +++ b/src/plex_api_client/models/operations/emptytrash.py @@ -0,0 +1,245 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class EmptyTrashGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class EmptyTrashGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class EmptyTrashRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class EmptyTrashRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class EmptyTrashResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class EmptyTrashResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/enablepapertrail.py b/src/plex_api_client/models/operations/enablepapertrail.py index 7664a72..17480f3 100644 --- a/src/plex_api_client/models/operations/enablepapertrail.py +++ b/src/plex_api_client/models/operations/enablepapertrail.py @@ -2,11 +2,229 @@ from __future__ import annotations import httpx +from plex_api_client.models.components import accepts as components_accepts from plex_api_client.types import BaseModel -from typing_extensions import TypedDict +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict -class EnablePaperTrailResponseTypedDict(TypedDict): +class EnablePapertrailGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class EnablePapertrailGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class EnablePapertrailRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + minutes: NotRequired[int] + r"""The number of minutes logging should be sent to Papertrail""" + + +class EnablePapertrailRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + minutes: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The number of minutes logging should be sent to Papertrail""" + + +class EnablePapertrailResponseTypedDict(TypedDict): content_type: str r"""HTTP response content type for this operation""" status_code: int @@ -15,7 +233,7 @@ class EnablePaperTrailResponseTypedDict(TypedDict): r"""Raw HTTP response; suitable for custom response parsing""" -class EnablePaperTrailResponse(BaseModel): +class EnablePapertrailResponse(BaseModel): content_type: str r"""HTTP response content type for this operation""" diff --git a/src/plex_api_client/models/operations/generatethumbs.py b/src/plex_api_client/models/operations/generatethumbs.py new file mode 100644 index 0000000..a646847 --- /dev/null +++ b/src/plex_api_client/models/operations/generatethumbs.py @@ -0,0 +1,255 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GenerateThumbsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GenerateThumbsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GenerateThumbsRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + force: NotRequired[components_boolint.BoolInt] + + +class GenerateThumbsRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + force: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + +class GenerateThumbsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class GenerateThumbsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/get_actors_library.py b/src/plex_api_client/models/operations/get_actors_library.py deleted file mode 100644 index 90fd6a7..0000000 --- a/src/plex_api_client/models/operations/get_actors_library.py +++ /dev/null @@ -1,218 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import ( - FieldMetadata, - PathParamMetadata, - QueryParamMetadata, - validate_open_enum, -) -import pydantic -from pydantic.functional_validators import PlainValidator -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetActorsLibraryQueryParamType(int, Enum, metaclass=utils.OpenEnumMeta): - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - MOVIE = 1 - TV_SHOW = 2 - SEASON = 3 - EPISODE = 4 - ARTIST = 5 - ALBUM = 6 - TRACK = 7 - PHOTO_ALBUM = 8 - PHOTO = 9 - - -class GetActorsLibraryRequestTypedDict(TypedDict): - section_key: int - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - type: GetActorsLibraryQueryParamType - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - -class GetActorsLibraryRequest(BaseModel): - section_key: Annotated[ - int, - pydantic.Field(alias="sectionKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - - type: Annotated[ - Annotated[ - GetActorsLibraryQueryParamType, PlainValidator(validate_open_enum(True)) - ], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - -class GetActorsLibraryDirectoryTypedDict(TypedDict): - fast_key: str - r"""A fast lookup key for the actor relative url.""" - thumb: str - r"""URL for the thumbnail image of the actor.""" - key: str - r"""A unique key representing the actor.""" - title: str - r"""The name of the actor.""" - - -class GetActorsLibraryDirectory(BaseModel): - fast_key: Annotated[str, pydantic.Field(alias="fastKey")] - r"""A fast lookup key for the actor relative url.""" - - thumb: str - r"""URL for the thumbnail image of the actor.""" - - key: str - r"""A unique key representing the actor.""" - - title: str - r"""The name of the actor.""" - - -class GetActorsLibraryMediaContainerTypedDict(TypedDict): - size: int - r"""Number of media items returned in this response.""" - allow_sync: bool - r"""Indicates whether syncing is allowed.""" - art: str - r"""URL for the background artwork of the media container.""" - identifier: str - r"""An plugin identifier for the media container.""" - media_tag_prefix: str - r"""The prefix used for media tag resource paths.""" - media_tag_version: int - r"""The version number for media tags.""" - nocache: bool - r"""Specifies whether caching is disabled.""" - thumb: str - r"""URL for the thumbnail image of the media container.""" - title1: str - r"""The primary title of the media container.""" - title2: str - r"""The secondary title of the media container.""" - view_group: str - r"""Identifier for the view group layout.""" - view_mode: NotRequired[str] - r"""Identifier for the view mode.""" - directory: NotRequired[List[GetActorsLibraryDirectoryTypedDict]] - r"""An array of actor entries for media items.""" - - -class GetActorsLibraryMediaContainer(BaseModel): - size: int - r"""Number of media items returned in this response.""" - - allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] - r"""Indicates whether syncing is allowed.""" - - art: str - r"""URL for the background artwork of the media container.""" - - identifier: str - r"""An plugin identifier for the media container.""" - - media_tag_prefix: Annotated[str, pydantic.Field(alias="mediaTagPrefix")] - r"""The prefix used for media tag resource paths.""" - - media_tag_version: Annotated[int, pydantic.Field(alias="mediaTagVersion")] - r"""The version number for media tags.""" - - nocache: bool - r"""Specifies whether caching is disabled.""" - - thumb: str - r"""URL for the thumbnail image of the media container.""" - - title1: str - r"""The primary title of the media container.""" - - title2: str - r"""The secondary title of the media container.""" - - view_group: Annotated[str, pydantic.Field(alias="viewGroup")] - r"""Identifier for the view group layout.""" - - view_mode: Annotated[Optional[str], pydantic.Field(alias="viewMode")] = None - r"""Identifier for the view mode.""" - - directory: Annotated[ - Optional[List[GetActorsLibraryDirectory]], pydantic.Field(alias="Directory") - ] = None - r"""An array of actor entries for media items.""" - - -class GetActorsLibraryResponseBodyTypedDict(TypedDict): - r"""Successful response containing media container data.""" - - media_container: NotRequired[GetActorsLibraryMediaContainerTypedDict] - - -class GetActorsLibraryResponseBody(BaseModel): - r"""Successful response containing media container data.""" - - media_container: Annotated[ - Optional[GetActorsLibraryMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetActorsLibraryResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetActorsLibraryResponseBodyTypedDict] - r"""Successful response containing media container data.""" - - -class GetActorsLibraryResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetActorsLibraryResponseBody] = None - r"""Successful response containing media container data.""" diff --git a/src/plex_api_client/models/operations/get_all_libraries.py b/src/plex_api_client/models/operations/get_all_libraries.py deleted file mode 100644 index 878814b..0000000 --- a/src/plex_api_client/models/operations/get_all_libraries.py +++ /dev/null @@ -1,224 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import validate_open_enum -import pydantic -from pydantic.functional_validators import PlainValidator -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetAllLibrariesType(str, Enum, metaclass=utils.OpenEnumMeta): - r"""The library type""" - - MOVIE = "movie" - TV_SHOW = "show" - SEASON = "season" - EPISODE = "episode" - ARTIST = "artist" - ALBUM = "album" - TRACK = "track" - PHOTO_ALBUM = "photoalbum" - PHOTO = "photo" - COLLECTION = "collection" - - -class Hidden(int, Enum): - r"""The Plex library visibility setting""" - - VISIBLE = 0 - EXCLUDE_HOME_SCREEN = 1 - EXCLUDE_HOME_SCREEN_AND_GLOBAL_SEARCH = 2 - - -class GetAllLibrariesLocationTypedDict(TypedDict): - id: int - r"""The ID of the location.""" - path: str - r"""The path to the media item.""" - - -class GetAllLibrariesLocation(BaseModel): - id: int - r"""The ID of the location.""" - - path: str - r"""The path to the media item.""" - - -class GetAllLibrariesDirectoryTypedDict(TypedDict): - allow_sync: bool - r"""Indicates whether syncing is allowed.""" - art: str - r"""URL for the background artwork of the media container.""" - composite: str - r"""The relative path to the composite media item.""" - filters: bool - r"""UNKNOWN""" - refreshing: bool - r"""Indicates whether the library is currently being refreshed or updated""" - thumb: str - r"""URL for the thumbnail image of the media container.""" - key: str - r"""The library key representing the unique identifier""" - type: GetAllLibrariesType - title: str - r"""The title of the library""" - agent: str - r"""The Plex agent used to match and retrieve media metadata.""" - scanner: str - r"""UNKNOWN""" - language: str - r"""The Plex library language that has been set""" - uuid: str - r"""The universally unique identifier for the library.""" - updated_at: int - r"""Unix epoch datetime in seconds""" - scanned_at: int - r"""Unix epoch datetime in seconds""" - content: bool - r"""UNKNOWN""" - directory: bool - r"""UNKNOWN""" - content_changed_at: int - r"""Timestamp (in seconds) representing the last time the content was modified. - NOTE: Some Plex server have some absurd values for this field, like 8457612157633039800 so it should be int64 - - """ - location: List[GetAllLibrariesLocationTypedDict] - created_at: NotRequired[int] - hidden: NotRequired[Hidden] - r"""The Plex library visibility setting""" - - -class GetAllLibrariesDirectory(BaseModel): - allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] - r"""Indicates whether syncing is allowed.""" - - art: str - r"""URL for the background artwork of the media container.""" - - composite: str - r"""The relative path to the composite media item.""" - - filters: bool - r"""UNKNOWN""" - - refreshing: bool - r"""Indicates whether the library is currently being refreshed or updated""" - - thumb: str - r"""URL for the thumbnail image of the media container.""" - - key: str - r"""The library key representing the unique identifier""" - - type: Annotated[GetAllLibrariesType, PlainValidator(validate_open_enum(False))] - - title: str - r"""The title of the library""" - - agent: str - r"""The Plex agent used to match and retrieve media metadata.""" - - scanner: str - r"""UNKNOWN""" - - language: str - r"""The Plex library language that has been set""" - - uuid: str - r"""The universally unique identifier for the library.""" - - updated_at: Annotated[int, pydantic.Field(alias="updatedAt")] - r"""Unix epoch datetime in seconds""" - - scanned_at: Annotated[int, pydantic.Field(alias="scannedAt")] - r"""Unix epoch datetime in seconds""" - - content: bool - r"""UNKNOWN""" - - directory: bool - r"""UNKNOWN""" - - content_changed_at: Annotated[int, pydantic.Field(alias="contentChangedAt")] - r"""Timestamp (in seconds) representing the last time the content was modified. - NOTE: Some Plex server have some absurd values for this field, like 8457612157633039800 so it should be int64 - - """ - - location: Annotated[List[GetAllLibrariesLocation], pydantic.Field(alias="Location")] - - created_at: Annotated[Optional[int], pydantic.Field(alias="createdAt")] = None - - hidden: Optional[Hidden] = Hidden.VISIBLE - r"""The Plex library visibility setting""" - - -class GetAllLibrariesMediaContainerTypedDict(TypedDict): - size: int - r"""Number of media items returned in this response.""" - allow_sync: bool - r"""Indicates whether syncing is allowed.""" - title1: str - r"""The primary title of the media container.""" - directory: NotRequired[List[GetAllLibrariesDirectoryTypedDict]] - - -class GetAllLibrariesMediaContainer(BaseModel): - size: int - r"""Number of media items returned in this response.""" - - allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] - r"""Indicates whether syncing is allowed.""" - - title1: str - r"""The primary title of the media container.""" - - directory: Annotated[ - Optional[List[GetAllLibrariesDirectory]], pydantic.Field(alias="Directory") - ] = None - - -class GetAllLibrariesResponseBodyTypedDict(TypedDict): - r"""The libraries available on the Server""" - - media_container: NotRequired[GetAllLibrariesMediaContainerTypedDict] - - -class GetAllLibrariesResponseBody(BaseModel): - r"""The libraries available on the Server""" - - media_container: Annotated[ - Optional[GetAllLibrariesMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetAllLibrariesResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetAllLibrariesResponseBodyTypedDict] - r"""The libraries available on the Server""" - - -class GetAllLibrariesResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetAllLibrariesResponseBody] = None - r"""The libraries available on the Server""" diff --git a/src/plex_api_client/models/operations/get_banner_image.py b/src/plex_api_client/models/operations/get_banner_image.py deleted file mode 100644 index cad08c6..0000000 --- a/src/plex_api_client/models/operations/get_banner_image.py +++ /dev/null @@ -1,87 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import ( - FieldMetadata, - HeaderMetadata, - PathParamMetadata, - QueryParamMetadata, -) -import pydantic -from typing import Dict, List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetBannerImageRequestTypedDict(TypedDict): - rating_key: int - r"""the id of the library item to return the children of.""" - width: int - height: int - min_size: int - upscale: int - x_plex_token: str - r"""An authentication token, obtained from plex.tv""" - - -class GetBannerImageRequest(BaseModel): - rating_key: Annotated[ - int, - pydantic.Field(alias="ratingKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""the id of the library item to return the children of.""" - - width: Annotated[ - int, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - - height: Annotated[ - int, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - - min_size: Annotated[ - int, - pydantic.Field(alias="minSize"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - - upscale: Annotated[ - int, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - - x_plex_token: Annotated[ - str, - pydantic.Field(alias="X-Plex-Token"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] - r"""An authentication token, obtained from plex.tv""" - - -class GetBannerImageResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - headers: Dict[str, List[str]] - response_stream: NotRequired[httpx.Response] - r"""Successful response returning an image""" - - -class GetBannerImageResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - headers: Dict[str, List[str]] - - response_stream: Optional[httpx.Response] = None - r"""Successful response returning an image""" diff --git a/src/plex_api_client/models/operations/get_countries_library.py b/src/plex_api_client/models/operations/get_countries_library.py deleted file mode 100644 index f2a06a9..0000000 --- a/src/plex_api_client/models/operations/get_countries_library.py +++ /dev/null @@ -1,206 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import ( - FieldMetadata, - PathParamMetadata, - QueryParamMetadata, - validate_open_enum, -) -import pydantic -from pydantic.functional_validators import PlainValidator -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetCountriesLibraryQueryParamType(int, Enum, metaclass=utils.OpenEnumMeta): - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - MOVIE = 1 - TV_SHOW = 2 - SEASON = 3 - EPISODE = 4 - ARTIST = 5 - ALBUM = 6 - TRACK = 7 - PHOTO_ALBUM = 8 - PHOTO = 9 - - -class GetCountriesLibraryRequestTypedDict(TypedDict): - section_key: int - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - type: GetCountriesLibraryQueryParamType - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - -class GetCountriesLibraryRequest(BaseModel): - section_key: Annotated[ - int, - pydantic.Field(alias="sectionKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - - type: Annotated[ - Annotated[ - GetCountriesLibraryQueryParamType, PlainValidator(validate_open_enum(True)) - ], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - -class GetCountriesLibraryDirectoryTypedDict(TypedDict): - fast_key: str - key: str - title: str - - -class GetCountriesLibraryDirectory(BaseModel): - fast_key: Annotated[str, pydantic.Field(alias="fastKey")] - - key: str - - title: str - - -class GetCountriesLibraryMediaContainerTypedDict(TypedDict): - size: int - r"""Number of media items returned in this response.""" - allow_sync: bool - r"""Indicates whether syncing is allowed.""" - art: str - r"""URL for the background artwork of the media container.""" - content: str - r"""The content type or mode.""" - identifier: str - r"""An plugin identifier for the media container.""" - media_tag_prefix: str - r"""The prefix used for media tag resource paths.""" - media_tag_version: int - r"""The version number for media tags.""" - nocache: bool - r"""Specifies whether caching is disabled.""" - thumb: str - r"""URL for the thumbnail image of the media container.""" - title1: str - r"""The primary title of the media container.""" - title2: str - r"""The secondary title of the media container.""" - view_group: str - r"""Identifier for the view group layout.""" - directory: NotRequired[List[GetCountriesLibraryDirectoryTypedDict]] - - -class GetCountriesLibraryMediaContainer(BaseModel): - size: int - r"""Number of media items returned in this response.""" - - allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] - r"""Indicates whether syncing is allowed.""" - - art: str - r"""URL for the background artwork of the media container.""" - - content: str - r"""The content type or mode.""" - - identifier: str - r"""An plugin identifier for the media container.""" - - media_tag_prefix: Annotated[str, pydantic.Field(alias="mediaTagPrefix")] - r"""The prefix used for media tag resource paths.""" - - media_tag_version: Annotated[int, pydantic.Field(alias="mediaTagVersion")] - r"""The version number for media tags.""" - - nocache: bool - r"""Specifies whether caching is disabled.""" - - thumb: str - r"""URL for the thumbnail image of the media container.""" - - title1: str - r"""The primary title of the media container.""" - - title2: str - r"""The secondary title of the media container.""" - - view_group: Annotated[str, pydantic.Field(alias="viewGroup")] - r"""Identifier for the view group layout.""" - - directory: Annotated[ - Optional[List[GetCountriesLibraryDirectory]], pydantic.Field(alias="Directory") - ] = None - - -class GetCountriesLibraryResponseBodyTypedDict(TypedDict): - r"""Successful response containing media container data.""" - - media_container: NotRequired[GetCountriesLibraryMediaContainerTypedDict] - - -class GetCountriesLibraryResponseBody(BaseModel): - r"""Successful response containing media container data.""" - - media_container: Annotated[ - Optional[GetCountriesLibraryMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class GetCountriesLibraryResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetCountriesLibraryResponseBodyTypedDict] - r"""Successful response containing media container data.""" - - -class GetCountriesLibraryResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetCountriesLibraryResponseBody] = None - r"""Successful response containing media container data.""" diff --git a/src/plex_api_client/models/operations/get_genres_library.py b/src/plex_api_client/models/operations/get_genres_library.py deleted file mode 100644 index ef0755f..0000000 --- a/src/plex_api_client/models/operations/get_genres_library.py +++ /dev/null @@ -1,208 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import ( - FieldMetadata, - PathParamMetadata, - QueryParamMetadata, - validate_open_enum, -) -import pydantic -from pydantic.functional_validators import PlainValidator -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetGenresLibraryQueryParamType(int, Enum, metaclass=utils.OpenEnumMeta): - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - MOVIE = 1 - TV_SHOW = 2 - SEASON = 3 - EPISODE = 4 - ARTIST = 5 - ALBUM = 6 - TRACK = 7 - PHOTO_ALBUM = 8 - PHOTO = 9 - - -class GetGenresLibraryRequestTypedDict(TypedDict): - section_key: int - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - type: GetGenresLibraryQueryParamType - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - -class GetGenresLibraryRequest(BaseModel): - section_key: Annotated[ - int, - pydantic.Field(alias="sectionKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - - type: Annotated[ - Annotated[ - GetGenresLibraryQueryParamType, PlainValidator(validate_open_enum(True)) - ], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - -class GetGenresLibraryDirectoryTypedDict(TypedDict): - fast_key: str - key: str - title: str - type: str - - -class GetGenresLibraryDirectory(BaseModel): - fast_key: Annotated[str, pydantic.Field(alias="fastKey")] - - key: str - - title: str - - type: str - - -class GetGenresLibraryMediaContainerTypedDict(TypedDict): - size: int - r"""Number of media items returned in this response.""" - allow_sync: bool - r"""Indicates whether syncing is allowed.""" - art: str - r"""URL for the background artwork of the media container.""" - content: str - r"""The content type or mode.""" - identifier: str - r"""An plugin identifier for the media container.""" - media_tag_prefix: str - r"""The prefix used for media tag resource paths.""" - media_tag_version: int - r"""The version number for media tags.""" - nocache: bool - r"""Specifies whether caching is disabled.""" - thumb: str - r"""URL for the thumbnail image of the media container.""" - title1: str - r"""The primary title of the media container.""" - title2: str - r"""The secondary title of the media container.""" - view_group: str - r"""Identifier for the view group layout.""" - directory: NotRequired[List[GetGenresLibraryDirectoryTypedDict]] - - -class GetGenresLibraryMediaContainer(BaseModel): - size: int - r"""Number of media items returned in this response.""" - - allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] - r"""Indicates whether syncing is allowed.""" - - art: str - r"""URL for the background artwork of the media container.""" - - content: str - r"""The content type or mode.""" - - identifier: str - r"""An plugin identifier for the media container.""" - - media_tag_prefix: Annotated[str, pydantic.Field(alias="mediaTagPrefix")] - r"""The prefix used for media tag resource paths.""" - - media_tag_version: Annotated[int, pydantic.Field(alias="mediaTagVersion")] - r"""The version number for media tags.""" - - nocache: bool - r"""Specifies whether caching is disabled.""" - - thumb: str - r"""URL for the thumbnail image of the media container.""" - - title1: str - r"""The primary title of the media container.""" - - title2: str - r"""The secondary title of the media container.""" - - view_group: Annotated[str, pydantic.Field(alias="viewGroup")] - r"""Identifier for the view group layout.""" - - directory: Annotated[ - Optional[List[GetGenresLibraryDirectory]], pydantic.Field(alias="Directory") - ] = None - - -class GetGenresLibraryResponseBodyTypedDict(TypedDict): - r"""Successful response containing media container data.""" - - media_container: NotRequired[GetGenresLibraryMediaContainerTypedDict] - - -class GetGenresLibraryResponseBody(BaseModel): - r"""Successful response containing media container data.""" - - media_container: Annotated[ - Optional[GetGenresLibraryMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetGenresLibraryResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetGenresLibraryResponseBodyTypedDict] - r"""Successful response containing media container data.""" - - -class GetGenresLibraryResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetGenresLibraryResponseBody] = None - r"""Successful response containing media container data.""" diff --git a/src/plex_api_client/models/operations/get_library_details.py b/src/plex_api_client/models/operations/get_library_details.py deleted file mode 100644 index b169353..0000000 --- a/src/plex_api_client/models/operations/get_library_details.py +++ /dev/null @@ -1,297 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class IncludeDetails(int, Enum): - r"""Whether or not to include details for a section (types, filters, and sorts). - Only exists for backwards compatibility, media providers other than the server libraries have it on always. - - """ - - ZERO = 0 - ONE = 1 - - -class GetLibraryDetailsRequestTypedDict(TypedDict): - section_key: int - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - include_details: NotRequired[IncludeDetails] - r"""Whether or not to include details for a section (types, filters, and sorts). - Only exists for backwards compatibility, media providers other than the server libraries have it on always. - - """ - - -class GetLibraryDetailsRequest(BaseModel): - section_key: Annotated[ - int, - pydantic.Field(alias="sectionKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - - include_details: Annotated[ - Optional[IncludeDetails], - pydantic.Field(alias="includeDetails"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = IncludeDetails.ZERO - r"""Whether or not to include details for a section (types, filters, and sorts). - Only exists for backwards compatibility, media providers other than the server libraries have it on always. - - """ - - -class GetLibraryDetailsDirectoryTypedDict(TypedDict): - key: NotRequired[str] - title: NotRequired[str] - secondary: NotRequired[bool] - prompt: NotRequired[str] - search: NotRequired[bool] - - -class GetLibraryDetailsDirectory(BaseModel): - key: Optional[str] = None - - title: Optional[str] = None - - secondary: Optional[bool] = None - - prompt: Optional[str] = None - - search: Optional[bool] = None - - -class GetLibraryDetailsFilterTypedDict(TypedDict): - filter_: NotRequired[str] - filter_type: NotRequired[str] - key: NotRequired[str] - title: NotRequired[str] - type: NotRequired[str] - - -class GetLibraryDetailsFilter(BaseModel): - filter_: Annotated[Optional[str], pydantic.Field(alias="filter")] = None - - filter_type: Annotated[Optional[str], pydantic.Field(alias="filterType")] = None - - key: Optional[str] = None - - title: Optional[str] = None - - type: Optional[str] = None - - -class GetLibraryDetailsSortTypedDict(TypedDict): - default: NotRequired[str] - default_direction: NotRequired[str] - desc_key: NotRequired[str] - first_character_key: NotRequired[str] - key: NotRequired[str] - title: NotRequired[str] - - -class GetLibraryDetailsSort(BaseModel): - default: Optional[str] = None - - default_direction: Annotated[ - Optional[str], pydantic.Field(alias="defaultDirection") - ] = None - - desc_key: Annotated[Optional[str], pydantic.Field(alias="descKey")] = None - - first_character_key: Annotated[ - Optional[str], pydantic.Field(alias="firstCharacterKey") - ] = None - - key: Optional[str] = None - - title: Optional[str] = None - - -class GetLibraryDetailsFieldTypedDict(TypedDict): - key: NotRequired[str] - title: NotRequired[str] - type: NotRequired[str] - sub_type: NotRequired[str] - - -class GetLibraryDetailsField(BaseModel): - key: Optional[str] = None - - title: Optional[str] = None - - type: Optional[str] = None - - sub_type: Annotated[Optional[str], pydantic.Field(alias="subType")] = None - - -class GetLibraryDetailsTypeTypedDict(TypedDict): - key: NotRequired[str] - type: NotRequired[str] - title: NotRequired[str] - active: NotRequired[bool] - filter_: NotRequired[List[GetLibraryDetailsFilterTypedDict]] - sort: NotRequired[List[GetLibraryDetailsSortTypedDict]] - field: NotRequired[List[GetLibraryDetailsFieldTypedDict]] - - -class GetLibraryDetailsType(BaseModel): - key: Optional[str] = None - - type: Optional[str] = None - - title: Optional[str] = None - - active: Optional[bool] = None - - filter_: Annotated[ - Optional[List[GetLibraryDetailsFilter]], pydantic.Field(alias="Filter") - ] = None - - sort: Annotated[ - Optional[List[GetLibraryDetailsSort]], pydantic.Field(alias="Sort") - ] = None - - field: Annotated[ - Optional[List[GetLibraryDetailsField]], pydantic.Field(alias="Field") - ] = None - - -class GetLibraryDetailsOperatorTypedDict(TypedDict): - key: NotRequired[str] - title: NotRequired[str] - - -class GetLibraryDetailsOperator(BaseModel): - key: Optional[str] = None - - title: Optional[str] = None - - -class GetLibraryDetailsFieldTypeTypedDict(TypedDict): - type: NotRequired[str] - operator: NotRequired[List[GetLibraryDetailsOperatorTypedDict]] - - -class GetLibraryDetailsFieldType(BaseModel): - type: Optional[str] = None - - operator: Annotated[ - Optional[List[GetLibraryDetailsOperator]], pydantic.Field(alias="Operator") - ] = None - - -class GetLibraryDetailsMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - allow_sync: NotRequired[bool] - art: NotRequired[str] - content: NotRequired[str] - identifier: NotRequired[str] - library_section_id: NotRequired[int] - media_tag_prefix: NotRequired[str] - media_tag_version: NotRequired[int] - thumb: NotRequired[str] - title1: NotRequired[str] - view_group: NotRequired[str] - view_mode: NotRequired[int] - directory: NotRequired[List[GetLibraryDetailsDirectoryTypedDict]] - type: NotRequired[List[GetLibraryDetailsTypeTypedDict]] - field_type: NotRequired[List[GetLibraryDetailsFieldTypeTypedDict]] - - -class GetLibraryDetailsMediaContainer(BaseModel): - size: Optional[int] = None - - allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None - - art: Optional[str] = None - - content: Optional[str] = None - - identifier: Optional[str] = None - - library_section_id: Annotated[ - Optional[int], pydantic.Field(alias="librarySectionID") - ] = None - - media_tag_prefix: Annotated[ - Optional[str], pydantic.Field(alias="mediaTagPrefix") - ] = None - - media_tag_version: Annotated[ - Optional[int], pydantic.Field(alias="mediaTagVersion") - ] = None - - thumb: Optional[str] = None - - title1: Optional[str] = None - - view_group: Annotated[Optional[str], pydantic.Field(alias="viewGroup")] = None - - view_mode: Annotated[Optional[int], pydantic.Field(alias="viewMode")] = None - - directory: Annotated[ - Optional[List[GetLibraryDetailsDirectory]], pydantic.Field(alias="Directory") - ] = None - - type: Annotated[ - Optional[List[GetLibraryDetailsType]], pydantic.Field(alias="Type") - ] = None - - field_type: Annotated[ - Optional[List[GetLibraryDetailsFieldType]], pydantic.Field(alias="FieldType") - ] = None - - -class GetLibraryDetailsResponseBodyTypedDict(TypedDict): - r"""The details of the library""" - - media_container: NotRequired[GetLibraryDetailsMediaContainerTypedDict] - - -class GetLibraryDetailsResponseBody(BaseModel): - r"""The details of the library""" - - media_container: Annotated[ - Optional[GetLibraryDetailsMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class GetLibraryDetailsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetLibraryDetailsResponseBodyTypedDict] - r"""The details of the library""" - - -class GetLibraryDetailsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetLibraryDetailsResponseBody] = None - r"""The details of the library""" diff --git a/src/plex_api_client/models/operations/get_library_items.py b/src/plex_api_client/models/operations/get_library_items.py deleted file mode 100644 index 972d60a..0000000 --- a/src/plex_api_client/models/operations/get_library_items.py +++ /dev/null @@ -1,1631 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import date -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import ( - FieldMetadata, - PathParamMetadata, - QueryParamMetadata, - validate_open_enum, -) -import pydantic -from pydantic.functional_validators import PlainValidator -from typing import List, Optional, Union -from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict - - -class Tag(str, Enum, metaclass=utils.OpenEnumMeta): - r"""A key representing a specific tag within the section.""" - - UNWATCHED = "unwatched" - NEWEST = "newest" - RECENTLY_ADDED = "recentlyAdded" - RECENTLY_VIEWED = "recentlyViewed" - ON_DECK = "onDeck" - COLLECTION = "collection" - EDITION = "edition" - YEAR = "year" - DECADE = "decade" - DIRECTOR = "director" - CONTENT_RATING = "contentRating" - RATING = "rating" - RESOLUTION = "resolution" - FIRST_CHARACTER = "firstCharacter" - FOLDER = "folder" - ALBUMS = "albums" - - -class IncludeGuids(int, Enum): - r"""Adds the Guids object to the response""" - - DISABLE = 0 - ENABLE = 1 - - -class GetLibraryItemsQueryParamType(int, Enum, metaclass=utils.OpenEnumMeta): - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - MOVIE = 1 - TV_SHOW = 2 - SEASON = 3 - EPISODE = 4 - ARTIST = 5 - ALBUM = 6 - TRACK = 7 - PHOTO_ALBUM = 8 - PHOTO = 9 - - -class GetLibraryItemsQueryParamIncludeMeta(int, Enum): - r"""Adds the Meta object to the response""" - - DISABLE = 0 - ENABLE = 1 - - -class GetLibraryItemsRequestTypedDict(TypedDict): - tag: Tag - r"""A key representing a specific tag within the section.""" - type: GetLibraryItemsQueryParamType - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - section_key: int - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - include_guids: NotRequired[IncludeGuids] - r"""Adds the Guids object to the response - - """ - include_meta: NotRequired[GetLibraryItemsQueryParamIncludeMeta] - r"""Adds the Meta object to the response - - """ - x_plex_container_start: NotRequired[int] - r"""The index of the first item to return. If not specified, the first item will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 0 - - """ - x_plex_container_size: NotRequired[int] - r"""The number of items to return. If not specified, all items will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 50 - - """ - - -class GetLibraryItemsRequest(BaseModel): - tag: Annotated[ - Annotated[Tag, PlainValidator(validate_open_enum(False))], - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""A key representing a specific tag within the section.""" - - type: Annotated[ - Annotated[ - GetLibraryItemsQueryParamType, PlainValidator(validate_open_enum(True)) - ], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - section_key: Annotated[ - int, - pydantic.Field(alias="sectionKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - - include_guids: Annotated[ - Optional[IncludeGuids], - pydantic.Field(alias="includeGuids"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = IncludeGuids.DISABLE - r"""Adds the Guids object to the response - - """ - - include_meta: Annotated[ - Optional[GetLibraryItemsQueryParamIncludeMeta], - pydantic.Field(alias="includeMeta"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = GetLibraryItemsQueryParamIncludeMeta.DISABLE - r"""Adds the Meta object to the response - - """ - - x_plex_container_start: Annotated[ - Optional[int], - pydantic.Field(alias="X-Plex-Container-Start"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 0 - r"""The index of the first item to return. If not specified, the first item will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 0 - - """ - - x_plex_container_size: Annotated[ - Optional[int], - pydantic.Field(alias="X-Plex-Container-Size"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 50 - r"""The number of items to return. If not specified, all items will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 50 - - """ - - -class GetLibraryItemsType(str, Enum, metaclass=utils.OpenEnumMeta): - r"""The type of media content in the Plex library. This can represent videos, music, or photos.""" - - MOVIE = "movie" - TV_SHOW = "show" - SEASON = "season" - EPISODE = "episode" - ARTIST = "artist" - ALBUM = "album" - TRACK = "track" - PHOTO_ALBUM = "photoalbum" - PHOTO = "photo" - COLLECTION = "collection" - - -class GetLibraryItemsLibraryResponseType(str, Enum, metaclass=utils.OpenEnumMeta): - COVER_POSTER = "coverPoster" - BACKGROUND = "background" - SNAPSHOT = "snapshot" - CLEAR_LOGO = "clearLogo" - - -class GetLibraryItemsImageTypedDict(TypedDict): - alt: str - type: GetLibraryItemsLibraryResponseType - url: str - - -class GetLibraryItemsImage(BaseModel): - alt: str - - type: Annotated[ - GetLibraryItemsLibraryResponseType, PlainValidator(validate_open_enum(False)) - ] - - url: str - - -class GetLibraryItemsUltraBlurColorsTypedDict(TypedDict): - top_left: str - top_right: str - bottom_right: str - bottom_left: str - - -class GetLibraryItemsUltraBlurColors(BaseModel): - top_left: Annotated[str, pydantic.Field(alias="topLeft")] - - top_right: Annotated[str, pydantic.Field(alias="topRight")] - - bottom_right: Annotated[str, pydantic.Field(alias="bottomRight")] - - bottom_left: Annotated[str, pydantic.Field(alias="bottomLeft")] - - -class GetLibraryItemsGuidsTypedDict(TypedDict): - id: str - r"""The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// - - """ - - -class GetLibraryItemsGuids(BaseModel): - id: str - r"""The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// - - """ - - -class ShowOrdering(str, Enum, metaclass=utils.OpenEnumMeta): - r"""Setting that indicates the episode ordering for the show. - Options: - - None = Library default - - tmdbAiring = The Movie Database (Aired) - - aired = TheTVDB (Aired) - - dvd = TheTVDB (DVD) - - absolute = TheTVDB (Absolute) - - """ - - NONE = "None" - TMDB_AIRING = "tmdbAiring" - TVDB_AIRED = "aired" - TVDB_DVD = "dvd" - TVDB_ABSOLUTE = "absolute" - - -class FlattenSeasons(str, Enum, metaclass=utils.OpenEnumMeta): - r"""Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).""" - - LIBRARY_DEFAULT = "-1" - HIDE = "0" - SHOW = "1" - - -class OptimizedForStreaming1(int, Enum): - ZERO = 0 - ONE = 1 - - -GetLibraryItemsOptimizedForStreamingTypedDict = TypeAliasType( - "GetLibraryItemsOptimizedForStreamingTypedDict", Union[OptimizedForStreaming1, bool] -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - -GetLibraryItemsOptimizedForStreaming = TypeAliasType( - "GetLibraryItemsOptimizedForStreaming", Union[OptimizedForStreaming1, bool] -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - -class GetLibraryItemsOptimizedForStreaming1(int, Enum): - ZERO = 0 - ONE = 1 - - -GetLibraryItemsLibraryOptimizedForStreamingTypedDict = TypeAliasType( - "GetLibraryItemsLibraryOptimizedForStreamingTypedDict", - Union[GetLibraryItemsOptimizedForStreaming1, bool], -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - -""" - - -GetLibraryItemsLibraryOptimizedForStreaming = TypeAliasType( - "GetLibraryItemsLibraryOptimizedForStreaming", - Union[GetLibraryItemsOptimizedForStreaming1, bool], -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - -""" - - -class GetLibraryItemsHasThumbnail(str, Enum): - r"""Indicates if the part has a thumbnail.""" - - FALSE = "0" - TRUE = "1" - - -class GetLibraryItemsPartTypedDict(TypedDict): - id: int - r"""Unique part identifier.""" - accessible: NotRequired[bool] - r"""Indicates if the part is accessible.""" - exists: NotRequired[bool] - r"""Indicates if the part exists.""" - key: NotRequired[str] - r"""Key to access this part.""" - indexes: NotRequired[str] - duration: NotRequired[int] - r"""Duration of the part in milliseconds.""" - file: NotRequired[str] - r"""File path for the part.""" - size: NotRequired[int] - r"""File size in bytes.""" - packet_length: NotRequired[int] - container: NotRequired[str] - r"""Container format of the part.""" - video_profile: NotRequired[str] - r"""Video profile for the part.""" - audio_profile: NotRequired[str] - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - has64bit_offsets: NotRequired[bool] - optimized_for_streaming: NotRequired[ - GetLibraryItemsLibraryOptimizedForStreamingTypedDict - ] - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - """ - has_thumbnail: NotRequired[GetLibraryItemsHasThumbnail] - - -class GetLibraryItemsPart(BaseModel): - id: int - r"""Unique part identifier.""" - - accessible: Optional[bool] = None - r"""Indicates if the part is accessible.""" - - exists: Optional[bool] = None - r"""Indicates if the part exists.""" - - key: Optional[str] = None - r"""Key to access this part.""" - - indexes: Optional[str] = None - - duration: Optional[int] = None - r"""Duration of the part in milliseconds.""" - - file: Optional[str] = None - r"""File path for the part.""" - - size: Optional[int] = None - r"""File size in bytes.""" - - packet_length: Annotated[Optional[int], pydantic.Field(alias="packetLength")] = None - - container: Optional[str] = None - r"""Container format of the part.""" - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - r"""Video profile for the part.""" - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - optimized_for_streaming: Annotated[ - Optional[GetLibraryItemsLibraryOptimizedForStreaming], - pydantic.Field(alias="optimizedForStreaming"), - ] = None - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - """ - - has_thumbnail: Annotated[ - Optional[GetLibraryItemsHasThumbnail], pydantic.Field(alias="hasThumbnail") - ] = GetLibraryItemsHasThumbnail.FALSE - - -class GetLibraryItemsMediaTypedDict(TypedDict): - id: int - r"""Unique media identifier.""" - duration: NotRequired[int] - r"""Duration of the media in milliseconds.""" - bitrate: NotRequired[int] - r"""Bitrate in bits per second.""" - width: NotRequired[int] - r"""Video width in pixels.""" - height: NotRequired[int] - r"""Video height in pixels.""" - aspect_ratio: NotRequired[float] - r"""Aspect ratio of the video.""" - audio_channels: NotRequired[int] - r"""Number of audio channels.""" - display_offset: NotRequired[int] - audio_codec: NotRequired[str] - r"""Audio codec used.""" - video_codec: NotRequired[str] - r"""Video codec used.""" - video_resolution: NotRequired[str] - r"""Video resolution (e.g., 4k).""" - container: NotRequired[str] - r"""Container format of the media.""" - video_frame_rate: NotRequired[str] - r"""Frame rate of the video. Values found include NTSC, PAL, 24p - - """ - video_profile: NotRequired[str] - r"""Video profile (e.g., main 10).""" - has_voice_activity: NotRequired[bool] - r"""Indicates whether voice activity is detected.""" - audio_profile: NotRequired[str] - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - optimized_for_streaming: NotRequired[GetLibraryItemsOptimizedForStreamingTypedDict] - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - has64bit_offsets: NotRequired[bool] - r"""Indicates whether the media has 64-bit offsets. - This is relevant for media files that may require larger offsets than what 32-bit integers can provide. - - """ - part: NotRequired[List[GetLibraryItemsPartTypedDict]] - - -class GetLibraryItemsMedia(BaseModel): - id: int - r"""Unique media identifier.""" - - duration: Optional[int] = None - r"""Duration of the media in milliseconds.""" - - bitrate: Optional[int] = None - r"""Bitrate in bits per second.""" - - width: Optional[int] = None - r"""Video width in pixels.""" - - height: Optional[int] = None - r"""Video height in pixels.""" - - aspect_ratio: Annotated[Optional[float], pydantic.Field(alias="aspectRatio")] = None - r"""Aspect ratio of the video.""" - - audio_channels: Annotated[Optional[int], pydantic.Field(alias="audioChannels")] = ( - None - ) - r"""Number of audio channels.""" - - display_offset: Annotated[Optional[int], pydantic.Field(alias="displayOffset")] = ( - None - ) - - audio_codec: Annotated[Optional[str], pydantic.Field(alias="audioCodec")] = None - r"""Audio codec used.""" - - video_codec: Annotated[Optional[str], pydantic.Field(alias="videoCodec")] = None - r"""Video codec used.""" - - video_resolution: Annotated[ - Optional[str], pydantic.Field(alias="videoResolution") - ] = None - r"""Video resolution (e.g., 4k).""" - - container: Optional[str] = None - r"""Container format of the media.""" - - video_frame_rate: Annotated[ - Optional[str], pydantic.Field(alias="videoFrameRate") - ] = None - r"""Frame rate of the video. Values found include NTSC, PAL, 24p - - """ - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - r"""Video profile (e.g., main 10).""" - - has_voice_activity: Annotated[ - Optional[bool], pydantic.Field(alias="hasVoiceActivity") - ] = None - r"""Indicates whether voice activity is detected.""" - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - - optimized_for_streaming: Annotated[ - Optional[GetLibraryItemsOptimizedForStreaming], - pydantic.Field(alias="optimizedForStreaming"), - ] = None - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - r"""Indicates whether the media has 64-bit offsets. - This is relevant for media files that may require larger offsets than what 32-bit integers can provide. - - """ - - part: Annotated[ - Optional[List[GetLibraryItemsPart]], pydantic.Field(alias="Part") - ] = None - - -class GetLibraryItemsGenreTypedDict(TypedDict): - id: int - r"""The unique identifier for the genre. - NOTE: This is different for each Plex server and is not globally unique. - - """ - tag: str - r"""The genre name of this media-item - - """ - - -class GetLibraryItemsGenre(BaseModel): - id: int - r"""The unique identifier for the genre. - NOTE: This is different for each Plex server and is not globally unique. - - """ - - tag: str - r"""The genre name of this media-item - - """ - - -class GetLibraryItemsCountryTypedDict(TypedDict): - id: int - r"""The unique identifier for the country. - NOTE: This is different for each Plex server and is not globally unique. - - """ - tag: str - r"""The country of origin of this media item""" - - -class GetLibraryItemsCountry(BaseModel): - id: int - r"""The unique identifier for the country. - NOTE: This is different for each Plex server and is not globally unique. - - """ - - tag: str - r"""The country of origin of this media item""" - - -class GetLibraryItemsDirectorTypedDict(TypedDict): - id: int - r"""Unique identifier for the director.""" - tag: str - r"""The role of Director""" - thumb: NotRequired[str] - r"""The absolute URL of the thumbnail image for the director.""" - - -class GetLibraryItemsDirector(BaseModel): - id: int - r"""Unique identifier for the director.""" - - tag: str - r"""The role of Director""" - - thumb: Optional[str] = None - r"""The absolute URL of the thumbnail image for the director.""" - - -class GetLibraryItemsWriterTypedDict(TypedDict): - id: int - r"""Unique identifier for the writer.""" - tag: str - r"""The role of Writer""" - thumb: NotRequired[str] - r"""The absolute URL of the thumbnail image for the writer.""" - - -class GetLibraryItemsWriter(BaseModel): - id: int - r"""Unique identifier for the writer.""" - - tag: str - r"""The role of Writer""" - - thumb: Optional[str] = None - r"""The absolute URL of the thumbnail image for the writer.""" - - -class GetLibraryItemsProducerTypedDict(TypedDict): - id: int - r"""The unique role identifier.""" - filter_: str - r"""The filter string for the role.""" - tag: str - r"""The actor's name.""" - tag_key: str - r"""A key associated with the actor tag.""" - role: NotRequired[str] - r"""The character name or role.""" - thumb: NotRequired[str] - r"""URL for the role thumbnail image.""" - - -class GetLibraryItemsProducer(BaseModel): - id: int - r"""The unique role identifier.""" - - filter_: Annotated[str, pydantic.Field(alias="filter")] - r"""The filter string for the role.""" - - tag: str - r"""The actor's name.""" - - tag_key: Annotated[str, pydantic.Field(alias="tagKey")] - r"""A key associated with the actor tag.""" - - role: Optional[str] = None - r"""The character name or role.""" - - thumb: Optional[str] = None - r"""URL for the role thumbnail image.""" - - -class GetLibraryItemsCollectionTypedDict(TypedDict): - tag: str - r"""The user-made collection this media item belongs to""" - - -class GetLibraryItemsCollection(BaseModel): - tag: str - r"""The user-made collection this media item belongs to""" - - -class GetLibraryItemsRoleTypedDict(TypedDict): - id: int - r"""The unique identifier for the role. - NOTE: This is different for each Plex server and is not globally unique. - - """ - tag: str - r"""The display tag for the actor (typically the actor's name).""" - role: NotRequired[str] - r"""The role played by the actor in the media item.""" - thumb: NotRequired[str] - r"""The absolute URL of the thumbnail image for the actor.""" - - -class GetLibraryItemsRole(BaseModel): - id: int - r"""The unique identifier for the role. - NOTE: This is different for each Plex server and is not globally unique. - - """ - - tag: str - r"""The display tag for the actor (typically the actor's name).""" - - role: Optional[str] = None - r"""The role played by the actor in the media item.""" - - thumb: Optional[str] = None - r"""The absolute URL of the thumbnail image for the actor.""" - - -class RatingsTypedDict(TypedDict): - image: str - r"""The image or reference for the rating.""" - value: float - r"""The rating value.""" - type: str - r"""The type of rating (e.g., audience, critic).""" - - -class Ratings(BaseModel): - image: str - r"""The image or reference for the rating.""" - - value: float - r"""The rating value.""" - - type: str - r"""The type of rating (e.g., audience, critic).""" - - -class GetLibraryItemsSimilarTypedDict(TypedDict): - id: int - r"""The unique similar item identifier.""" - filter_: str - r"""The filter string for similar items.""" - tag: str - r"""The tag or title of the similar content.""" - - -class GetLibraryItemsSimilar(BaseModel): - id: int - r"""The unique similar item identifier.""" - - filter_: Annotated[str, pydantic.Field(alias="filter")] - r"""The filter string for similar items.""" - - tag: str - r"""The tag or title of the similar content.""" - - -class GetLibraryItemsLocationTypedDict(TypedDict): - r"""The folder path for the media item.""" - - path: str - - -class GetLibraryItemsLocation(BaseModel): - r"""The folder path for the media item.""" - - path: str - - -class ChapterTypedDict(TypedDict): - r"""The thumbnail for the chapter""" - - id: int - filter_: str - index: int - start_time_offset: int - end_time_offset: int - thumb: str - - -class Chapter(BaseModel): - r"""The thumbnail for the chapter""" - - id: int - - filter_: Annotated[str, pydantic.Field(alias="filter")] - - index: int - - start_time_offset: Annotated[int, pydantic.Field(alias="startTimeOffset")] - - end_time_offset: Annotated[int, pydantic.Field(alias="endTimeOffset")] - - thumb: str - - -class AttributesTypedDict(TypedDict): - r"""Attributes associated with the marker.""" - - id: int - r"""The identifier for the attributes.""" - version: NotRequired[int] - r"""The version number of the marker attributes.""" - - -class Attributes(BaseModel): - r"""Attributes associated with the marker.""" - - id: int - r"""The identifier for the attributes.""" - - version: Optional[int] = None - r"""The version number of the marker attributes.""" - - -class MarkerTypedDict(TypedDict): - r"""The final status of the marker""" - - id: int - type: str - start_time_offset: int - end_time_offset: int - final: NotRequired[bool] - attributes: NotRequired[AttributesTypedDict] - r"""Attributes associated with the marker.""" - - -class Marker(BaseModel): - r"""The final status of the marker""" - - id: int - - type: str - - start_time_offset: Annotated[int, pydantic.Field(alias="startTimeOffset")] - - end_time_offset: Annotated[int, pydantic.Field(alias="endTimeOffset")] - - final: Optional[bool] = None - - attributes: Annotated[Optional[Attributes], pydantic.Field(alias="Attributes")] = ( - None - ) - r"""Attributes associated with the marker.""" - - -class ExtrasTypedDict(TypedDict): - size: NotRequired[int] - r"""The size of the extras.""" - - -class Extras(BaseModel): - size: Optional[int] = None - r"""The size of the extras.""" - - -class GetLibraryItemsMetadataTypedDict(TypedDict): - r"""Unknown""" - - rating_key: str - r"""The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API.""" - key: str - r"""The unique key for the media item.""" - guid: str - r"""The globally unique identifier for the media item.""" - slug: str - r"""A URL‐friendly version of the media title.""" - type: GetLibraryItemsType - title: str - r"""The title of the media item.""" - banner: str - r"""The banner image URL for the media item.""" - title_sort: str - r"""The sort title used for ordering media items.""" - summary: str - r"""A synopsis of the media item.""" - rating: float - r"""The critic rating for the media item.""" - audience_rating: float - r"""The audience rating for the media item.""" - tagline: str - r"""A brief tagline for the media item.""" - thumb: str - r"""The thumbnail image URL for the media item.""" - art: str - r"""The art image URL for the media item.""" - theme: str - r"""The theme URL for the media item.""" - index: int - r"""The index position of the media item.""" - child_count: int - r"""The number of child items associated with this media item.""" - season_count: int - r"""The total number of seasons (for TV shows).""" - duration: int - r"""The duration of the media item in milliseconds.""" - added_at: int - studio: NotRequired[str] - r"""The studio that produced the media item.""" - content_rating: NotRequired[str] - r"""The content rating for the media item.""" - year: NotRequired[int] - r"""The release year of the media item.""" - leaf_count: NotRequired[int] - r"""The number of leaf items (end nodes) under this media item.""" - viewed_leaf_count: NotRequired[int] - r"""The number of leaf items that have been viewed.""" - originally_available_at: NotRequired[date] - r"""The original release date of the media item.""" - updated_at: NotRequired[int] - r"""Unix epoch datetime in seconds""" - audience_rating_image: NotRequired[str] - r"""The URL for the audience rating image.""" - chapter_source: NotRequired[str] - r"""The source from which chapter data is derived.""" - primary_extra_key: NotRequired[str] - r"""The primary extra key associated with this media item.""" - original_title: NotRequired[str] - r"""The original title of the media item (if different).""" - parent_rating_key: NotRequired[str] - r"""The rating key of the parent media item.""" - grandparent_rating_key: NotRequired[str] - r"""The rating key of the grandparent media item.""" - parent_guid: NotRequired[str] - r"""The GUID of the parent media item.""" - grandparent_guid: NotRequired[str] - r"""The GUID of the grandparent media item.""" - grandparent_slug: NotRequired[str] - r"""The slug for the grandparent media item.""" - grandparent_key: NotRequired[str] - r"""The key of the grandparent media item.""" - parent_key: NotRequired[str] - r"""The key of the parent media item.""" - grandparent_title: NotRequired[str] - r"""The title of the grandparent media item.""" - grandparent_thumb: NotRequired[str] - r"""The thumbnail URL for the grandparent media item.""" - grandparent_theme: NotRequired[str] - r"""The theme URL for the grandparent media item.""" - grandparent_art: NotRequired[str] - r"""The art URL for the grandparent media item.""" - parent_title: NotRequired[str] - r"""The title of the parent media item.""" - parent_index: NotRequired[int] - r"""The index position of the parent media item.""" - parent_thumb: NotRequired[str] - r"""The thumbnail URL for the parent media item.""" - rating_image: NotRequired[str] - r"""The URL for the rating image.""" - view_count: NotRequired[int] - r"""The number of times this media item has been viewed.""" - view_offset: NotRequired[int] - r"""The current playback offset (in milliseconds).""" - skip_count: NotRequired[int] - r"""The number of times this media item has been skipped.""" - subtype: NotRequired[str] - r"""A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip.""" - last_rated_at: NotRequired[int] - r"""The Unix timestamp representing the last time the item was rated.""" - created_at_accuracy: NotRequired[str] - r"""The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available).""" - created_at_tz_offset: NotRequired[str] - r"""The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC.""" - last_viewed_at: NotRequired[int] - r"""Unix timestamp for when the media item was last viewed.""" - user_rating: NotRequired[float] - r"""The rating provided by a user for the item. This value is expressed as a decimal number.""" - image: NotRequired[List[GetLibraryItemsImageTypedDict]] - ultra_blur_colors: NotRequired[GetLibraryItemsUltraBlurColorsTypedDict] - guids: NotRequired[List[GetLibraryItemsGuidsTypedDict]] - library_section_id: NotRequired[int] - r"""The identifier for the library section.""" - library_section_title: NotRequired[str] - r"""The title of the library section.""" - library_section_key: NotRequired[str] - r"""The key corresponding to the library section.""" - show_ordering: NotRequired[ShowOrdering] - r"""Setting that indicates the episode ordering for the show. - Options: - - None = Library default - - tmdbAiring = The Movie Database (Aired) - - aired = TheTVDB (Aired) - - dvd = TheTVDB (DVD) - - absolute = TheTVDB (Absolute) - - """ - flatten_seasons: NotRequired[FlattenSeasons] - r"""Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). - - """ - skip_children: NotRequired[bool] - r"""Indicates whether child items should be skipped.""" - media: NotRequired[List[GetLibraryItemsMediaTypedDict]] - genre: NotRequired[List[GetLibraryItemsGenreTypedDict]] - country: NotRequired[List[GetLibraryItemsCountryTypedDict]] - director: NotRequired[List[GetLibraryItemsDirectorTypedDict]] - writer: NotRequired[List[GetLibraryItemsWriterTypedDict]] - producer: NotRequired[List[GetLibraryItemsProducerTypedDict]] - collection: NotRequired[List[GetLibraryItemsCollectionTypedDict]] - role: NotRequired[List[GetLibraryItemsRoleTypedDict]] - ratings: NotRequired[List[RatingsTypedDict]] - similar: NotRequired[List[GetLibraryItemsSimilarTypedDict]] - location: NotRequired[List[GetLibraryItemsLocationTypedDict]] - chapter: NotRequired[List[ChapterTypedDict]] - marker: NotRequired[List[MarkerTypedDict]] - extras: NotRequired[ExtrasTypedDict] - - -class GetLibraryItemsMetadata(BaseModel): - r"""Unknown""" - - rating_key: Annotated[str, pydantic.Field(alias="ratingKey")] - r"""The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API.""" - - key: str - r"""The unique key for the media item.""" - - guid: str - r"""The globally unique identifier for the media item.""" - - slug: str - r"""A URL‐friendly version of the media title.""" - - type: Annotated[GetLibraryItemsType, PlainValidator(validate_open_enum(False))] - - title: str - r"""The title of the media item.""" - - banner: str - r"""The banner image URL for the media item.""" - - title_sort: Annotated[str, pydantic.Field(alias="titleSort")] - r"""The sort title used for ordering media items.""" - - summary: str - r"""A synopsis of the media item.""" - - rating: float - r"""The critic rating for the media item.""" - - audience_rating: Annotated[float, pydantic.Field(alias="audienceRating")] - r"""The audience rating for the media item.""" - - tagline: str - r"""A brief tagline for the media item.""" - - thumb: str - r"""The thumbnail image URL for the media item.""" - - art: str - r"""The art image URL for the media item.""" - - theme: str - r"""The theme URL for the media item.""" - - index: int - r"""The index position of the media item.""" - - child_count: Annotated[int, pydantic.Field(alias="childCount")] - r"""The number of child items associated with this media item.""" - - season_count: Annotated[int, pydantic.Field(alias="seasonCount")] - r"""The total number of seasons (for TV shows).""" - - duration: int - r"""The duration of the media item in milliseconds.""" - - added_at: Annotated[int, pydantic.Field(alias="addedAt")] - - studio: Optional[str] = None - r"""The studio that produced the media item.""" - - content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( - None - ) - r"""The content rating for the media item.""" - - year: Optional[int] = None - r"""The release year of the media item.""" - - leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None - r"""The number of leaf items (end nodes) under this media item.""" - - viewed_leaf_count: Annotated[ - Optional[int], pydantic.Field(alias="viewedLeafCount") - ] = None - r"""The number of leaf items that have been viewed.""" - - originally_available_at: Annotated[ - Optional[date], pydantic.Field(alias="originallyAvailableAt") - ] = None - r"""The original release date of the media item.""" - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - r"""Unix epoch datetime in seconds""" - - audience_rating_image: Annotated[ - Optional[str], pydantic.Field(alias="audienceRatingImage") - ] = None - r"""The URL for the audience rating image.""" - - chapter_source: Annotated[Optional[str], pydantic.Field(alias="chapterSource")] = ( - None - ) - r"""The source from which chapter data is derived.""" - - primary_extra_key: Annotated[ - Optional[str], pydantic.Field(alias="primaryExtraKey") - ] = None - r"""The primary extra key associated with this media item.""" - - original_title: Annotated[Optional[str], pydantic.Field(alias="originalTitle")] = ( - None - ) - r"""The original title of the media item (if different).""" - - parent_rating_key: Annotated[ - Optional[str], pydantic.Field(alias="parentRatingKey") - ] = None - r"""The rating key of the parent media item.""" - - grandparent_rating_key: Annotated[ - Optional[str], pydantic.Field(alias="grandparentRatingKey") - ] = None - r"""The rating key of the grandparent media item.""" - - parent_guid: Annotated[Optional[str], pydantic.Field(alias="parentGuid")] = None - r"""The GUID of the parent media item.""" - - grandparent_guid: Annotated[ - Optional[str], pydantic.Field(alias="grandparentGuid") - ] = None - r"""The GUID of the grandparent media item.""" - - grandparent_slug: Annotated[ - Optional[str], pydantic.Field(alias="grandparentSlug") - ] = None - r"""The slug for the grandparent media item.""" - - grandparent_key: Annotated[ - Optional[str], pydantic.Field(alias="grandparentKey") - ] = None - r"""The key of the grandparent media item.""" - - parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None - r"""The key of the parent media item.""" - - grandparent_title: Annotated[ - Optional[str], pydantic.Field(alias="grandparentTitle") - ] = None - r"""The title of the grandparent media item.""" - - grandparent_thumb: Annotated[ - Optional[str], pydantic.Field(alias="grandparentThumb") - ] = None - r"""The thumbnail URL for the grandparent media item.""" - - grandparent_theme: Annotated[ - Optional[str], pydantic.Field(alias="grandparentTheme") - ] = None - r"""The theme URL for the grandparent media item.""" - - grandparent_art: Annotated[ - Optional[str], pydantic.Field(alias="grandparentArt") - ] = None - r"""The art URL for the grandparent media item.""" - - parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None - r"""The title of the parent media item.""" - - parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None - r"""The index position of the parent media item.""" - - parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None - r"""The thumbnail URL for the parent media item.""" - - rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None - r"""The URL for the rating image.""" - - view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None - r"""The number of times this media item has been viewed.""" - - view_offset: Annotated[Optional[int], pydantic.Field(alias="viewOffset")] = None - r"""The current playback offset (in milliseconds).""" - - skip_count: Annotated[Optional[int], pydantic.Field(alias="skipCount")] = None - r"""The number of times this media item has been skipped.""" - - subtype: Optional[str] = None - r"""A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip.""" - - last_rated_at: Annotated[Optional[int], pydantic.Field(alias="lastRatedAt")] = None - r"""The Unix timestamp representing the last time the item was rated.""" - - created_at_accuracy: Annotated[ - Optional[str], pydantic.Field(alias="createdAtAccuracy") - ] = None - r"""The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available).""" - - created_at_tz_offset: Annotated[ - Optional[str], pydantic.Field(alias="createdAtTZOffset") - ] = None - r"""The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC.""" - - last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( - None - ) - r"""Unix timestamp for when the media item was last viewed.""" - - user_rating: Annotated[Optional[float], pydantic.Field(alias="userRating")] = None - r"""The rating provided by a user for the item. This value is expressed as a decimal number.""" - - image: Annotated[ - Optional[List[GetLibraryItemsImage]], pydantic.Field(alias="Image") - ] = None - - ultra_blur_colors: Annotated[ - Optional[GetLibraryItemsUltraBlurColors], - pydantic.Field(alias="UltraBlurColors"), - ] = None - - guids: Annotated[ - Optional[List[GetLibraryItemsGuids]], pydantic.Field(alias="Guid") - ] = None - - library_section_id: Annotated[ - Optional[int], pydantic.Field(alias="librarySectionID") - ] = None - r"""The identifier for the library section.""" - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - r"""The title of the library section.""" - - library_section_key: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionKey") - ] = None - r"""The key corresponding to the library section.""" - - show_ordering: Annotated[ - Annotated[Optional[ShowOrdering], PlainValidator(validate_open_enum(False))], - pydantic.Field(alias="showOrdering"), - ] = None - r"""Setting that indicates the episode ordering for the show. - Options: - - None = Library default - - tmdbAiring = The Movie Database (Aired) - - aired = TheTVDB (Aired) - - dvd = TheTVDB (DVD) - - absolute = TheTVDB (Absolute) - - """ - - flatten_seasons: Annotated[ - Annotated[Optional[FlattenSeasons], PlainValidator(validate_open_enum(False))], - pydantic.Field(alias="flattenSeasons"), - ] = None - r"""Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). - - """ - - skip_children: Annotated[Optional[bool], pydantic.Field(alias="skipChildren")] = ( - None - ) - r"""Indicates whether child items should be skipped.""" - - media: Annotated[ - Optional[List[GetLibraryItemsMedia]], pydantic.Field(alias="Media") - ] = None - - genre: Annotated[ - Optional[List[GetLibraryItemsGenre]], pydantic.Field(alias="Genre") - ] = None - - country: Annotated[ - Optional[List[GetLibraryItemsCountry]], pydantic.Field(alias="Country") - ] = None - - director: Annotated[ - Optional[List[GetLibraryItemsDirector]], pydantic.Field(alias="Director") - ] = None - - writer: Annotated[ - Optional[List[GetLibraryItemsWriter]], pydantic.Field(alias="Writer") - ] = None - - producer: Annotated[ - Optional[List[GetLibraryItemsProducer]], pydantic.Field(alias="Producer") - ] = None - - collection: Annotated[ - Optional[List[GetLibraryItemsCollection]], pydantic.Field(alias="Collection") - ] = None - - role: Annotated[ - Optional[List[GetLibraryItemsRole]], pydantic.Field(alias="Role") - ] = None - - ratings: Annotated[Optional[List[Ratings]], pydantic.Field(alias="Rating")] = None - - similar: Annotated[ - Optional[List[GetLibraryItemsSimilar]], pydantic.Field(alias="Similar") - ] = None - - location: Annotated[ - Optional[List[GetLibraryItemsLocation]], pydantic.Field(alias="Location") - ] = None - - chapter: Annotated[Optional[List[Chapter]], pydantic.Field(alias="Chapter")] = None - - marker: Annotated[Optional[List[Marker]], pydantic.Field(alias="Marker")] = None - - extras: Annotated[Optional[Extras], pydantic.Field(alias="Extras")] = None - - -class GetLibraryItemsFilterTypedDict(TypedDict): - filter_: str - filter_type: str - key: str - title: str - type: str - - -class GetLibraryItemsFilter(BaseModel): - filter_: Annotated[str, pydantic.Field(alias="filter")] - - filter_type: Annotated[str, pydantic.Field(alias="filterType")] - - key: str - - title: str - - type: str - - -class GetLibraryItemsActiveDirection(str, Enum): - r"""The direction of the sort. Can be either `asc` or `desc`.""" - - ASCENDING = "asc" - DESCENDING = "desc" - - -class GetLibraryItemsDefaultDirection(str, Enum): - r"""The direction of the sort. Can be either `asc` or `desc`.""" - - ASCENDING = "asc" - DESCENDING = "desc" - - -class GetLibraryItemsSortTypedDict(TypedDict): - key: str - title: str - default: NotRequired[str] - active: NotRequired[bool] - active_direction: NotRequired[GetLibraryItemsActiveDirection] - r"""The direction of the sort. Can be either `asc` or `desc`. - - """ - default_direction: NotRequired[GetLibraryItemsDefaultDirection] - r"""The direction of the sort. Can be either `asc` or `desc`. - - """ - desc_key: NotRequired[str] - first_character_key: NotRequired[str] - - -class GetLibraryItemsSort(BaseModel): - key: str - - title: str - - default: Optional[str] = None - - active: Optional[bool] = None - - active_direction: Annotated[ - Optional[GetLibraryItemsActiveDirection], - pydantic.Field(alias="activeDirection"), - ] = GetLibraryItemsActiveDirection.ASCENDING - r"""The direction of the sort. Can be either `asc` or `desc`. - - """ - - default_direction: Annotated[ - Optional[GetLibraryItemsDefaultDirection], - pydantic.Field(alias="defaultDirection"), - ] = GetLibraryItemsDefaultDirection.ASCENDING - r"""The direction of the sort. Can be either `asc` or `desc`. - - """ - - desc_key: Annotated[Optional[str], pydantic.Field(alias="descKey")] = None - - first_character_key: Annotated[ - Optional[str], pydantic.Field(alias="firstCharacterKey") - ] = None - - -class GetLibraryItemsFieldTypedDict(TypedDict): - key: str - title: str - type: str - sub_type: NotRequired[str] - - -class GetLibraryItemsField(BaseModel): - key: str - - title: str - - type: str - - sub_type: Annotated[Optional[str], pydantic.Field(alias="subType")] = None - - -class GetLibraryItemsLibraryTypeTypedDict(TypedDict): - key: str - type: str - title: str - active: bool - filter_: NotRequired[List[GetLibraryItemsFilterTypedDict]] - sort: NotRequired[List[GetLibraryItemsSortTypedDict]] - field: NotRequired[List[GetLibraryItemsFieldTypedDict]] - - -class GetLibraryItemsLibraryType(BaseModel): - key: str - - type: str - - title: str - - active: bool - - filter_: Annotated[ - Optional[List[GetLibraryItemsFilter]], pydantic.Field(alias="Filter") - ] = None - - sort: Annotated[ - Optional[List[GetLibraryItemsSort]], pydantic.Field(alias="Sort") - ] = None - - field: Annotated[ - Optional[List[GetLibraryItemsField]], pydantic.Field(alias="Field") - ] = None - - -class GetLibraryItemsOperatorTypedDict(TypedDict): - key: str - title: str - - -class GetLibraryItemsOperator(BaseModel): - key: str - - title: str - - -class GetLibraryItemsFieldTypeTypedDict(TypedDict): - type: str - operator: List[GetLibraryItemsOperatorTypedDict] - - -class GetLibraryItemsFieldType(BaseModel): - type: str - - operator: Annotated[List[GetLibraryItemsOperator], pydantic.Field(alias="Operator")] - - -class GetLibraryItemsMetaTypedDict(TypedDict): - r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" - - type: NotRequired[List[GetLibraryItemsLibraryTypeTypedDict]] - field_type: NotRequired[List[GetLibraryItemsFieldTypeTypedDict]] - - -class GetLibraryItemsMeta(BaseModel): - r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" - - type: Annotated[ - Optional[List[GetLibraryItemsLibraryType]], pydantic.Field(alias="Type") - ] = None - - field_type: Annotated[ - Optional[List[GetLibraryItemsFieldType]], pydantic.Field(alias="FieldType") - ] = None - - -class GetLibraryItemsMediaContainerTypedDict(TypedDict): - size: int - r"""Number of media items returned in this response.""" - total_size: int - r"""Total number of media items in the library.""" - offset: int - r"""Offset value for pagination.""" - content: str - r"""The content type or mode.""" - allow_sync: bool - r"""Indicates whether syncing is allowed.""" - nocache: bool - r"""Specifies whether caching is disabled.""" - art: str - r"""URL for the background artwork of the media container.""" - identifier: str - r"""An plugin identifier for the media container.""" - media_tag_prefix: str - r"""The prefix used for media tag resource paths.""" - media_tag_version: int - r"""The version number for media tags.""" - thumb: str - r"""URL for the thumbnail image of the media container.""" - title1: str - r"""The primary title of the media container.""" - title2: str - r"""The secondary title of the media container.""" - view_group: str - r"""Identifier for the view group layout.""" - metadata: List[GetLibraryItemsMetadataTypedDict] - r"""An array of metadata items.""" - library_section_id: NotRequired[int] - r"""The unique identifier for the library section.""" - library_section_title: NotRequired[str] - r"""The title of the library section.""" - library_section_uuid: NotRequired[str] - r"""The universally unique identifier for the library section.""" - view_mode: NotRequired[str] - r"""Identifier for the view mode.""" - mixed_parents: NotRequired[bool] - r"""Indicates if the media container has mixed parents.""" - meta: NotRequired[GetLibraryItemsMetaTypedDict] - r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. - - """ - - -class GetLibraryItemsMediaContainer(BaseModel): - size: int - r"""Number of media items returned in this response.""" - - total_size: Annotated[int, pydantic.Field(alias="totalSize")] - r"""Total number of media items in the library.""" - - offset: int - r"""Offset value for pagination.""" - - content: str - r"""The content type or mode.""" - - allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] - r"""Indicates whether syncing is allowed.""" - - nocache: bool - r"""Specifies whether caching is disabled.""" - - art: str - r"""URL for the background artwork of the media container.""" - - identifier: str - r"""An plugin identifier for the media container.""" - - media_tag_prefix: Annotated[str, pydantic.Field(alias="mediaTagPrefix")] - r"""The prefix used for media tag resource paths.""" - - media_tag_version: Annotated[int, pydantic.Field(alias="mediaTagVersion")] - r"""The version number for media tags.""" - - thumb: str - r"""URL for the thumbnail image of the media container.""" - - title1: str - r"""The primary title of the media container.""" - - title2: str - r"""The secondary title of the media container.""" - - view_group: Annotated[str, pydantic.Field(alias="viewGroup")] - r"""Identifier for the view group layout.""" - - metadata: Annotated[List[GetLibraryItemsMetadata], pydantic.Field(alias="Metadata")] - r"""An array of metadata items.""" - - library_section_id: Annotated[ - Optional[int], pydantic.Field(alias="librarySectionID") - ] = None - r"""The unique identifier for the library section.""" - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - r"""The title of the library section.""" - - library_section_uuid: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionUUID") - ] = None - r"""The universally unique identifier for the library section.""" - - view_mode: Annotated[Optional[str], pydantic.Field(alias="viewMode")] = None - r"""Identifier for the view mode.""" - - mixed_parents: Annotated[Optional[bool], pydantic.Field(alias="mixedParents")] = ( - None - ) - r"""Indicates if the media container has mixed parents.""" - - meta: Annotated[Optional[GetLibraryItemsMeta], pydantic.Field(alias="Meta")] = None - r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. - - """ - - -class GetLibraryItemsResponseBodyTypedDict(TypedDict): - r"""The contents of the library by section and tag""" - - media_container: NotRequired[GetLibraryItemsMediaContainerTypedDict] - - -class GetLibraryItemsResponseBody(BaseModel): - r"""The contents of the library by section and tag""" - - media_container: Annotated[ - Optional[GetLibraryItemsMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetLibraryItemsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetLibraryItemsResponseBodyTypedDict] - r"""The contents of the library by section and tag""" - - -class GetLibraryItemsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetLibraryItemsResponseBody] = None - r"""The contents of the library by section and tag""" diff --git a/src/plex_api_client/models/operations/get_library_sections_all.py b/src/plex_api_client/models/operations/get_library_sections_all.py deleted file mode 100644 index 022f9e9..0000000 --- a/src/plex_api_client/models/operations/get_library_sections_all.py +++ /dev/null @@ -1,1574 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import date -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import ( - FieldMetadata, - PathParamMetadata, - QueryParamMetadata, - validate_const, - validate_open_enum, -) -import pydantic -from pydantic.functional_validators import AfterValidator, PlainValidator -from typing import List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict - - -class GetLibrarySectionsAllQueryParamType(int, Enum, metaclass=utils.OpenEnumMeta): - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - MOVIE = 1 - TV_SHOW = 2 - SEASON = 3 - EPISODE = 4 - ARTIST = 5 - ALBUM = 6 - TRACK = 7 - PHOTO_ALBUM = 8 - PHOTO = 9 - - -class GetLibrarySectionsAllQueryParamIncludeMeta(int, Enum): - r"""Adds the Meta object to the response""" - - DISABLE = 0 - ENABLE = 1 - - -class QueryParamIncludeGuids(int, Enum): - r"""Adds the Guid object to the response""" - - DISABLE = 0 - ENABLE = 1 - - -class IncludeAdvanced(int, Enum): - DISABLE = 0 - ENABLE = 1 - - -class QueryParamIncludeCollections(int, Enum): - DISABLE = 0 - ENABLE = 1 - - -class QueryParamIncludeExternalMedia(int, Enum): - DISABLE = 0 - ENABLE = 1 - - -class GetLibrarySectionsAllRequestTypedDict(TypedDict): - section_key: int - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - type: GetLibrarySectionsAllQueryParamType - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - include_meta: NotRequired[GetLibrarySectionsAllQueryParamIncludeMeta] - r"""Adds the Meta object to the response - - """ - include_guids: NotRequired[QueryParamIncludeGuids] - r"""Adds the Guid object to the response - - """ - include_advanced: NotRequired[IncludeAdvanced] - include_collections: NotRequired[QueryParamIncludeCollections] - include_external_media: NotRequired[QueryParamIncludeExternalMedia] - x_plex_container_start: NotRequired[int] - r"""The index of the first item to return. If not specified, the first item will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 0 - - """ - x_plex_container_size: NotRequired[int] - r"""The number of items to return. If not specified, all items will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 50 - - """ - - -class GetLibrarySectionsAllRequest(BaseModel): - section_key: Annotated[ - int, - pydantic.Field(alias="sectionKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - - type: Annotated[ - Annotated[ - GetLibrarySectionsAllQueryParamType, - PlainValidator(validate_open_enum(True)), - ], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - include_meta: Annotated[ - Optional[GetLibrarySectionsAllQueryParamIncludeMeta], - pydantic.Field(alias="includeMeta"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = GetLibrarySectionsAllQueryParamIncludeMeta.DISABLE - r"""Adds the Meta object to the response - - """ - - include_guids: Annotated[ - Optional[QueryParamIncludeGuids], - pydantic.Field(alias="includeGuids"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = QueryParamIncludeGuids.DISABLE - r"""Adds the Guid object to the response - - """ - - include_advanced: Annotated[ - Optional[IncludeAdvanced], - pydantic.Field(alias="includeAdvanced"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = IncludeAdvanced.DISABLE - - include_collections: Annotated[ - Optional[QueryParamIncludeCollections], - pydantic.Field(alias="includeCollections"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = QueryParamIncludeCollections.DISABLE - - include_external_media: Annotated[ - Optional[QueryParamIncludeExternalMedia], - pydantic.Field(alias="includeExternalMedia"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = QueryParamIncludeExternalMedia.DISABLE - - x_plex_container_start: Annotated[ - Optional[int], - pydantic.Field(alias="X-Plex-Container-Start"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 0 - r"""The index of the first item to return. If not specified, the first item will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 0 - - """ - - x_plex_container_size: Annotated[ - Optional[int], - pydantic.Field(alias="X-Plex-Container-Size"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 50 - r"""The number of items to return. If not specified, all items will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 50 - - """ - - -class GetLibrarySectionsAllFilterTypedDict(TypedDict): - filter_: str - filter_type: str - key: str - title: str - type: str - advanced: NotRequired[bool] - - -class GetLibrarySectionsAllFilter(BaseModel): - filter_: Annotated[str, pydantic.Field(alias="filter")] - - filter_type: Annotated[str, pydantic.Field(alias="filterType")] - - key: str - - title: str - - type: str - - advanced: Optional[bool] = None - - -class GetLibrarySectionsAllActiveDirection(str, Enum): - r"""The direction of the sort. Can be either `asc` or `desc`.""" - - ASCENDING = "asc" - DESCENDING = "desc" - - -class GetLibrarySectionsAllDefaultDirection(str, Enum): - r"""The direction of the sort. Can be either `asc` or `desc`.""" - - ASCENDING = "asc" - DESCENDING = "desc" - - -class GetLibrarySectionsAllSortTypedDict(TypedDict): - key: str - title: str - default: NotRequired[str] - active: NotRequired[bool] - active_direction: NotRequired[GetLibrarySectionsAllActiveDirection] - r"""The direction of the sort. Can be either `asc` or `desc`. - - """ - default_direction: NotRequired[GetLibrarySectionsAllDefaultDirection] - r"""The direction of the sort. Can be either `asc` or `desc`. - - """ - desc_key: NotRequired[str] - first_character_key: NotRequired[str] - - -class GetLibrarySectionsAllSort(BaseModel): - key: str - - title: str - - default: Optional[str] = None - - active: Optional[bool] = None - - active_direction: Annotated[ - Optional[GetLibrarySectionsAllActiveDirection], - pydantic.Field(alias="activeDirection"), - ] = GetLibrarySectionsAllActiveDirection.ASCENDING - r"""The direction of the sort. Can be either `asc` or `desc`. - - """ - - default_direction: Annotated[ - Optional[GetLibrarySectionsAllDefaultDirection], - pydantic.Field(alias="defaultDirection"), - ] = GetLibrarySectionsAllDefaultDirection.ASCENDING - r"""The direction of the sort. Can be either `asc` or `desc`. - - """ - - desc_key: Annotated[Optional[str], pydantic.Field(alias="descKey")] = None - - first_character_key: Annotated[ - Optional[str], pydantic.Field(alias="firstCharacterKey") - ] = None - - -class GetLibrarySectionsAllFieldTypedDict(TypedDict): - key: str - title: str - type: str - sub_type: NotRequired[str] - - -class GetLibrarySectionsAllField(BaseModel): - key: str - - title: str - - type: str - - sub_type: Annotated[Optional[str], pydantic.Field(alias="subType")] = None - - -class GetLibrarySectionsAllTypeTypedDict(TypedDict): - key: str - type: str - title: str - active: bool - subtype: NotRequired[str] - filter_: NotRequired[List[GetLibrarySectionsAllFilterTypedDict]] - sort: NotRequired[List[GetLibrarySectionsAllSortTypedDict]] - field: NotRequired[List[GetLibrarySectionsAllFieldTypedDict]] - - -class GetLibrarySectionsAllType(BaseModel): - key: str - - type: str - - title: str - - active: bool - - subtype: Optional[str] = None - - filter_: Annotated[ - Optional[List[GetLibrarySectionsAllFilter]], pydantic.Field(alias="Filter") - ] = None - - sort: Annotated[ - Optional[List[GetLibrarySectionsAllSort]], pydantic.Field(alias="Sort") - ] = None - - field: Annotated[ - Optional[List[GetLibrarySectionsAllField]], pydantic.Field(alias="Field") - ] = None - - -class GetLibrarySectionsAllOperatorTypedDict(TypedDict): - key: str - title: str - - -class GetLibrarySectionsAllOperator(BaseModel): - key: str - - title: str - - -class GetLibrarySectionsAllFieldTypeTypedDict(TypedDict): - type: str - operator: List[GetLibrarySectionsAllOperatorTypedDict] - - -class GetLibrarySectionsAllFieldType(BaseModel): - type: str - - operator: Annotated[ - List[GetLibrarySectionsAllOperator], pydantic.Field(alias="Operator") - ] - - -class GetLibrarySectionsAllMetaTypedDict(TypedDict): - r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" - - type: NotRequired[List[GetLibrarySectionsAllTypeTypedDict]] - field_type: NotRequired[List[GetLibrarySectionsAllFieldTypeTypedDict]] - - -class GetLibrarySectionsAllMeta(BaseModel): - r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" - - type: Annotated[ - Optional[List[GetLibrarySectionsAllType]], pydantic.Field(alias="Type") - ] = None - - field_type: Annotated[ - Optional[List[GetLibrarySectionsAllFieldType]], - pydantic.Field(alias="FieldType"), - ] = None - - -class GetLibrarySectionsAllLibraryType(str, Enum, metaclass=utils.OpenEnumMeta): - r"""The type of media content in the Plex library. This can represent videos, music, or photos.""" - - MOVIE = "movie" - TV_SHOW = "show" - SEASON = "season" - EPISODE = "episode" - ARTIST = "artist" - ALBUM = "album" - TRACK = "track" - PHOTO_ALBUM = "photoalbum" - PHOTO = "photo" - COLLECTION = "collection" - - -class GetLibrarySectionsAllLibraryResponseType(str, Enum, metaclass=utils.OpenEnumMeta): - COVER_POSTER = "coverPoster" - BACKGROUND = "background" - SNAPSHOT = "snapshot" - CLEAR_LOGO = "clearLogo" - - -class GetLibrarySectionsAllImageTypedDict(TypedDict): - alt: str - type: GetLibrarySectionsAllLibraryResponseType - url: str - - -class GetLibrarySectionsAllImage(BaseModel): - alt: str - - type: Annotated[ - GetLibrarySectionsAllLibraryResponseType, - PlainValidator(validate_open_enum(False)), - ] - - url: str - - -class GetLibrarySectionsAllUltraBlurColorsTypedDict(TypedDict): - top_left: str - top_right: str - bottom_right: str - bottom_left: str - - -class GetLibrarySectionsAllUltraBlurColors(BaseModel): - top_left: Annotated[str, pydantic.Field(alias="topLeft")] - - top_right: Annotated[str, pydantic.Field(alias="topRight")] - - bottom_right: Annotated[str, pydantic.Field(alias="bottomRight")] - - bottom_left: Annotated[str, pydantic.Field(alias="bottomLeft")] - - -class GetLibrarySectionsAllGuidsTypedDict(TypedDict): - id: str - r"""The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// - - """ - - -class GetLibrarySectionsAllGuids(BaseModel): - id: str - r"""The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// - - """ - - -class GetLibrarySectionsAllOptimizedForStreaming1(int, Enum): - ZERO = 0 - ONE = 1 - - -GetLibrarySectionsAllOptimizedForStreamingTypedDict = TypeAliasType( - "GetLibrarySectionsAllOptimizedForStreamingTypedDict", - Union[GetLibrarySectionsAllOptimizedForStreaming1, bool], -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - -GetLibrarySectionsAllOptimizedForStreaming = TypeAliasType( - "GetLibrarySectionsAllOptimizedForStreaming", - Union[GetLibrarySectionsAllOptimizedForStreaming1, bool], -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - -class GetLibrarySectionsAllOptimizedForStreamingLibrary1(int, Enum): - ZERO = 0 - ONE = 1 - - -GetLibrarySectionsAllLibraryOptimizedForStreamingTypedDict = TypeAliasType( - "GetLibrarySectionsAllLibraryOptimizedForStreamingTypedDict", - Union[GetLibrarySectionsAllOptimizedForStreamingLibrary1, bool], -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - -GetLibrarySectionsAllLibraryOptimizedForStreaming = TypeAliasType( - "GetLibrarySectionsAllLibraryOptimizedForStreaming", - Union[GetLibrarySectionsAllOptimizedForStreamingLibrary1, bool], -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - -class GetLibrarySectionsAllHasThumbnail(str, Enum): - r"""Indicates if the part has a thumbnail.""" - - FALSE = "0" - TRUE = "1" - - -class GetLibrarySectionsAllStreamTypedDict(TypedDict): - id: int - r"""Unique stream identifier.""" - codec: str - r"""Codec used by the stream.""" - display_title: str - r"""Display title for the stream.""" - extended_display_title: str - r"""Extended display title for the stream.""" - stream_type: Literal[1] - r"""Stream type: - - VIDEO = 1 - - AUDIO = 2 - - SUBTITLE = 3 - - """ - format_: NotRequired[str] - r"""Format of the stream (e.g., srt).""" - default: NotRequired[bool] - r"""Indicates if this stream is default.""" - index: NotRequired[int] - r"""Index of the stream.""" - bitrate: NotRequired[int] - r"""Bitrate of the stream.""" - language: NotRequired[str] - r"""Language of the stream.""" - language_tag: NotRequired[str] - r"""Language tag (e.g., en).""" - language_code: NotRequired[str] - r"""ISO language code.""" - header_compression: NotRequired[bool] - r"""Indicates whether header compression is enabled.""" - dovibl_compat_id: NotRequired[int] - r"""Dolby Vision BL compatibility ID.""" - dovibl_present: NotRequired[bool] - r"""Indicates if Dolby Vision BL is present.""" - doviel_present: NotRequired[bool] - r"""Indicates if Dolby Vision EL is present.""" - dovi_level: NotRequired[int] - r"""Dolby Vision level.""" - dovi_present: NotRequired[bool] - r"""Indicates if Dolby Vision is present.""" - dovi_profile: NotRequired[int] - r"""Dolby Vision profile.""" - dovirpu_present: NotRequired[bool] - r"""Indicates if Dolby Vision RPU is present.""" - dovi_version: NotRequired[str] - r"""Dolby Vision version.""" - bit_depth: NotRequired[int] - r"""Bit depth of the video stream.""" - chroma_location: NotRequired[str] - r"""Chroma sample location.""" - chroma_subsampling: NotRequired[str] - r"""Chroma subsampling format.""" - coded_height: NotRequired[int] - r"""Coded video height.""" - coded_width: NotRequired[int] - r"""Coded video width.""" - closed_captions: NotRequired[bool] - color_primaries: NotRequired[str] - r"""Color primaries used.""" - color_range: NotRequired[str] - r"""Color range (e.g., tv).""" - color_space: NotRequired[str] - r"""Color space.""" - color_trc: NotRequired[str] - r"""Color transfer characteristics.""" - frame_rate: NotRequired[float] - r"""Frame rate of the stream.""" - key: NotRequired[str] - r"""Key to access this stream part.""" - height: NotRequired[int] - r"""Height of the video stream.""" - level: NotRequired[int] - r"""Video level.""" - original: NotRequired[bool] - r"""Indicates if this is the original stream.""" - has_scaling_matrix: NotRequired[bool] - profile: NotRequired[str] - r"""Video profile.""" - scan_type: NotRequired[str] - embedded_in_video: NotRequired[str] - ref_frames: NotRequired[int] - r"""Number of reference frames.""" - width: NotRequired[int] - r"""Width of the video stream.""" - selected: NotRequired[bool] - r"""Indicates if this stream is selected (applicable for audio streams).""" - forced: NotRequired[bool] - channels: NotRequired[int] - r"""Number of audio channels (for audio streams).""" - audio_channel_layout: NotRequired[str] - r"""Audio channel layout.""" - sampling_rate: NotRequired[int] - r"""Sampling rate for the audio stream.""" - can_auto_sync: NotRequired[bool] - r"""Indicates if the stream can auto-sync.""" - hearing_impaired: NotRequired[bool] - r"""Indicates if the stream is for the hearing impaired.""" - dub: NotRequired[bool] - r"""Indicates if the stream is a dub.""" - title: NotRequired[str] - r"""Optional title for the stream (e.g., language variant).""" - - -class GetLibrarySectionsAllStream(BaseModel): - id: int - r"""Unique stream identifier.""" - - codec: str - r"""Codec used by the stream.""" - - display_title: Annotated[str, pydantic.Field(alias="displayTitle")] - r"""Display title for the stream.""" - - extended_display_title: Annotated[str, pydantic.Field(alias="extendedDisplayTitle")] - r"""Extended display title for the stream.""" - - STREAM_TYPE: Annotated[ - Annotated[Literal[1], AfterValidator(validate_const(1))], - pydantic.Field(alias="streamType"), - ] = 1 - r"""Stream type: - - VIDEO = 1 - - AUDIO = 2 - - SUBTITLE = 3 - - """ - - format_: Annotated[Optional[str], pydantic.Field(alias="format")] = None - r"""Format of the stream (e.g., srt).""" - - default: Optional[bool] = None - r"""Indicates if this stream is default.""" - - index: Optional[int] = None - r"""Index of the stream.""" - - bitrate: Optional[int] = None - r"""Bitrate of the stream.""" - - language: Optional[str] = None - r"""Language of the stream.""" - - language_tag: Annotated[Optional[str], pydantic.Field(alias="languageTag")] = None - r"""Language tag (e.g., en).""" - - language_code: Annotated[Optional[str], pydantic.Field(alias="languageCode")] = None - r"""ISO language code.""" - - header_compression: Annotated[ - Optional[bool], pydantic.Field(alias="headerCompression") - ] = None - r"""Indicates whether header compression is enabled.""" - - dovibl_compat_id: Annotated[ - Optional[int], pydantic.Field(alias="DOVIBLCompatID") - ] = None - r"""Dolby Vision BL compatibility ID.""" - - dovibl_present: Annotated[Optional[bool], pydantic.Field(alias="DOVIBLPresent")] = ( - None - ) - r"""Indicates if Dolby Vision BL is present.""" - - doviel_present: Annotated[Optional[bool], pydantic.Field(alias="DOVIELPresent")] = ( - None - ) - r"""Indicates if Dolby Vision EL is present.""" - - dovi_level: Annotated[Optional[int], pydantic.Field(alias="DOVILevel")] = None - r"""Dolby Vision level.""" - - dovi_present: Annotated[Optional[bool], pydantic.Field(alias="DOVIPresent")] = None - r"""Indicates if Dolby Vision is present.""" - - dovi_profile: Annotated[Optional[int], pydantic.Field(alias="DOVIProfile")] = None - r"""Dolby Vision profile.""" - - dovirpu_present: Annotated[ - Optional[bool], pydantic.Field(alias="DOVIRPUPresent") - ] = None - r"""Indicates if Dolby Vision RPU is present.""" - - dovi_version: Annotated[Optional[str], pydantic.Field(alias="DOVIVersion")] = None - r"""Dolby Vision version.""" - - bit_depth: Annotated[Optional[int], pydantic.Field(alias="bitDepth")] = None - r"""Bit depth of the video stream.""" - - chroma_location: Annotated[ - Optional[str], pydantic.Field(alias="chromaLocation") - ] = None - r"""Chroma sample location.""" - - chroma_subsampling: Annotated[ - Optional[str], pydantic.Field(alias="chromaSubsampling") - ] = None - r"""Chroma subsampling format.""" - - coded_height: Annotated[Optional[int], pydantic.Field(alias="codedHeight")] = None - r"""Coded video height.""" - - coded_width: Annotated[Optional[int], pydantic.Field(alias="codedWidth")] = None - r"""Coded video width.""" - - closed_captions: Annotated[ - Optional[bool], pydantic.Field(alias="closedCaptions") - ] = None - - color_primaries: Annotated[ - Optional[str], pydantic.Field(alias="colorPrimaries") - ] = None - r"""Color primaries used.""" - - color_range: Annotated[Optional[str], pydantic.Field(alias="colorRange")] = None - r"""Color range (e.g., tv).""" - - color_space: Annotated[Optional[str], pydantic.Field(alias="colorSpace")] = None - r"""Color space.""" - - color_trc: Annotated[Optional[str], pydantic.Field(alias="colorTrc")] = None - r"""Color transfer characteristics.""" - - frame_rate: Annotated[Optional[float], pydantic.Field(alias="frameRate")] = None - r"""Frame rate of the stream.""" - - key: Optional[str] = None - r"""Key to access this stream part.""" - - height: Optional[int] = None - r"""Height of the video stream.""" - - level: Optional[int] = None - r"""Video level.""" - - original: Optional[bool] = None - r"""Indicates if this is the original stream.""" - - has_scaling_matrix: Annotated[ - Optional[bool], pydantic.Field(alias="hasScalingMatrix") - ] = None - - profile: Optional[str] = None - r"""Video profile.""" - - scan_type: Annotated[Optional[str], pydantic.Field(alias="scanType")] = None - - embedded_in_video: Annotated[ - Optional[str], pydantic.Field(alias="embeddedInVideo") - ] = None - - ref_frames: Annotated[Optional[int], pydantic.Field(alias="refFrames")] = None - r"""Number of reference frames.""" - - width: Optional[int] = None - r"""Width of the video stream.""" - - selected: Optional[bool] = None - r"""Indicates if this stream is selected (applicable for audio streams).""" - - forced: Optional[bool] = None - - channels: Optional[int] = None - r"""Number of audio channels (for audio streams).""" - - audio_channel_layout: Annotated[ - Optional[str], pydantic.Field(alias="audioChannelLayout") - ] = None - r"""Audio channel layout.""" - - sampling_rate: Annotated[Optional[int], pydantic.Field(alias="samplingRate")] = None - r"""Sampling rate for the audio stream.""" - - can_auto_sync: Annotated[Optional[bool], pydantic.Field(alias="canAutoSync")] = None - r"""Indicates if the stream can auto-sync.""" - - hearing_impaired: Annotated[ - Optional[bool], pydantic.Field(alias="hearingImpaired") - ] = None - r"""Indicates if the stream is for the hearing impaired.""" - - dub: Optional[bool] = None - r"""Indicates if the stream is a dub.""" - - title: Optional[str] = None - r"""Optional title for the stream (e.g., language variant).""" - - -class GetLibrarySectionsAllPartTypedDict(TypedDict): - id: int - r"""Unique part identifier.""" - key: str - r"""Key to access this part.""" - file: str - r"""File path for the part.""" - size: int - r"""File size in bytes.""" - accessible: NotRequired[bool] - r"""Indicates if the part is accessible.""" - exists: NotRequired[bool] - r"""Indicates if the part exists.""" - indexes: NotRequired[str] - duration: NotRequired[int] - r"""Duration of the part in milliseconds.""" - packet_length: NotRequired[int] - container: NotRequired[str] - r"""Container format of the part.""" - video_profile: NotRequired[str] - r"""Video profile for the part.""" - audio_profile: NotRequired[str] - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - has64bit_offsets: NotRequired[bool] - optimized_for_streaming: NotRequired[ - GetLibrarySectionsAllLibraryOptimizedForStreamingTypedDict - ] - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - has_thumbnail: NotRequired[GetLibrarySectionsAllHasThumbnail] - stream: NotRequired[List[GetLibrarySectionsAllStreamTypedDict]] - r"""An array of streams for this part.""" - - -class GetLibrarySectionsAllPart(BaseModel): - id: int - r"""Unique part identifier.""" - - key: str - r"""Key to access this part.""" - - file: str - r"""File path for the part.""" - - size: int - r"""File size in bytes.""" - - accessible: Optional[bool] = None - r"""Indicates if the part is accessible.""" - - exists: Optional[bool] = None - r"""Indicates if the part exists.""" - - indexes: Optional[str] = None - - duration: Optional[int] = None - r"""Duration of the part in milliseconds.""" - - packet_length: Annotated[Optional[int], pydantic.Field(alias="packetLength")] = None - - container: Optional[str] = None - r"""Container format of the part.""" - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - r"""Video profile for the part.""" - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - optimized_for_streaming: Annotated[ - Optional[GetLibrarySectionsAllLibraryOptimizedForStreaming], - pydantic.Field(alias="optimizedForStreaming"), - ] = None - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - has_thumbnail: Annotated[ - Optional[GetLibrarySectionsAllHasThumbnail], - pydantic.Field(alias="hasThumbnail"), - ] = GetLibrarySectionsAllHasThumbnail.FALSE - - stream: Annotated[ - Optional[List[GetLibrarySectionsAllStream]], pydantic.Field(alias="Stream") - ] = None - r"""An array of streams for this part.""" - - -class GetLibrarySectionsAllMediaTypedDict(TypedDict): - id: int - r"""Unique media identifier.""" - duration: NotRequired[int] - r"""Duration of the media in milliseconds.""" - bitrate: NotRequired[int] - r"""Bitrate in bits per second.""" - width: NotRequired[int] - r"""Video width in pixels.""" - height: NotRequired[int] - r"""Video height in pixels.""" - aspect_ratio: NotRequired[float] - r"""Aspect ratio of the video.""" - audio_channels: NotRequired[int] - r"""Number of audio channels.""" - display_offset: NotRequired[int] - audio_codec: NotRequired[str] - r"""Audio codec used.""" - video_codec: NotRequired[str] - r"""Video codec used.""" - video_resolution: NotRequired[str] - r"""Video resolution (e.g., 4k).""" - container: NotRequired[str] - r"""File container type.""" - video_frame_rate: NotRequired[str] - r"""Frame rate of the video. Values found include NTSC, PAL, 24p - - """ - video_profile: NotRequired[str] - r"""Video profile (e.g., main 10).""" - has_voice_activity: NotRequired[bool] - r"""Indicates whether voice activity is detected.""" - audio_profile: NotRequired[str] - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - optimized_for_streaming: NotRequired[ - GetLibrarySectionsAllOptimizedForStreamingTypedDict - ] - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - has64bit_offsets: NotRequired[bool] - part: NotRequired[List[GetLibrarySectionsAllPartTypedDict]] - r"""An array of parts for this media item.""" - - -class GetLibrarySectionsAllMedia(BaseModel): - id: int - r"""Unique media identifier.""" - - duration: Optional[int] = None - r"""Duration of the media in milliseconds.""" - - bitrate: Optional[int] = None - r"""Bitrate in bits per second.""" - - width: Optional[int] = None - r"""Video width in pixels.""" - - height: Optional[int] = None - r"""Video height in pixels.""" - - aspect_ratio: Annotated[Optional[float], pydantic.Field(alias="aspectRatio")] = None - r"""Aspect ratio of the video.""" - - audio_channels: Annotated[Optional[int], pydantic.Field(alias="audioChannels")] = ( - None - ) - r"""Number of audio channels.""" - - display_offset: Annotated[Optional[int], pydantic.Field(alias="displayOffset")] = ( - None - ) - - audio_codec: Annotated[Optional[str], pydantic.Field(alias="audioCodec")] = None - r"""Audio codec used.""" - - video_codec: Annotated[Optional[str], pydantic.Field(alias="videoCodec")] = None - r"""Video codec used.""" - - video_resolution: Annotated[ - Optional[str], pydantic.Field(alias="videoResolution") - ] = None - r"""Video resolution (e.g., 4k).""" - - container: Optional[str] = None - r"""File container type.""" - - video_frame_rate: Annotated[ - Optional[str], pydantic.Field(alias="videoFrameRate") - ] = None - r"""Frame rate of the video. Values found include NTSC, PAL, 24p - - """ - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - r"""Video profile (e.g., main 10).""" - - has_voice_activity: Annotated[ - Optional[bool], pydantic.Field(alias="hasVoiceActivity") - ] = None - r"""Indicates whether voice activity is detected.""" - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - - optimized_for_streaming: Annotated[ - Optional[GetLibrarySectionsAllOptimizedForStreaming], - pydantic.Field(alias="optimizedForStreaming"), - ] = None - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - part: Annotated[ - Optional[List[GetLibrarySectionsAllPart]], pydantic.Field(alias="Part") - ] = None - r"""An array of parts for this media item.""" - - -class GetLibrarySectionsAllGenreTypedDict(TypedDict): - tag: str - r"""The genre name of this media-item - - """ - - -class GetLibrarySectionsAllGenre(BaseModel): - tag: str - r"""The genre name of this media-item - - """ - - -class GetLibrarySectionsAllCountryTypedDict(TypedDict): - tag: str - r"""The country of origin of this media item""" - - -class GetLibrarySectionsAllCountry(BaseModel): - tag: str - r"""The country of origin of this media item""" - - -class GetLibrarySectionsAllDirectorTypedDict(TypedDict): - tag: str - r"""The role of Director""" - - -class GetLibrarySectionsAllDirector(BaseModel): - tag: str - r"""The role of Director""" - - -class GetLibrarySectionsAllWriterTypedDict(TypedDict): - tag: str - r"""The role of Writer""" - - -class GetLibrarySectionsAllWriter(BaseModel): - tag: str - r"""The role of Writer""" - - -class GetLibrarySectionsAllRoleTypedDict(TypedDict): - tag: str - r"""The display tag for the actor (typically the actor's name).""" - - -class GetLibrarySectionsAllRole(BaseModel): - tag: str - r"""The display tag for the actor (typically the actor's name).""" - - -class GetLibrarySectionsAllCollectionTypedDict(TypedDict): - tag: str - r"""The user-made collection this media item belongs to""" - - -class GetLibrarySectionsAllCollection(BaseModel): - tag: str - r"""The user-made collection this media item belongs to""" - - -class GetLibrarySectionsAllMetadataTypedDict(TypedDict): - r"""Unknown""" - - rating_key: str - r"""The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API.""" - key: str - r"""The unique key for the media item.""" - guid: str - r"""The globally unique identifier for the media item.""" - slug: str - r"""A URL‐friendly version of the media title.""" - type: GetLibrarySectionsAllLibraryType - title: str - r"""The title of the media item.""" - title_sort: str - r"""The sort title used for ordering media items.""" - summary: str - r"""A synopsis of the media item.""" - rating: float - r"""The critic rating for the media item.""" - audience_rating: float - r"""The audience rating for the media item.""" - tagline: str - r"""A brief tagline for the media item.""" - thumb: str - r"""The thumbnail image URL for the media item.""" - art: str - r"""The art image URL for the media item.""" - theme: str - r"""The theme URL for the media item.""" - index: int - r"""The index position of the media item.""" - child_count: int - r"""The number of child items associated with this media item.""" - season_count: int - r"""The total number of seasons (for TV shows).""" - duration: int - r"""The duration of the media item in milliseconds.""" - added_at: int - studio: NotRequired[str] - r"""The studio that produced the media item.""" - content_rating: NotRequired[str] - r"""The content rating for the media item.""" - year: NotRequired[int] - r"""The release year of the media item.""" - leaf_count: NotRequired[int] - r"""The number of leaf items (end nodes) under this media item.""" - viewed_leaf_count: NotRequired[int] - r"""The number of leaf items that have been viewed.""" - originally_available_at: NotRequired[date] - r"""The original release date of the media item.""" - updated_at: NotRequired[int] - r"""Unix epoch datetime in seconds""" - audience_rating_image: NotRequired[str] - r"""The URL for the audience rating image.""" - chapter_source: NotRequired[str] - r"""The source from which chapter data is derived.""" - primary_extra_key: NotRequired[str] - r"""The primary extra key associated with this media item.""" - original_title: NotRequired[str] - r"""The original title of the media item (if different).""" - parent_rating_key: NotRequired[str] - r"""The rating key of the parent media item.""" - grandparent_rating_key: NotRequired[str] - r"""The rating key of the grandparent media item.""" - parent_guid: NotRequired[str] - r"""The GUID of the parent media item.""" - grandparent_guid: NotRequired[str] - r"""The GUID of the grandparent media item.""" - grandparent_slug: NotRequired[str] - r"""The slug for the grandparent media item.""" - grandparent_key: NotRequired[str] - r"""The key of the grandparent media item.""" - parent_key: NotRequired[str] - r"""The key of the parent media item.""" - grandparent_title: NotRequired[str] - r"""The title of the grandparent media item.""" - grandparent_thumb: NotRequired[str] - r"""The thumbnail URL for the grandparent media item.""" - grandparent_theme: NotRequired[str] - r"""The theme URL for the grandparent media item.""" - grandparent_art: NotRequired[str] - r"""The art URL for the grandparent media item.""" - parent_title: NotRequired[str] - r"""The title of the parent media item.""" - parent_index: NotRequired[int] - r"""The index position of the parent media item.""" - parent_thumb: NotRequired[str] - r"""The thumbnail URL for the parent media item.""" - rating_image: NotRequired[str] - r"""The URL for the rating image.""" - view_count: NotRequired[int] - r"""The number of times this media item has been viewed.""" - view_offset: NotRequired[int] - r"""The current playback offset (in milliseconds).""" - skip_count: NotRequired[int] - r"""The number of times this media item has been skipped.""" - subtype: NotRequired[str] - r"""A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip.""" - last_rated_at: NotRequired[int] - r"""The Unix timestamp representing the last time the item was rated.""" - created_at_accuracy: NotRequired[str] - r"""The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available).""" - created_at_tz_offset: NotRequired[str] - r"""The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC.""" - last_viewed_at: NotRequired[int] - r"""Unix timestamp for when the media item was last viewed.""" - user_rating: NotRequired[float] - r"""The rating provided by a user for the item. This value is expressed as a decimal number.""" - image: NotRequired[List[GetLibrarySectionsAllImageTypedDict]] - ultra_blur_colors: NotRequired[GetLibrarySectionsAllUltraBlurColorsTypedDict] - guids: NotRequired[List[GetLibrarySectionsAllGuidsTypedDict]] - media: NotRequired[List[GetLibrarySectionsAllMediaTypedDict]] - genre: NotRequired[List[GetLibrarySectionsAllGenreTypedDict]] - country: NotRequired[List[GetLibrarySectionsAllCountryTypedDict]] - director: NotRequired[List[GetLibrarySectionsAllDirectorTypedDict]] - writer: NotRequired[List[GetLibrarySectionsAllWriterTypedDict]] - role: NotRequired[List[GetLibrarySectionsAllRoleTypedDict]] - collection: NotRequired[List[GetLibrarySectionsAllCollectionTypedDict]] - - -class GetLibrarySectionsAllMetadata(BaseModel): - r"""Unknown""" - - rating_key: Annotated[str, pydantic.Field(alias="ratingKey")] - r"""The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API.""" - - key: str - r"""The unique key for the media item.""" - - guid: str - r"""The globally unique identifier for the media item.""" - - slug: str - r"""A URL‐friendly version of the media title.""" - - type: Annotated[ - GetLibrarySectionsAllLibraryType, PlainValidator(validate_open_enum(False)) - ] - - title: str - r"""The title of the media item.""" - - title_sort: Annotated[str, pydantic.Field(alias="titleSort")] - r"""The sort title used for ordering media items.""" - - summary: str - r"""A synopsis of the media item.""" - - rating: float - r"""The critic rating for the media item.""" - - audience_rating: Annotated[float, pydantic.Field(alias="audienceRating")] - r"""The audience rating for the media item.""" - - tagline: str - r"""A brief tagline for the media item.""" - - thumb: str - r"""The thumbnail image URL for the media item.""" - - art: str - r"""The art image URL for the media item.""" - - theme: str - r"""The theme URL for the media item.""" - - index: int - r"""The index position of the media item.""" - - child_count: Annotated[int, pydantic.Field(alias="childCount")] - r"""The number of child items associated with this media item.""" - - season_count: Annotated[int, pydantic.Field(alias="seasonCount")] - r"""The total number of seasons (for TV shows).""" - - duration: int - r"""The duration of the media item in milliseconds.""" - - added_at: Annotated[int, pydantic.Field(alias="addedAt")] - - studio: Optional[str] = None - r"""The studio that produced the media item.""" - - content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( - None - ) - r"""The content rating for the media item.""" - - year: Optional[int] = None - r"""The release year of the media item.""" - - leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None - r"""The number of leaf items (end nodes) under this media item.""" - - viewed_leaf_count: Annotated[ - Optional[int], pydantic.Field(alias="viewedLeafCount") - ] = None - r"""The number of leaf items that have been viewed.""" - - originally_available_at: Annotated[ - Optional[date], pydantic.Field(alias="originallyAvailableAt") - ] = None - r"""The original release date of the media item.""" - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - r"""Unix epoch datetime in seconds""" - - audience_rating_image: Annotated[ - Optional[str], pydantic.Field(alias="audienceRatingImage") - ] = None - r"""The URL for the audience rating image.""" - - chapter_source: Annotated[Optional[str], pydantic.Field(alias="chapterSource")] = ( - None - ) - r"""The source from which chapter data is derived.""" - - primary_extra_key: Annotated[ - Optional[str], pydantic.Field(alias="primaryExtraKey") - ] = None - r"""The primary extra key associated with this media item.""" - - original_title: Annotated[Optional[str], pydantic.Field(alias="originalTitle")] = ( - None - ) - r"""The original title of the media item (if different).""" - - parent_rating_key: Annotated[ - Optional[str], pydantic.Field(alias="parentRatingKey") - ] = None - r"""The rating key of the parent media item.""" - - grandparent_rating_key: Annotated[ - Optional[str], pydantic.Field(alias="grandparentRatingKey") - ] = None - r"""The rating key of the grandparent media item.""" - - parent_guid: Annotated[Optional[str], pydantic.Field(alias="parentGuid")] = None - r"""The GUID of the parent media item.""" - - grandparent_guid: Annotated[ - Optional[str], pydantic.Field(alias="grandparentGuid") - ] = None - r"""The GUID of the grandparent media item.""" - - grandparent_slug: Annotated[ - Optional[str], pydantic.Field(alias="grandparentSlug") - ] = None - r"""The slug for the grandparent media item.""" - - grandparent_key: Annotated[ - Optional[str], pydantic.Field(alias="grandparentKey") - ] = None - r"""The key of the grandparent media item.""" - - parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None - r"""The key of the parent media item.""" - - grandparent_title: Annotated[ - Optional[str], pydantic.Field(alias="grandparentTitle") - ] = None - r"""The title of the grandparent media item.""" - - grandparent_thumb: Annotated[ - Optional[str], pydantic.Field(alias="grandparentThumb") - ] = None - r"""The thumbnail URL for the grandparent media item.""" - - grandparent_theme: Annotated[ - Optional[str], pydantic.Field(alias="grandparentTheme") - ] = None - r"""The theme URL for the grandparent media item.""" - - grandparent_art: Annotated[ - Optional[str], pydantic.Field(alias="grandparentArt") - ] = None - r"""The art URL for the grandparent media item.""" - - parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None - r"""The title of the parent media item.""" - - parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None - r"""The index position of the parent media item.""" - - parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None - r"""The thumbnail URL for the parent media item.""" - - rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None - r"""The URL for the rating image.""" - - view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None - r"""The number of times this media item has been viewed.""" - - view_offset: Annotated[Optional[int], pydantic.Field(alias="viewOffset")] = None - r"""The current playback offset (in milliseconds).""" - - skip_count: Annotated[Optional[int], pydantic.Field(alias="skipCount")] = None - r"""The number of times this media item has been skipped.""" - - subtype: Optional[str] = None - r"""A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip.""" - - last_rated_at: Annotated[Optional[int], pydantic.Field(alias="lastRatedAt")] = None - r"""The Unix timestamp representing the last time the item was rated.""" - - created_at_accuracy: Annotated[ - Optional[str], pydantic.Field(alias="createdAtAccuracy") - ] = None - r"""The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available).""" - - created_at_tz_offset: Annotated[ - Optional[str], pydantic.Field(alias="createdAtTZOffset") - ] = None - r"""The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC.""" - - last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( - None - ) - r"""Unix timestamp for when the media item was last viewed.""" - - user_rating: Annotated[Optional[float], pydantic.Field(alias="userRating")] = None - r"""The rating provided by a user for the item. This value is expressed as a decimal number.""" - - image: Annotated[ - Optional[List[GetLibrarySectionsAllImage]], pydantic.Field(alias="Image") - ] = None - - ultra_blur_colors: Annotated[ - Optional[GetLibrarySectionsAllUltraBlurColors], - pydantic.Field(alias="UltraBlurColors"), - ] = None - - guids: Annotated[ - Optional[List[GetLibrarySectionsAllGuids]], pydantic.Field(alias="Guid") - ] = None - - media: Annotated[ - Optional[List[GetLibrarySectionsAllMedia]], pydantic.Field(alias="Media") - ] = None - - genre: Annotated[ - Optional[List[GetLibrarySectionsAllGenre]], pydantic.Field(alias="Genre") - ] = None - - country: Annotated[ - Optional[List[GetLibrarySectionsAllCountry]], pydantic.Field(alias="Country") - ] = None - - director: Annotated[ - Optional[List[GetLibrarySectionsAllDirector]], pydantic.Field(alias="Director") - ] = None - - writer: Annotated[ - Optional[List[GetLibrarySectionsAllWriter]], pydantic.Field(alias="Writer") - ] = None - - role: Annotated[ - Optional[List[GetLibrarySectionsAllRole]], pydantic.Field(alias="Role") - ] = None - - collection: Annotated[ - Optional[List[GetLibrarySectionsAllCollection]], - pydantic.Field(alias="Collection"), - ] = None - - -class GetLibrarySectionsAllMediaContainerTypedDict(TypedDict): - size: int - r"""Number of media items returned in this response.""" - total_size: int - r"""Total number of media items in the library.""" - offset: int - r"""Offset value for pagination.""" - allow_sync: bool - r"""Indicates whether syncing is allowed.""" - art: str - r"""URL for the background artwork of the media container.""" - content: str - r"""The content type or mode.""" - identifier: str - r"""An plugin identifier for the media container.""" - media_tag_prefix: str - r"""The prefix used for media tag resource paths.""" - media_tag_version: int - r"""The version number for media tags.""" - thumb: str - r"""URL for the thumbnail image of the media container.""" - nocache: bool - r"""Specifies whether caching is disabled.""" - title1: str - r"""The primary title of the media container.""" - title2: str - r"""The secondary title of the media container.""" - view_group: str - r"""Identifier for the view group layout.""" - library_section_id: NotRequired[int] - r"""The unique identifier for the library section.""" - library_section_title: NotRequired[str] - r"""The title of the library section.""" - library_section_uuid: NotRequired[str] - r"""The universally unique identifier for the library section.""" - meta: NotRequired[GetLibrarySectionsAllMetaTypedDict] - r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. - - """ - metadata: NotRequired[List[GetLibrarySectionsAllMetadataTypedDict]] - r"""An array of metadata items.""" - - -class GetLibrarySectionsAllMediaContainer(BaseModel): - size: int - r"""Number of media items returned in this response.""" - - total_size: Annotated[int, pydantic.Field(alias="totalSize")] - r"""Total number of media items in the library.""" - - offset: int - r"""Offset value for pagination.""" - - allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] - r"""Indicates whether syncing is allowed.""" - - art: str - r"""URL for the background artwork of the media container.""" - - content: str - r"""The content type or mode.""" - - identifier: str - r"""An plugin identifier for the media container.""" - - media_tag_prefix: Annotated[str, pydantic.Field(alias="mediaTagPrefix")] - r"""The prefix used for media tag resource paths.""" - - media_tag_version: Annotated[int, pydantic.Field(alias="mediaTagVersion")] - r"""The version number for media tags.""" - - thumb: str - r"""URL for the thumbnail image of the media container.""" - - nocache: bool - r"""Specifies whether caching is disabled.""" - - title1: str - r"""The primary title of the media container.""" - - title2: str - r"""The secondary title of the media container.""" - - view_group: Annotated[str, pydantic.Field(alias="viewGroup")] - r"""Identifier for the view group layout.""" - - library_section_id: Annotated[ - Optional[int], pydantic.Field(alias="librarySectionID") - ] = None - r"""The unique identifier for the library section.""" - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - r"""The title of the library section.""" - - library_section_uuid: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionUUID") - ] = None - r"""The universally unique identifier for the library section.""" - - meta: Annotated[ - Optional[GetLibrarySectionsAllMeta], pydantic.Field(alias="Meta") - ] = None - r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. - - """ - - metadata: Annotated[ - Optional[List[GetLibrarySectionsAllMetadata]], pydantic.Field(alias="Metadata") - ] = None - r"""An array of metadata items.""" - - -class GetLibrarySectionsAllResponseBodyTypedDict(TypedDict): - r"""Successful response containing media container data.""" - - media_container: NotRequired[GetLibrarySectionsAllMediaContainerTypedDict] - - -class GetLibrarySectionsAllResponseBody(BaseModel): - r"""Successful response containing media container data.""" - - media_container: Annotated[ - Optional[GetLibrarySectionsAllMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class GetLibrarySectionsAllResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetLibrarySectionsAllResponseBodyTypedDict] - r"""Successful response containing media container data.""" - - -class GetLibrarySectionsAllResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetLibrarySectionsAllResponseBody] = None - r"""Successful response containing media container data.""" diff --git a/src/plex_api_client/models/operations/get_media_arts.py b/src/plex_api_client/models/operations/get_media_arts.py deleted file mode 100644 index 970f837..0000000 --- a/src/plex_api_client/models/operations/get_media_arts.py +++ /dev/null @@ -1,120 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, PathParamMetadata -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetMediaArtsRequestTypedDict(TypedDict): - rating_key: int - r"""the id of the library item to return the artwork of.""" - - -class GetMediaArtsRequest(BaseModel): - rating_key: Annotated[ - int, - pydantic.Field(alias="ratingKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""the id of the library item to return the artwork of.""" - - -class GetMediaArtsMetadataTypedDict(TypedDict): - key: str - r"""The URL of the artwork.""" - rating_key: str - r"""The URL of the artwork.""" - selected: bool - r"""Whether this is the selected artwork.""" - thumb: str - r"""The URL of the artwork thumbnail.""" - provider: NotRequired[str] - r"""The provider of the artwork.""" - - -class GetMediaArtsMetadata(BaseModel): - key: str - r"""The URL of the artwork.""" - - rating_key: Annotated[str, pydantic.Field(alias="ratingKey")] - r"""The URL of the artwork.""" - - selected: bool - r"""Whether this is the selected artwork.""" - - thumb: str - r"""The URL of the artwork thumbnail.""" - - provider: Optional[str] = None - r"""The provider of the artwork.""" - - -class GetMediaArtsMediaContainerTypedDict(TypedDict): - size: int - r"""Number of media items returned in this response.""" - media_tag_version: int - r"""The version number for media tags.""" - media_tag_prefix: str - r"""The prefix used for media tag resource paths.""" - identifier: str - r"""An plugin identifier for the media container.""" - metadata: List[GetMediaArtsMetadataTypedDict] - - -class GetMediaArtsMediaContainer(BaseModel): - size: int - r"""Number of media items returned in this response.""" - - media_tag_version: Annotated[int, pydantic.Field(alias="mediaTagVersion")] - r"""The version number for media tags.""" - - media_tag_prefix: Annotated[str, pydantic.Field(alias="mediaTagPrefix")] - r"""The prefix used for media tag resource paths.""" - - identifier: str - r"""An plugin identifier for the media container.""" - - metadata: Annotated[List[GetMediaArtsMetadata], pydantic.Field(alias="Metadata")] - - -class GetMediaArtsResponseBodyTypedDict(TypedDict): - r"""The available background artwork for the library item.""" - - media_container: NotRequired[GetMediaArtsMediaContainerTypedDict] - - -class GetMediaArtsResponseBody(BaseModel): - r"""The available background artwork for the library item.""" - - media_container: Annotated[ - Optional[GetMediaArtsMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetMediaArtsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetMediaArtsResponseBodyTypedDict] - r"""The available background artwork for the library item.""" - - -class GetMediaArtsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetMediaArtsResponseBody] = None - r"""The available background artwork for the library item.""" diff --git a/src/plex_api_client/models/operations/get_media_meta_data.py b/src/plex_api_client/models/operations/get_media_meta_data.py deleted file mode 100644 index 7532c8e..0000000 --- a/src/plex_api_client/models/operations/get_media_meta_data.py +++ /dev/null @@ -1,1623 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import date -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import ( - FieldMetadata, - PathParamMetadata, - QueryParamMetadata, - validate_const, - validate_open_enum, -) -import pydantic -from pydantic.functional_validators import AfterValidator, PlainValidator -from typing import List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict - - -class GetMediaMetaDataRequestTypedDict(TypedDict): - rating_key: str - r"""The id(s) of the library item(s) to return metadata for. Can be a single ID or comma-separated list of IDs.""" - include_concerts: NotRequired[bool] - r"""Include concerts data if set to true.""" - include_extras: NotRequired[bool] - r"""Include extra content (e.g. bonus features).""" - include_on_deck: NotRequired[bool] - r"""Include on-deck items.""" - include_popular_leaves: NotRequired[bool] - r"""Include popular leaves (episodes/chapters).""" - include_preferences: NotRequired[bool] - r"""Include preferences information.""" - include_reviews: NotRequired[bool] - r"""Include reviews for the content.""" - include_chapters: NotRequired[bool] - r"""Include chapter details.""" - include_stations: NotRequired[bool] - r"""Include station data.""" - include_external_media: NotRequired[bool] - r"""Include external media data.""" - async_augment_metadata: NotRequired[bool] - r"""Trigger asynchronous metadata augmentation.""" - async_check_files: NotRequired[bool] - r"""Trigger asynchronous file checking.""" - async_refresh_analysis: NotRequired[bool] - r"""Trigger asynchronous refresh of analysis.""" - async_refresh_local_media_agent: NotRequired[bool] - r"""Trigger asynchronous refresh of the local media agent.""" - - -class GetMediaMetaDataRequest(BaseModel): - rating_key: Annotated[ - str, - pydantic.Field(alias="ratingKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""The id(s) of the library item(s) to return metadata for. Can be a single ID or comma-separated list of IDs.""" - - include_concerts: Annotated[ - Optional[bool], - pydantic.Field(alias="includeConcerts"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Include concerts data if set to true.""" - - include_extras: Annotated[ - Optional[bool], - pydantic.Field(alias="includeExtras"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Include extra content (e.g. bonus features).""" - - include_on_deck: Annotated[ - Optional[bool], - pydantic.Field(alias="includeOnDeck"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Include on-deck items.""" - - include_popular_leaves: Annotated[ - Optional[bool], - pydantic.Field(alias="includePopularLeaves"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Include popular leaves (episodes/chapters).""" - - include_preferences: Annotated[ - Optional[bool], - pydantic.Field(alias="includePreferences"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Include preferences information.""" - - include_reviews: Annotated[ - Optional[bool], - pydantic.Field(alias="includeReviews"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Include reviews for the content.""" - - include_chapters: Annotated[ - Optional[bool], - pydantic.Field(alias="includeChapters"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Include chapter details.""" - - include_stations: Annotated[ - Optional[bool], - pydantic.Field(alias="includeStations"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Include station data.""" - - include_external_media: Annotated[ - Optional[bool], - pydantic.Field(alias="includeExternalMedia"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Include external media data.""" - - async_augment_metadata: Annotated[ - Optional[bool], - pydantic.Field(alias="asyncAugmentMetadata"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Trigger asynchronous metadata augmentation.""" - - async_check_files: Annotated[ - Optional[bool], - pydantic.Field(alias="asyncCheckFiles"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Trigger asynchronous file checking.""" - - async_refresh_analysis: Annotated[ - Optional[bool], - pydantic.Field(alias="asyncRefreshAnalysis"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Trigger asynchronous refresh of analysis.""" - - async_refresh_local_media_agent: Annotated[ - Optional[bool], - pydantic.Field(alias="asyncRefreshLocalMediaAgent"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Trigger asynchronous refresh of the local media agent.""" - - -class GetMediaMetaDataType(str, Enum, metaclass=utils.OpenEnumMeta): - r"""The type of media content in the Plex library. This can represent videos, music, or photos.""" - - MOVIE = "movie" - TV_SHOW = "show" - SEASON = "season" - EPISODE = "episode" - ARTIST = "artist" - ALBUM = "album" - TRACK = "track" - PHOTO_ALBUM = "photoalbum" - PHOTO = "photo" - COLLECTION = "collection" - - -class GetMediaMetaDataLibraryType(str, Enum, metaclass=utils.OpenEnumMeta): - COVER_POSTER = "coverPoster" - BACKGROUND = "background" - SNAPSHOT = "snapshot" - CLEAR_LOGO = "clearLogo" - - -class GetMediaMetaDataImageTypedDict(TypedDict): - alt: str - type: GetMediaMetaDataLibraryType - url: str - - -class GetMediaMetaDataImage(BaseModel): - alt: str - - type: Annotated[ - GetMediaMetaDataLibraryType, PlainValidator(validate_open_enum(False)) - ] - - url: str - - -class GetMediaMetaDataUltraBlurColorsTypedDict(TypedDict): - top_left: str - top_right: str - bottom_right: str - bottom_left: str - - -class GetMediaMetaDataUltraBlurColors(BaseModel): - top_left: Annotated[str, pydantic.Field(alias="topLeft")] - - top_right: Annotated[str, pydantic.Field(alias="topRight")] - - bottom_right: Annotated[str, pydantic.Field(alias="bottomRight")] - - bottom_left: Annotated[str, pydantic.Field(alias="bottomLeft")] - - -class GetMediaMetaDataGuidsTypedDict(TypedDict): - id: str - r"""The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// - - """ - - -class GetMediaMetaDataGuids(BaseModel): - id: str - r"""The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// - - """ - - -class GetMediaMetaDataOptimizedForStreaming1(int, Enum): - ZERO = 0 - ONE = 1 - - -GetMediaMetaDataOptimizedForStreamingTypedDict = TypeAliasType( - "GetMediaMetaDataOptimizedForStreamingTypedDict", - Union[GetMediaMetaDataOptimizedForStreaming1, bool], -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - -GetMediaMetaDataOptimizedForStreaming = TypeAliasType( - "GetMediaMetaDataOptimizedForStreaming", - Union[GetMediaMetaDataOptimizedForStreaming1, bool], -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - -class GetMediaMetaDataOptimizedForStreamingLibrary1(int, Enum): - ZERO = 0 - ONE = 1 - - -GetMediaMetaDataLibraryOptimizedForStreamingTypedDict = TypeAliasType( - "GetMediaMetaDataLibraryOptimizedForStreamingTypedDict", - Union[GetMediaMetaDataOptimizedForStreamingLibrary1, bool], -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - -""" - - -GetMediaMetaDataLibraryOptimizedForStreaming = TypeAliasType( - "GetMediaMetaDataLibraryOptimizedForStreaming", - Union[GetMediaMetaDataOptimizedForStreamingLibrary1, bool], -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - -""" - - -class GetMediaMetaDataHasThumbnail(str, Enum): - r"""Indicates if the part has a thumbnail.""" - - FALSE = "0" - TRUE = "1" - - -class GetMediaMetaDataStreamTypedDict(TypedDict): - id: int - r"""Unique stream identifier.""" - stream_type: Literal[1] - r"""Stream type: - - VIDEO = 1 - - AUDIO = 2 - - SUBTITLE = 3 - - """ - format_: NotRequired[str] - r"""Format of the stream (e.g., srt).""" - default: NotRequired[bool] - r"""Indicates if this stream is default.""" - codec: NotRequired[str] - r"""Codec used by the stream.""" - index: NotRequired[int] - r"""Index of the stream.""" - bitrate: NotRequired[int] - r"""Bitrate of the stream.""" - language: NotRequired[str] - r"""Language of the stream.""" - language_tag: NotRequired[str] - r"""Language tag (e.g., en).""" - language_code: NotRequired[str] - r"""ISO language code.""" - header_compression: NotRequired[bool] - r"""Indicates whether header compression is enabled.""" - dovibl_compat_id: NotRequired[int] - r"""Dolby Vision BL compatibility ID.""" - dovibl_present: NotRequired[bool] - r"""Indicates if Dolby Vision BL is present.""" - doviel_present: NotRequired[bool] - r"""Indicates if Dolby Vision EL is present.""" - dovi_level: NotRequired[int] - r"""Dolby Vision level.""" - dovi_present: NotRequired[bool] - r"""Indicates if Dolby Vision is present.""" - dovi_profile: NotRequired[int] - r"""Dolby Vision profile.""" - dovirpu_present: NotRequired[bool] - r"""Indicates if Dolby Vision RPU is present.""" - dovi_version: NotRequired[str] - r"""Dolby Vision version.""" - bit_depth: NotRequired[int] - r"""Bit depth of the video stream.""" - chroma_location: NotRequired[str] - r"""Chroma sample location.""" - chroma_subsampling: NotRequired[str] - r"""Chroma subsampling format.""" - coded_height: NotRequired[int] - r"""Coded video height.""" - coded_width: NotRequired[int] - r"""Coded video width.""" - closed_captions: NotRequired[bool] - color_primaries: NotRequired[str] - r"""Color primaries used.""" - color_range: NotRequired[str] - r"""Color range (e.g., tv).""" - color_space: NotRequired[str] - r"""Color space.""" - color_trc: NotRequired[str] - r"""Color transfer characteristics.""" - frame_rate: NotRequired[float] - r"""Frame rate of the stream.""" - key: NotRequired[str] - r"""Key to access this stream part.""" - height: NotRequired[int] - r"""Height of the video stream.""" - level: NotRequired[int] - r"""Video level.""" - original: NotRequired[bool] - r"""Indicates if this is the original stream.""" - has_scaling_matrix: NotRequired[bool] - profile: NotRequired[str] - r"""Video profile.""" - scan_type: NotRequired[str] - embedded_in_video: NotRequired[str] - ref_frames: NotRequired[int] - r"""Number of reference frames.""" - width: NotRequired[int] - r"""Width of the video stream.""" - display_title: NotRequired[str] - r"""Display title for the stream.""" - extended_display_title: NotRequired[str] - r"""Extended display title for the stream.""" - selected: NotRequired[bool] - r"""Indicates if this stream is selected (applicable for audio streams).""" - forced: NotRequired[bool] - channels: NotRequired[int] - r"""Number of audio channels (for audio streams).""" - audio_channel_layout: NotRequired[str] - r"""Audio channel layout.""" - sampling_rate: NotRequired[int] - r"""Sampling rate for the audio stream.""" - can_auto_sync: NotRequired[bool] - r"""Indicates if the stream can auto-sync.""" - hearing_impaired: NotRequired[bool] - r"""Indicates if the stream is for the hearing impaired.""" - dub: NotRequired[bool] - r"""Indicates if the stream is a dub.""" - title: NotRequired[str] - r"""Optional title for the stream (e.g., language variant).""" - - -class GetMediaMetaDataStream(BaseModel): - id: int - r"""Unique stream identifier.""" - - STREAM_TYPE: Annotated[ - Annotated[Literal[1], AfterValidator(validate_const(1))], - pydantic.Field(alias="streamType"), - ] = 1 - r"""Stream type: - - VIDEO = 1 - - AUDIO = 2 - - SUBTITLE = 3 - - """ - - format_: Annotated[Optional[str], pydantic.Field(alias="format")] = None - r"""Format of the stream (e.g., srt).""" - - default: Optional[bool] = None - r"""Indicates if this stream is default.""" - - codec: Optional[str] = None - r"""Codec used by the stream.""" - - index: Optional[int] = None - r"""Index of the stream.""" - - bitrate: Optional[int] = None - r"""Bitrate of the stream.""" - - language: Optional[str] = None - r"""Language of the stream.""" - - language_tag: Annotated[Optional[str], pydantic.Field(alias="languageTag")] = None - r"""Language tag (e.g., en).""" - - language_code: Annotated[Optional[str], pydantic.Field(alias="languageCode")] = None - r"""ISO language code.""" - - header_compression: Annotated[ - Optional[bool], pydantic.Field(alias="headerCompression") - ] = None - r"""Indicates whether header compression is enabled.""" - - dovibl_compat_id: Annotated[ - Optional[int], pydantic.Field(alias="DOVIBLCompatID") - ] = None - r"""Dolby Vision BL compatibility ID.""" - - dovibl_present: Annotated[Optional[bool], pydantic.Field(alias="DOVIBLPresent")] = ( - None - ) - r"""Indicates if Dolby Vision BL is present.""" - - doviel_present: Annotated[Optional[bool], pydantic.Field(alias="DOVIELPresent")] = ( - None - ) - r"""Indicates if Dolby Vision EL is present.""" - - dovi_level: Annotated[Optional[int], pydantic.Field(alias="DOVILevel")] = None - r"""Dolby Vision level.""" - - dovi_present: Annotated[Optional[bool], pydantic.Field(alias="DOVIPresent")] = None - r"""Indicates if Dolby Vision is present.""" - - dovi_profile: Annotated[Optional[int], pydantic.Field(alias="DOVIProfile")] = None - r"""Dolby Vision profile.""" - - dovirpu_present: Annotated[ - Optional[bool], pydantic.Field(alias="DOVIRPUPresent") - ] = None - r"""Indicates if Dolby Vision RPU is present.""" - - dovi_version: Annotated[Optional[str], pydantic.Field(alias="DOVIVersion")] = None - r"""Dolby Vision version.""" - - bit_depth: Annotated[Optional[int], pydantic.Field(alias="bitDepth")] = None - r"""Bit depth of the video stream.""" - - chroma_location: Annotated[ - Optional[str], pydantic.Field(alias="chromaLocation") - ] = None - r"""Chroma sample location.""" - - chroma_subsampling: Annotated[ - Optional[str], pydantic.Field(alias="chromaSubsampling") - ] = None - r"""Chroma subsampling format.""" - - coded_height: Annotated[Optional[int], pydantic.Field(alias="codedHeight")] = None - r"""Coded video height.""" - - coded_width: Annotated[Optional[int], pydantic.Field(alias="codedWidth")] = None - r"""Coded video width.""" - - closed_captions: Annotated[ - Optional[bool], pydantic.Field(alias="closedCaptions") - ] = None - - color_primaries: Annotated[ - Optional[str], pydantic.Field(alias="colorPrimaries") - ] = None - r"""Color primaries used.""" - - color_range: Annotated[Optional[str], pydantic.Field(alias="colorRange")] = None - r"""Color range (e.g., tv).""" - - color_space: Annotated[Optional[str], pydantic.Field(alias="colorSpace")] = None - r"""Color space.""" - - color_trc: Annotated[Optional[str], pydantic.Field(alias="colorTrc")] = None - r"""Color transfer characteristics.""" - - frame_rate: Annotated[Optional[float], pydantic.Field(alias="frameRate")] = None - r"""Frame rate of the stream.""" - - key: Optional[str] = None - r"""Key to access this stream part.""" - - height: Optional[int] = None - r"""Height of the video stream.""" - - level: Optional[int] = None - r"""Video level.""" - - original: Optional[bool] = None - r"""Indicates if this is the original stream.""" - - has_scaling_matrix: Annotated[ - Optional[bool], pydantic.Field(alias="hasScalingMatrix") - ] = None - - profile: Optional[str] = None - r"""Video profile.""" - - scan_type: Annotated[Optional[str], pydantic.Field(alias="scanType")] = None - - embedded_in_video: Annotated[ - Optional[str], pydantic.Field(alias="embeddedInVideo") - ] = None - - ref_frames: Annotated[Optional[int], pydantic.Field(alias="refFrames")] = None - r"""Number of reference frames.""" - - width: Optional[int] = None - r"""Width of the video stream.""" - - display_title: Annotated[Optional[str], pydantic.Field(alias="displayTitle")] = None - r"""Display title for the stream.""" - - extended_display_title: Annotated[ - Optional[str], pydantic.Field(alias="extendedDisplayTitle") - ] = None - r"""Extended display title for the stream.""" - - selected: Optional[bool] = None - r"""Indicates if this stream is selected (applicable for audio streams).""" - - forced: Optional[bool] = None - - channels: Optional[int] = None - r"""Number of audio channels (for audio streams).""" - - audio_channel_layout: Annotated[ - Optional[str], pydantic.Field(alias="audioChannelLayout") - ] = None - r"""Audio channel layout.""" - - sampling_rate: Annotated[Optional[int], pydantic.Field(alias="samplingRate")] = None - r"""Sampling rate for the audio stream.""" - - can_auto_sync: Annotated[Optional[bool], pydantic.Field(alias="canAutoSync")] = None - r"""Indicates if the stream can auto-sync.""" - - hearing_impaired: Annotated[ - Optional[bool], pydantic.Field(alias="hearingImpaired") - ] = None - r"""Indicates if the stream is for the hearing impaired.""" - - dub: Optional[bool] = None - r"""Indicates if the stream is a dub.""" - - title: Optional[str] = None - r"""Optional title for the stream (e.g., language variant).""" - - -class GetMediaMetaDataPartTypedDict(TypedDict): - id: int - r"""Unique part identifier.""" - accessible: NotRequired[bool] - r"""Indicates if the part is accessible.""" - exists: NotRequired[bool] - r"""Indicates if the part exists.""" - key: NotRequired[str] - r"""Key to access this part.""" - indexes: NotRequired[str] - duration: NotRequired[int] - r"""Duration of the part in milliseconds.""" - file: NotRequired[str] - r"""File path for the part.""" - size: NotRequired[int] - r"""File size in bytes.""" - packet_length: NotRequired[int] - container: NotRequired[str] - r"""Container format of the part.""" - video_profile: NotRequired[str] - r"""Video profile for the part.""" - audio_profile: NotRequired[str] - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - has64bit_offsets: NotRequired[bool] - optimized_for_streaming: NotRequired[ - GetMediaMetaDataLibraryOptimizedForStreamingTypedDict - ] - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - """ - has_thumbnail: NotRequired[GetMediaMetaDataHasThumbnail] - stream: NotRequired[List[GetMediaMetaDataStreamTypedDict]] - - -class GetMediaMetaDataPart(BaseModel): - id: int - r"""Unique part identifier.""" - - accessible: Optional[bool] = None - r"""Indicates if the part is accessible.""" - - exists: Optional[bool] = None - r"""Indicates if the part exists.""" - - key: Optional[str] = None - r"""Key to access this part.""" - - indexes: Optional[str] = None - - duration: Optional[int] = None - r"""Duration of the part in milliseconds.""" - - file: Optional[str] = None - r"""File path for the part.""" - - size: Optional[int] = None - r"""File size in bytes.""" - - packet_length: Annotated[Optional[int], pydantic.Field(alias="packetLength")] = None - - container: Optional[str] = None - r"""Container format of the part.""" - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - r"""Video profile for the part.""" - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - optimized_for_streaming: Annotated[ - Optional[GetMediaMetaDataLibraryOptimizedForStreaming], - pydantic.Field(alias="optimizedForStreaming"), - ] = None - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - """ - - has_thumbnail: Annotated[ - Optional[GetMediaMetaDataHasThumbnail], pydantic.Field(alias="hasThumbnail") - ] = GetMediaMetaDataHasThumbnail.FALSE - - stream: Annotated[ - Optional[List[GetMediaMetaDataStream]], pydantic.Field(alias="Stream") - ] = None - - -class GetMediaMetaDataMediaTypedDict(TypedDict): - id: int - r"""Unique media identifier.""" - duration: NotRequired[int] - r"""Duration of the media in milliseconds.""" - bitrate: NotRequired[int] - r"""Bitrate in bits per second.""" - width: NotRequired[int] - r"""Video width in pixels.""" - height: NotRequired[int] - r"""Video height in pixels.""" - aspect_ratio: NotRequired[float] - r"""Aspect ratio of the video.""" - audio_channels: NotRequired[int] - r"""Number of audio channels.""" - display_offset: NotRequired[int] - audio_codec: NotRequired[str] - r"""Audio codec used.""" - video_codec: NotRequired[str] - r"""Video codec used.""" - video_resolution: NotRequired[str] - r"""Video resolution (e.g., 4k).""" - container: NotRequired[str] - r"""Container format of the media.""" - video_frame_rate: NotRequired[str] - r"""Frame rate of the video. Values found include NTSC, PAL, 24p - - """ - video_profile: NotRequired[str] - r"""Video profile (e.g., main 10).""" - has_voice_activity: NotRequired[bool] - r"""Indicates whether voice activity is detected.""" - audio_profile: NotRequired[str] - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - optimized_for_streaming: NotRequired[GetMediaMetaDataOptimizedForStreamingTypedDict] - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - has64bit_offsets: NotRequired[bool] - r"""Indicates whether the media has 64-bit offsets. - This is relevant for media files that may require larger offsets than what 32-bit integers can provide. - - """ - part: NotRequired[List[GetMediaMetaDataPartTypedDict]] - - -class GetMediaMetaDataMedia(BaseModel): - id: int - r"""Unique media identifier.""" - - duration: Optional[int] = None - r"""Duration of the media in milliseconds.""" - - bitrate: Optional[int] = None - r"""Bitrate in bits per second.""" - - width: Optional[int] = None - r"""Video width in pixels.""" - - height: Optional[int] = None - r"""Video height in pixels.""" - - aspect_ratio: Annotated[Optional[float], pydantic.Field(alias="aspectRatio")] = None - r"""Aspect ratio of the video.""" - - audio_channels: Annotated[Optional[int], pydantic.Field(alias="audioChannels")] = ( - None - ) - r"""Number of audio channels.""" - - display_offset: Annotated[Optional[int], pydantic.Field(alias="displayOffset")] = ( - None - ) - - audio_codec: Annotated[Optional[str], pydantic.Field(alias="audioCodec")] = None - r"""Audio codec used.""" - - video_codec: Annotated[Optional[str], pydantic.Field(alias="videoCodec")] = None - r"""Video codec used.""" - - video_resolution: Annotated[ - Optional[str], pydantic.Field(alias="videoResolution") - ] = None - r"""Video resolution (e.g., 4k).""" - - container: Optional[str] = None - r"""Container format of the media.""" - - video_frame_rate: Annotated[ - Optional[str], pydantic.Field(alias="videoFrameRate") - ] = None - r"""Frame rate of the video. Values found include NTSC, PAL, 24p - - """ - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - r"""Video profile (e.g., main 10).""" - - has_voice_activity: Annotated[ - Optional[bool], pydantic.Field(alias="hasVoiceActivity") - ] = None - r"""Indicates whether voice activity is detected.""" - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - - optimized_for_streaming: Annotated[ - Optional[GetMediaMetaDataOptimizedForStreaming], - pydantic.Field(alias="optimizedForStreaming"), - ] = None - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - r"""Indicates whether the media has 64-bit offsets. - This is relevant for media files that may require larger offsets than what 32-bit integers can provide. - - """ - - part: Annotated[ - Optional[List[GetMediaMetaDataPart]], pydantic.Field(alias="Part") - ] = None - - -class GetMediaMetaDataGenreTypedDict(TypedDict): - r"""The filter query string for similar items.""" - - id: int - r"""The unique identifier for the genre. - NOTE: This is different for each Plex server and is not globally unique. - - """ - tag: str - r"""The genre name of this media-item - - """ - filter_: str - - -class GetMediaMetaDataGenre(BaseModel): - r"""The filter query string for similar items.""" - - id: int - r"""The unique identifier for the genre. - NOTE: This is different for each Plex server and is not globally unique. - - """ - - tag: str - r"""The genre name of this media-item - - """ - - filter_: Annotated[str, pydantic.Field(alias="filter")] - - -class GetMediaMetaDataCountryTypedDict(TypedDict): - r"""The filter query string for country media items.""" - - id: int - r"""The unique identifier for the country. - NOTE: This is different for each Plex server and is not globally unique. - - """ - tag: str - r"""The country of origin of this media item""" - filter_: str - - -class GetMediaMetaDataCountry(BaseModel): - r"""The filter query string for country media items.""" - - id: int - r"""The unique identifier for the country. - NOTE: This is different for each Plex server and is not globally unique. - - """ - - tag: str - r"""The country of origin of this media item""" - - filter_: Annotated[str, pydantic.Field(alias="filter")] - - -class GetMediaMetaDataDirectorTypedDict(TypedDict): - id: int - r"""Unique identifier for the director.""" - tag: str - r"""The role of Director""" - filter_: str - r"""The filter string used to query this director.""" - tag_key: str - r"""A unique 24-character hexadecimal key associated with the director's tag, used for internal identification.""" - thumb: NotRequired[str] - r"""The absolute URL of the thumbnail image for the director.""" - - -class GetMediaMetaDataDirector(BaseModel): - id: int - r"""Unique identifier for the director.""" - - tag: str - r"""The role of Director""" - - filter_: Annotated[str, pydantic.Field(alias="filter")] - r"""The filter string used to query this director.""" - - tag_key: Annotated[str, pydantic.Field(alias="tagKey")] - r"""A unique 24-character hexadecimal key associated with the director's tag, used for internal identification.""" - - thumb: Optional[str] = None - r"""The absolute URL of the thumbnail image for the director.""" - - -class GetMediaMetaDataWriterTypedDict(TypedDict): - id: int - r"""Unique identifier for the writer.""" - tag: str - r"""The role of Writer""" - filter_: str - r"""The filter string used to query this writer.""" - thumb: NotRequired[str] - r"""The absolute URL of the thumbnail image for the writer.""" - tag_key: NotRequired[str] - r"""A 24-character hexadecimal unique key associated with the writer’s tag, used for internal identification.""" - - -class GetMediaMetaDataWriter(BaseModel): - id: int - r"""Unique identifier for the writer.""" - - tag: str - r"""The role of Writer""" - - filter_: Annotated[str, pydantic.Field(alias="filter")] - r"""The filter string used to query this writer.""" - - thumb: Optional[str] = None - r"""The absolute URL of the thumbnail image for the writer.""" - - tag_key: Annotated[Optional[str], pydantic.Field(alias="tagKey")] = None - r"""A 24-character hexadecimal unique key associated with the writer’s tag, used for internal identification.""" - - -class GetMediaMetaDataProducerTypedDict(TypedDict): - id: int - r"""The unique role identifier.""" - filter_: str - r"""The filter string for the role.""" - tag: str - r"""The actor's name.""" - tag_key: str - r"""A key associated with the actor tag.""" - role: NotRequired[str] - r"""The character name or role.""" - thumb: NotRequired[str] - r"""URL for the role thumbnail image.""" - - -class GetMediaMetaDataProducer(BaseModel): - id: int - r"""The unique role identifier.""" - - filter_: Annotated[str, pydantic.Field(alias="filter")] - r"""The filter string for the role.""" - - tag: str - r"""The actor's name.""" - - tag_key: Annotated[str, pydantic.Field(alias="tagKey")] - r"""A key associated with the actor tag.""" - - role: Optional[str] = None - r"""The character name or role.""" - - thumb: Optional[str] = None - r"""URL for the role thumbnail image.""" - - -class GetMediaMetaDataRoleTypedDict(TypedDict): - id: int - r"""The unique identifier for the role. - NOTE: This is different for each Plex server and is not globally unique. - - """ - tag: str - r"""The display tag for the actor (typically the actor's name).""" - filter_: str - r"""The filter string used to query this actor. For example, it may indicate that this is an actor with a given key.""" - tag_key: str - r"""A 24-character hexadecimal unique key associated with the actor's tag, used for internal identification. - NOTE: This is globally unique across all Plex Servers. - - """ - role: NotRequired[str] - r"""The role played by the actor in the media item.""" - thumb: NotRequired[str] - r"""The absolute URL of the thumbnail image for the actor.""" - - -class GetMediaMetaDataRole(BaseModel): - id: int - r"""The unique identifier for the role. - NOTE: This is different for each Plex server and is not globally unique. - - """ - - tag: str - r"""The display tag for the actor (typically the actor's name).""" - - filter_: Annotated[str, pydantic.Field(alias="filter")] - r"""The filter string used to query this actor. For example, it may indicate that this is an actor with a given key.""" - - tag_key: Annotated[str, pydantic.Field(alias="tagKey")] - r"""A 24-character hexadecimal unique key associated with the actor's tag, used for internal identification. - NOTE: This is globally unique across all Plex Servers. - - """ - - role: Optional[str] = None - r"""The role played by the actor in the media item.""" - - thumb: Optional[str] = None - r"""The absolute URL of the thumbnail image for the actor.""" - - -class GetMediaMetaDataRatingsTypedDict(TypedDict): - image: str - r"""The image or reference for the rating.""" - value: float - r"""The rating value.""" - type: str - r"""The type of rating (e.g., audience, critic).""" - - -class GetMediaMetaDataRatings(BaseModel): - image: str - r"""The image or reference for the rating.""" - - value: float - r"""The rating value.""" - - type: str - r"""The type of rating (e.g., audience, critic).""" - - -class GetMediaMetaDataSimilarTypedDict(TypedDict): - id: int - r"""The unique similar item identifier.""" - filter_: str - r"""The filter string for similar items.""" - tag: str - r"""The tag or title of the similar content.""" - - -class GetMediaMetaDataSimilar(BaseModel): - id: int - r"""The unique similar item identifier.""" - - filter_: Annotated[str, pydantic.Field(alias="filter")] - r"""The filter string for similar items.""" - - tag: str - r"""The tag or title of the similar content.""" - - -class GetMediaMetaDataLocationTypedDict(TypedDict): - path: str - r"""The file path for the location.""" - - -class GetMediaMetaDataLocation(BaseModel): - path: str - r"""The file path for the location.""" - - -class GetMediaMetaDataChapterTypedDict(TypedDict): - r"""The thumbnail for the chapter""" - - id: int - filter_: str - index: int - start_time_offset: int - end_time_offset: int - thumb: str - - -class GetMediaMetaDataChapter(BaseModel): - r"""The thumbnail for the chapter""" - - id: int - - filter_: Annotated[str, pydantic.Field(alias="filter")] - - index: int - - start_time_offset: Annotated[int, pydantic.Field(alias="startTimeOffset")] - - end_time_offset: Annotated[int, pydantic.Field(alias="endTimeOffset")] - - thumb: str - - -class GetMediaMetaDataAttributesTypedDict(TypedDict): - r"""Attributes associated with the marker.""" - - id: int - r"""The identifier for the attributes.""" - version: NotRequired[int] - r"""The version number of the marker attributes.""" - - -class GetMediaMetaDataAttributes(BaseModel): - r"""Attributes associated with the marker.""" - - id: int - r"""The identifier for the attributes.""" - - version: Optional[int] = None - r"""The version number of the marker attributes.""" - - -class GetMediaMetaDataMarkerTypedDict(TypedDict): - r"""The final status of the marker""" - - id: int - type: str - start_time_offset: int - end_time_offset: int - final: NotRequired[bool] - attributes: NotRequired[GetMediaMetaDataAttributesTypedDict] - r"""Attributes associated with the marker.""" - - -class GetMediaMetaDataMarker(BaseModel): - r"""The final status of the marker""" - - id: int - - type: str - - start_time_offset: Annotated[int, pydantic.Field(alias="startTimeOffset")] - - end_time_offset: Annotated[int, pydantic.Field(alias="endTimeOffset")] - - final: Optional[bool] = None - - attributes: Annotated[ - Optional[GetMediaMetaDataAttributes], pydantic.Field(alias="Attributes") - ] = None - r"""Attributes associated with the marker.""" - - -class GetMediaMetaDataExtrasTypedDict(TypedDict): - size: NotRequired[int] - r"""The size of the extras.""" - - -class GetMediaMetaDataExtras(BaseModel): - size: Optional[int] = None - r"""The size of the extras.""" - - -class GetMediaMetaDataMetadataTypedDict(TypedDict): - r"""Unknown""" - - rating_key: str - r"""The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API.""" - key: str - r"""The unique key for the media item.""" - guid: str - r"""The globally unique identifier for the media item.""" - slug: str - r"""A URL‐friendly version of the media title.""" - type: GetMediaMetaDataType - title: str - r"""The title of the media item.""" - title_sort: str - r"""The sort title used for ordering media items.""" - summary: str - r"""A synopsis of the media item.""" - rating: float - r"""The critic rating for the media item.""" - audience_rating: float - r"""The audience rating for the media item.""" - tagline: str - r"""A brief tagline for the media item.""" - thumb: str - r"""The thumbnail image URL for the media item.""" - art: str - r"""The art image URL for the media item.""" - theme: str - r"""The theme URL for the media item.""" - index: int - r"""The index position of the media item.""" - child_count: int - r"""The number of child items associated with this media item.""" - season_count: int - r"""The total number of seasons (for TV shows).""" - duration: int - r"""The duration of the media item in milliseconds.""" - added_at: int - studio: NotRequired[str] - r"""The studio that produced the media item.""" - content_rating: NotRequired[str] - r"""The content rating for the media item.""" - year: NotRequired[int] - r"""The release year of the media item.""" - leaf_count: NotRequired[int] - r"""The number of leaf items (end nodes) under this media item.""" - viewed_leaf_count: NotRequired[int] - r"""The number of leaf items that have been viewed.""" - originally_available_at: NotRequired[date] - r"""The original release date of the media item.""" - updated_at: NotRequired[int] - r"""Unix epoch datetime in seconds""" - audience_rating_image: NotRequired[str] - r"""The URL for the audience rating image.""" - chapter_source: NotRequired[str] - r"""The source from which chapter data is derived.""" - primary_extra_key: NotRequired[str] - r"""The primary extra key associated with this media item.""" - original_title: NotRequired[str] - r"""The original title of the media item (if different).""" - parent_rating_key: NotRequired[str] - r"""The rating key of the parent media item.""" - grandparent_rating_key: NotRequired[str] - r"""The rating key of the grandparent media item.""" - parent_guid: NotRequired[str] - r"""The GUID of the parent media item.""" - grandparent_guid: NotRequired[str] - r"""The GUID of the grandparent media item.""" - grandparent_slug: NotRequired[str] - r"""The slug for the grandparent media item.""" - grandparent_key: NotRequired[str] - r"""The key of the grandparent media item.""" - parent_key: NotRequired[str] - r"""The key of the parent media item.""" - grandparent_title: NotRequired[str] - r"""The title of the grandparent media item.""" - grandparent_thumb: NotRequired[str] - r"""The thumbnail URL for the grandparent media item.""" - grandparent_theme: NotRequired[str] - r"""The theme URL for the grandparent media item.""" - grandparent_art: NotRequired[str] - r"""The art URL for the grandparent media item.""" - parent_title: NotRequired[str] - r"""The title of the parent media item.""" - parent_index: NotRequired[int] - r"""The index position of the parent media item.""" - parent_thumb: NotRequired[str] - r"""The thumbnail URL for the parent media item.""" - rating_image: NotRequired[str] - r"""The URL for the rating image.""" - view_count: NotRequired[int] - r"""The number of times this media item has been viewed.""" - view_offset: NotRequired[int] - r"""The current playback offset (in milliseconds).""" - skip_count: NotRequired[int] - r"""The number of times this media item has been skipped.""" - subtype: NotRequired[str] - r"""A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip.""" - last_rated_at: NotRequired[int] - r"""The Unix timestamp representing the last time the item was rated.""" - created_at_accuracy: NotRequired[str] - r"""The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available).""" - created_at_tz_offset: NotRequired[str] - r"""The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC.""" - last_viewed_at: NotRequired[int] - r"""Unix timestamp for when the media item was last viewed.""" - user_rating: NotRequired[float] - r"""The rating provided by a user for the item. This value is expressed as a decimal number.""" - image: NotRequired[List[GetMediaMetaDataImageTypedDict]] - ultra_blur_colors: NotRequired[GetMediaMetaDataUltraBlurColorsTypedDict] - library_section_id: NotRequired[int] - r"""The identifier for the library section.""" - library_section_title: NotRequired[str] - r"""The title of the library section.""" - library_section_key: NotRequired[str] - r"""The key corresponding to the library section.""" - guids: NotRequired[List[GetMediaMetaDataGuidsTypedDict]] - media: NotRequired[List[GetMediaMetaDataMediaTypedDict]] - genre: NotRequired[List[GetMediaMetaDataGenreTypedDict]] - country: NotRequired[List[GetMediaMetaDataCountryTypedDict]] - director: NotRequired[List[GetMediaMetaDataDirectorTypedDict]] - writer: NotRequired[List[GetMediaMetaDataWriterTypedDict]] - producer: NotRequired[List[GetMediaMetaDataProducerTypedDict]] - role: NotRequired[List[GetMediaMetaDataRoleTypedDict]] - ratings: NotRequired[List[GetMediaMetaDataRatingsTypedDict]] - similar: NotRequired[List[GetMediaMetaDataSimilarTypedDict]] - location: NotRequired[List[GetMediaMetaDataLocationTypedDict]] - chapter: NotRequired[List[GetMediaMetaDataChapterTypedDict]] - marker: NotRequired[List[GetMediaMetaDataMarkerTypedDict]] - extras: NotRequired[GetMediaMetaDataExtrasTypedDict] - - -class GetMediaMetaDataMetadata(BaseModel): - r"""Unknown""" - - rating_key: Annotated[str, pydantic.Field(alias="ratingKey")] - r"""The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API.""" - - key: str - r"""The unique key for the media item.""" - - guid: str - r"""The globally unique identifier for the media item.""" - - slug: str - r"""A URL‐friendly version of the media title.""" - - type: Annotated[GetMediaMetaDataType, PlainValidator(validate_open_enum(False))] - - title: str - r"""The title of the media item.""" - - title_sort: Annotated[str, pydantic.Field(alias="titleSort")] - r"""The sort title used for ordering media items.""" - - summary: str - r"""A synopsis of the media item.""" - - rating: float - r"""The critic rating for the media item.""" - - audience_rating: Annotated[float, pydantic.Field(alias="audienceRating")] - r"""The audience rating for the media item.""" - - tagline: str - r"""A brief tagline for the media item.""" - - thumb: str - r"""The thumbnail image URL for the media item.""" - - art: str - r"""The art image URL for the media item.""" - - theme: str - r"""The theme URL for the media item.""" - - index: int - r"""The index position of the media item.""" - - child_count: Annotated[int, pydantic.Field(alias="childCount")] - r"""The number of child items associated with this media item.""" - - season_count: Annotated[int, pydantic.Field(alias="seasonCount")] - r"""The total number of seasons (for TV shows).""" - - duration: int - r"""The duration of the media item in milliseconds.""" - - added_at: Annotated[int, pydantic.Field(alias="addedAt")] - - studio: Optional[str] = None - r"""The studio that produced the media item.""" - - content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( - None - ) - r"""The content rating for the media item.""" - - year: Optional[int] = None - r"""The release year of the media item.""" - - leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None - r"""The number of leaf items (end nodes) under this media item.""" - - viewed_leaf_count: Annotated[ - Optional[int], pydantic.Field(alias="viewedLeafCount") - ] = None - r"""The number of leaf items that have been viewed.""" - - originally_available_at: Annotated[ - Optional[date], pydantic.Field(alias="originallyAvailableAt") - ] = None - r"""The original release date of the media item.""" - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - r"""Unix epoch datetime in seconds""" - - audience_rating_image: Annotated[ - Optional[str], pydantic.Field(alias="audienceRatingImage") - ] = None - r"""The URL for the audience rating image.""" - - chapter_source: Annotated[Optional[str], pydantic.Field(alias="chapterSource")] = ( - None - ) - r"""The source from which chapter data is derived.""" - - primary_extra_key: Annotated[ - Optional[str], pydantic.Field(alias="primaryExtraKey") - ] = None - r"""The primary extra key associated with this media item.""" - - original_title: Annotated[Optional[str], pydantic.Field(alias="originalTitle")] = ( - None - ) - r"""The original title of the media item (if different).""" - - parent_rating_key: Annotated[ - Optional[str], pydantic.Field(alias="parentRatingKey") - ] = None - r"""The rating key of the parent media item.""" - - grandparent_rating_key: Annotated[ - Optional[str], pydantic.Field(alias="grandparentRatingKey") - ] = None - r"""The rating key of the grandparent media item.""" - - parent_guid: Annotated[Optional[str], pydantic.Field(alias="parentGuid")] = None - r"""The GUID of the parent media item.""" - - grandparent_guid: Annotated[ - Optional[str], pydantic.Field(alias="grandparentGuid") - ] = None - r"""The GUID of the grandparent media item.""" - - grandparent_slug: Annotated[ - Optional[str], pydantic.Field(alias="grandparentSlug") - ] = None - r"""The slug for the grandparent media item.""" - - grandparent_key: Annotated[ - Optional[str], pydantic.Field(alias="grandparentKey") - ] = None - r"""The key of the grandparent media item.""" - - parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None - r"""The key of the parent media item.""" - - grandparent_title: Annotated[ - Optional[str], pydantic.Field(alias="grandparentTitle") - ] = None - r"""The title of the grandparent media item.""" - - grandparent_thumb: Annotated[ - Optional[str], pydantic.Field(alias="grandparentThumb") - ] = None - r"""The thumbnail URL for the grandparent media item.""" - - grandparent_theme: Annotated[ - Optional[str], pydantic.Field(alias="grandparentTheme") - ] = None - r"""The theme URL for the grandparent media item.""" - - grandparent_art: Annotated[ - Optional[str], pydantic.Field(alias="grandparentArt") - ] = None - r"""The art URL for the grandparent media item.""" - - parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None - r"""The title of the parent media item.""" - - parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None - r"""The index position of the parent media item.""" - - parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None - r"""The thumbnail URL for the parent media item.""" - - rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None - r"""The URL for the rating image.""" - - view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None - r"""The number of times this media item has been viewed.""" - - view_offset: Annotated[Optional[int], pydantic.Field(alias="viewOffset")] = None - r"""The current playback offset (in milliseconds).""" - - skip_count: Annotated[Optional[int], pydantic.Field(alias="skipCount")] = None - r"""The number of times this media item has been skipped.""" - - subtype: Optional[str] = None - r"""A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip.""" - - last_rated_at: Annotated[Optional[int], pydantic.Field(alias="lastRatedAt")] = None - r"""The Unix timestamp representing the last time the item was rated.""" - - created_at_accuracy: Annotated[ - Optional[str], pydantic.Field(alias="createdAtAccuracy") - ] = None - r"""The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available).""" - - created_at_tz_offset: Annotated[ - Optional[str], pydantic.Field(alias="createdAtTZOffset") - ] = None - r"""The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC.""" - - last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( - None - ) - r"""Unix timestamp for when the media item was last viewed.""" - - user_rating: Annotated[Optional[float], pydantic.Field(alias="userRating")] = None - r"""The rating provided by a user for the item. This value is expressed as a decimal number.""" - - image: Annotated[ - Optional[List[GetMediaMetaDataImage]], pydantic.Field(alias="Image") - ] = None - - ultra_blur_colors: Annotated[ - Optional[GetMediaMetaDataUltraBlurColors], - pydantic.Field(alias="UltraBlurColors"), - ] = None - - library_section_id: Annotated[ - Optional[int], pydantic.Field(alias="librarySectionID") - ] = None - r"""The identifier for the library section.""" - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - r"""The title of the library section.""" - - library_section_key: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionKey") - ] = None - r"""The key corresponding to the library section.""" - - guids: Annotated[ - Optional[List[GetMediaMetaDataGuids]], pydantic.Field(alias="Guid") - ] = None - - media: Annotated[ - Optional[List[GetMediaMetaDataMedia]], pydantic.Field(alias="Media") - ] = None - - genre: Annotated[ - Optional[List[GetMediaMetaDataGenre]], pydantic.Field(alias="Genre") - ] = None - - country: Annotated[ - Optional[List[GetMediaMetaDataCountry]], pydantic.Field(alias="Country") - ] = None - - director: Annotated[ - Optional[List[GetMediaMetaDataDirector]], pydantic.Field(alias="Director") - ] = None - - writer: Annotated[ - Optional[List[GetMediaMetaDataWriter]], pydantic.Field(alias="Writer") - ] = None - - producer: Annotated[ - Optional[List[GetMediaMetaDataProducer]], pydantic.Field(alias="Producer") - ] = None - - role: Annotated[ - Optional[List[GetMediaMetaDataRole]], pydantic.Field(alias="Role") - ] = None - - ratings: Annotated[ - Optional[List[GetMediaMetaDataRatings]], pydantic.Field(alias="Rating") - ] = None - - similar: Annotated[ - Optional[List[GetMediaMetaDataSimilar]], pydantic.Field(alias="Similar") - ] = None - - location: Annotated[ - Optional[List[GetMediaMetaDataLocation]], pydantic.Field(alias="Location") - ] = None - - chapter: Annotated[ - Optional[List[GetMediaMetaDataChapter]], pydantic.Field(alias="Chapter") - ] = None - - marker: Annotated[ - Optional[List[GetMediaMetaDataMarker]], pydantic.Field(alias="Marker") - ] = None - - extras: Annotated[ - Optional[GetMediaMetaDataExtras], pydantic.Field(alias="Extras") - ] = None - - -class GetMediaMetaDataMediaContainerTypedDict(TypedDict): - size: int - r"""Number of media items returned in this response.""" - allow_sync: bool - r"""Indicates whether syncing is allowed.""" - identifier: str - r"""An plugin identifier for the media container.""" - media_tag_prefix: str - r"""The prefix used for media tag resource paths.""" - media_tag_version: int - r"""The version number for media tags.""" - metadata: List[GetMediaMetaDataMetadataTypedDict] - r"""An array of metadata items.""" - library_section_id: NotRequired[int] - r"""The unique identifier for the library section.""" - library_section_title: NotRequired[str] - r"""The title of the library section.""" - library_section_uuid: NotRequired[str] - r"""The universally unique identifier for the library section.""" - - -class GetMediaMetaDataMediaContainer(BaseModel): - size: int - r"""Number of media items returned in this response.""" - - allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] - r"""Indicates whether syncing is allowed.""" - - identifier: str - r"""An plugin identifier for the media container.""" - - media_tag_prefix: Annotated[str, pydantic.Field(alias="mediaTagPrefix")] - r"""The prefix used for media tag resource paths.""" - - media_tag_version: Annotated[int, pydantic.Field(alias="mediaTagVersion")] - r"""The version number for media tags.""" - - metadata: Annotated[ - List[GetMediaMetaDataMetadata], pydantic.Field(alias="Metadata") - ] - r"""An array of metadata items.""" - - library_section_id: Annotated[ - Optional[int], pydantic.Field(alias="librarySectionID") - ] = None - r"""The unique identifier for the library section.""" - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - r"""The title of the library section.""" - - library_section_uuid: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionUUID") - ] = None - r"""The universally unique identifier for the library section.""" - - -class GetMediaMetaDataResponseBodyTypedDict(TypedDict): - r"""The metadata of the library item.""" - - media_container: NotRequired[GetMediaMetaDataMediaContainerTypedDict] - - -class GetMediaMetaDataResponseBody(BaseModel): - r"""The metadata of the library item.""" - - media_container: Annotated[ - Optional[GetMediaMetaDataMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetMediaMetaDataResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetMediaMetaDataResponseBodyTypedDict] - r"""The metadata of the library item.""" - - -class GetMediaMetaDataResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetMediaMetaDataResponseBody] = None - r"""The metadata of the library item.""" diff --git a/src/plex_api_client/models/operations/get_media_posters.py b/src/plex_api_client/models/operations/get_media_posters.py deleted file mode 100644 index 70198e0..0000000 --- a/src/plex_api_client/models/operations/get_media_posters.py +++ /dev/null @@ -1,120 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, PathParamMetadata -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetMediaPostersRequestTypedDict(TypedDict): - rating_key: int - r"""the id of the library item to return the posters of.""" - - -class GetMediaPostersRequest(BaseModel): - rating_key: Annotated[ - int, - pydantic.Field(alias="ratingKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""the id of the library item to return the posters of.""" - - -class GetMediaPostersMetadataTypedDict(TypedDict): - key: str - r"""The URL of the poster.""" - rating_key: str - r"""The URL of the poster.""" - selected: bool - r"""Whether this is the selected poster.""" - thumb: str - r"""The URL of the poster thumbnail.""" - provider: NotRequired[str] - r"""The provider of the poster.""" - - -class GetMediaPostersMetadata(BaseModel): - key: str - r"""The URL of the poster.""" - - rating_key: Annotated[str, pydantic.Field(alias="ratingKey")] - r"""The URL of the poster.""" - - selected: bool - r"""Whether this is the selected poster.""" - - thumb: str - r"""The URL of the poster thumbnail.""" - - provider: Optional[str] = None - r"""The provider of the poster.""" - - -class GetMediaPostersMediaContainerTypedDict(TypedDict): - size: int - r"""Number of media items returned in this response.""" - media_tag_version: int - r"""The version number for media tags.""" - media_tag_prefix: str - r"""The prefix used for media tag resource paths.""" - identifier: str - r"""An plugin identifier for the media container.""" - metadata: List[GetMediaPostersMetadataTypedDict] - - -class GetMediaPostersMediaContainer(BaseModel): - size: int - r"""Number of media items returned in this response.""" - - media_tag_version: Annotated[int, pydantic.Field(alias="mediaTagVersion")] - r"""The version number for media tags.""" - - media_tag_prefix: Annotated[str, pydantic.Field(alias="mediaTagPrefix")] - r"""The prefix used for media tag resource paths.""" - - identifier: str - r"""An plugin identifier for the media container.""" - - metadata: Annotated[List[GetMediaPostersMetadata], pydantic.Field(alias="Metadata")] - - -class GetMediaPostersResponseBodyTypedDict(TypedDict): - r"""The available posters for the library item.""" - - media_container: NotRequired[GetMediaPostersMediaContainerTypedDict] - - -class GetMediaPostersResponseBody(BaseModel): - r"""The available posters for the library item.""" - - media_container: Annotated[ - Optional[GetMediaPostersMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetMediaPostersResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetMediaPostersResponseBodyTypedDict] - r"""The available posters for the library item.""" - - -class GetMediaPostersResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetMediaPostersResponseBody] = None - r"""The available posters for the library item.""" diff --git a/src/plex_api_client/models/operations/get_media_providers.py b/src/plex_api_client/models/operations/get_media_providers.py deleted file mode 100644 index c1c926e..0000000 --- a/src/plex_api_client/models/operations/get_media_providers.py +++ /dev/null @@ -1,385 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, HeaderMetadata -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetMediaProvidersRequestTypedDict(TypedDict): - x_plex_token: str - r"""An authentication token, obtained from plex.tv""" - - -class GetMediaProvidersRequest(BaseModel): - x_plex_token: Annotated[ - str, - pydantic.Field(alias="X-Plex-Token"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] - r"""An authentication token, obtained from plex.tv""" - - -class PivotTypedDict(TypedDict): - id: NotRequired[str] - key: NotRequired[str] - type: NotRequired[str] - title: NotRequired[str] - context: NotRequired[str] - symbol: NotRequired[str] - - -class Pivot(BaseModel): - id: Optional[str] = None - - key: Optional[str] = None - - type: Optional[str] = None - - title: Optional[str] = None - - context: Optional[str] = None - - symbol: Optional[str] = None - - -class GetMediaProvidersDirectoryTypedDict(TypedDict): - hub_key: NotRequired[str] - title: NotRequired[str] - agent: NotRequired[str] - language: NotRequired[str] - refreshing: NotRequired[bool] - scanner: NotRequired[str] - uuid: NotRequired[str] - id: NotRequired[str] - key: NotRequired[str] - type: NotRequired[str] - subtype: NotRequired[str] - updated_at: NotRequired[int] - scanned_at: NotRequired[int] - pivot: NotRequired[List[PivotTypedDict]] - - -class GetMediaProvidersDirectory(BaseModel): - hub_key: Annotated[Optional[str], pydantic.Field(alias="hubKey")] = None - - title: Optional[str] = None - - agent: Optional[str] = None - - language: Optional[str] = None - - refreshing: Optional[bool] = None - - scanner: Optional[str] = None - - uuid: Optional[str] = None - - id: Optional[str] = None - - key: Optional[str] = None - - type: Optional[str] = None - - subtype: Optional[str] = None - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - - scanned_at: Annotated[Optional[int], pydantic.Field(alias="scannedAt")] = None - - pivot: Annotated[Optional[List[Pivot]], pydantic.Field(alias="Pivot")] = None - - -class ActionTypedDict(TypedDict): - id: str - key: str - - -class Action(BaseModel): - id: str - - key: str - - -class FeatureTypedDict(TypedDict): - type: str - key: NotRequired[str] - flavor: NotRequired[str] - scrobble_key: NotRequired[str] - unscrobble_key: NotRequired[str] - directory: NotRequired[List[GetMediaProvidersDirectoryTypedDict]] - action: NotRequired[List[ActionTypedDict]] - - -class Feature(BaseModel): - type: str - - key: Optional[str] = None - - flavor: Optional[str] = None - - scrobble_key: Annotated[Optional[str], pydantic.Field(alias="scrobbleKey")] = None - - unscrobble_key: Annotated[Optional[str], pydantic.Field(alias="unscrobbleKey")] = ( - None - ) - - directory: Annotated[ - Optional[List[GetMediaProvidersDirectory]], pydantic.Field(alias="Directory") - ] = None - - action: Annotated[Optional[List[Action]], pydantic.Field(alias="Action")] = None - - -class MediaProviderTypedDict(TypedDict): - identifier: NotRequired[str] - title: NotRequired[str] - types: NotRequired[str] - protocols: NotRequired[str] - feature: NotRequired[List[FeatureTypedDict]] - - -class MediaProvider(BaseModel): - identifier: Optional[str] = None - - title: Optional[str] = None - - types: Optional[str] = None - - protocols: Optional[str] = None - - feature: Annotated[Optional[List[Feature]], pydantic.Field(alias="Feature")] = None - - -class GetMediaProvidersMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - allow_camera_upload: NotRequired[bool] - allow_channel_access: NotRequired[bool] - allow_sharing: NotRequired[bool] - allow_sync: NotRequired[bool] - allow_tuners: NotRequired[bool] - background_processing: NotRequired[bool] - certificate: NotRequired[bool] - companion_proxy: NotRequired[bool] - country_code: NotRequired[str] - diagnostics: NotRequired[str] - event_stream: NotRequired[bool] - friendly_name: NotRequired[str] - livetv: NotRequired[int] - machine_identifier: NotRequired[str] - music_analysis: NotRequired[int] - my_plex: NotRequired[bool] - my_plex_mapping_state: NotRequired[str] - my_plex_signin_state: NotRequired[str] - my_plex_subscription: NotRequired[bool] - my_plex_username: NotRequired[str] - offline_transcode: NotRequired[int] - owner_features: NotRequired[str] - platform: NotRequired[str] - platform_version: NotRequired[str] - plugin_host: NotRequired[bool] - push_notifications: NotRequired[bool] - read_only_libraries: NotRequired[bool] - streaming_brain_abr_version: NotRequired[int] - streaming_brain_version: NotRequired[int] - sync: NotRequired[bool] - transcoder_active_video_sessions: NotRequired[int] - transcoder_audio: NotRequired[bool] - transcoder_lyrics: NotRequired[bool] - transcoder_subtitles: NotRequired[bool] - transcoder_video: NotRequired[bool] - transcoder_video_bitrates: NotRequired[str] - transcoder_video_qualities: NotRequired[str] - transcoder_video_resolutions: NotRequired[str] - updated_at: NotRequired[int] - updater: NotRequired[bool] - version: NotRequired[str] - voice_search: NotRequired[bool] - media_provider: NotRequired[List[MediaProviderTypedDict]] - - -class GetMediaProvidersMediaContainer(BaseModel): - size: Optional[int] = None - - allow_camera_upload: Annotated[ - Optional[bool], pydantic.Field(alias="allowCameraUpload") - ] = None - - allow_channel_access: Annotated[ - Optional[bool], pydantic.Field(alias="allowChannelAccess") - ] = None - - allow_sharing: Annotated[Optional[bool], pydantic.Field(alias="allowSharing")] = ( - None - ) - - allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None - - allow_tuners: Annotated[Optional[bool], pydantic.Field(alias="allowTuners")] = None - - background_processing: Annotated[ - Optional[bool], pydantic.Field(alias="backgroundProcessing") - ] = None - - certificate: Optional[bool] = None - - companion_proxy: Annotated[ - Optional[bool], pydantic.Field(alias="companionProxy") - ] = None - - country_code: Annotated[Optional[str], pydantic.Field(alias="countryCode")] = None - - diagnostics: Optional[str] = None - - event_stream: Annotated[Optional[bool], pydantic.Field(alias="eventStream")] = None - - friendly_name: Annotated[Optional[str], pydantic.Field(alias="friendlyName")] = None - - livetv: Optional[int] = None - - machine_identifier: Annotated[ - Optional[str], pydantic.Field(alias="machineIdentifier") - ] = None - - music_analysis: Annotated[Optional[int], pydantic.Field(alias="musicAnalysis")] = ( - None - ) - - my_plex: Annotated[Optional[bool], pydantic.Field(alias="myPlex")] = None - - my_plex_mapping_state: Annotated[ - Optional[str], pydantic.Field(alias="myPlexMappingState") - ] = None - - my_plex_signin_state: Annotated[ - Optional[str], pydantic.Field(alias="myPlexSigninState") - ] = None - - my_plex_subscription: Annotated[ - Optional[bool], pydantic.Field(alias="myPlexSubscription") - ] = None - - my_plex_username: Annotated[ - Optional[str], pydantic.Field(alias="myPlexUsername") - ] = None - - offline_transcode: Annotated[ - Optional[int], pydantic.Field(alias="offlineTranscode") - ] = None - - owner_features: Annotated[Optional[str], pydantic.Field(alias="ownerFeatures")] = ( - None - ) - - platform: Optional[str] = None - - platform_version: Annotated[ - Optional[str], pydantic.Field(alias="platformVersion") - ] = None - - plugin_host: Annotated[Optional[bool], pydantic.Field(alias="pluginHost")] = None - - push_notifications: Annotated[ - Optional[bool], pydantic.Field(alias="pushNotifications") - ] = None - - read_only_libraries: Annotated[ - Optional[bool], pydantic.Field(alias="readOnlyLibraries") - ] = None - - streaming_brain_abr_version: Annotated[ - Optional[int], pydantic.Field(alias="streamingBrainABRVersion") - ] = None - - streaming_brain_version: Annotated[ - Optional[int], pydantic.Field(alias="streamingBrainVersion") - ] = None - - sync: Optional[bool] = None - - transcoder_active_video_sessions: Annotated[ - Optional[int], pydantic.Field(alias="transcoderActiveVideoSessions") - ] = None - - transcoder_audio: Annotated[ - Optional[bool], pydantic.Field(alias="transcoderAudio") - ] = None - - transcoder_lyrics: Annotated[ - Optional[bool], pydantic.Field(alias="transcoderLyrics") - ] = None - - transcoder_subtitles: Annotated[ - Optional[bool], pydantic.Field(alias="transcoderSubtitles") - ] = None - - transcoder_video: Annotated[ - Optional[bool], pydantic.Field(alias="transcoderVideo") - ] = None - - transcoder_video_bitrates: Annotated[ - Optional[str], pydantic.Field(alias="transcoderVideoBitrates") - ] = None - - transcoder_video_qualities: Annotated[ - Optional[str], pydantic.Field(alias="transcoderVideoQualities") - ] = None - - transcoder_video_resolutions: Annotated[ - Optional[str], pydantic.Field(alias="transcoderVideoResolutions") - ] = None - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - - updater: Optional[bool] = None - - version: Optional[str] = None - - voice_search: Annotated[Optional[bool], pydantic.Field(alias="voiceSearch")] = None - - media_provider: Annotated[ - Optional[List[MediaProvider]], pydantic.Field(alias="MediaProvider") - ] = None - - -class GetMediaProvidersResponseBodyTypedDict(TypedDict): - r"""Media providers and their features""" - - media_container: NotRequired[GetMediaProvidersMediaContainerTypedDict] - - -class GetMediaProvidersResponseBody(BaseModel): - r"""Media providers and their features""" - - media_container: Annotated[ - Optional[GetMediaProvidersMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class GetMediaProvidersResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetMediaProvidersResponseBodyTypedDict] - r"""Media providers and their features""" - - -class GetMediaProvidersResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetMediaProvidersResponseBody] = None - r"""Media providers and their features""" diff --git a/src/plex_api_client/models/operations/get_recently_added.py b/src/plex_api_client/models/operations/get_recently_added.py deleted file mode 100644 index 065ff64..0000000 --- a/src/plex_api_client/models/operations/get_recently_added.py +++ /dev/null @@ -1,1679 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import date -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import ( - FieldMetadata, - QueryParamMetadata, - validate_const, - validate_open_enum, -) -import pydantic -from pydantic.functional_validators import AfterValidator, PlainValidator -from typing import List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict - - -class Type(int, Enum, metaclass=utils.OpenEnumMeta): - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - MOVIE = 1 - TV_SHOW = 2 - SEASON = 3 - EPISODE = 4 - ARTIST = 5 - ALBUM = 6 - TRACK = 7 - PHOTO_ALBUM = 8 - PHOTO = 9 - - -class IncludeMeta(int, Enum): - r"""Adds the Meta object to the response""" - - DISABLE = 0 - ENABLE = 1 - - -class GetRecentlyAddedRequestTypedDict(TypedDict): - content_directory_id: int - r"""The content directory ID.""" - type: Type - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - pinned_content_directory_id: NotRequired[str] - r"""Comma-separated list of pinned content directory IDs.""" - section_id: NotRequired[int] - r"""The library section ID for filtering content.""" - include_meta: NotRequired[IncludeMeta] - r"""Adds the Meta object to the response - - """ - x_plex_container_start: NotRequired[int] - r"""The index of the first item to return. If not specified, the first item will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 0 - - """ - x_plex_container_size: NotRequired[int] - r"""The number of items to return. If not specified, all items will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 50 - - """ - - -class GetRecentlyAddedRequest(BaseModel): - content_directory_id: Annotated[ - int, - pydantic.Field(alias="contentDirectoryID"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The content directory ID.""" - - type: Annotated[ - Annotated[Type, PlainValidator(validate_open_enum(True))], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - pinned_content_directory_id: Annotated[ - Optional[str], - pydantic.Field(alias="pinnedContentDirectoryID"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Comma-separated list of pinned content directory IDs.""" - - section_id: Annotated[ - Optional[int], - pydantic.Field(alias="sectionID"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The library section ID for filtering content.""" - - include_meta: Annotated[ - Optional[IncludeMeta], - pydantic.Field(alias="includeMeta"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = IncludeMeta.DISABLE - r"""Adds the Meta object to the response - - """ - - x_plex_container_start: Annotated[ - Optional[int], - pydantic.Field(alias="X-Plex-Container-Start"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 0 - r"""The index of the first item to return. If not specified, the first item will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 0 - - """ - - x_plex_container_size: Annotated[ - Optional[int], - pydantic.Field(alias="X-Plex-Container-Size"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 50 - r"""The number of items to return. If not specified, all items will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 50 - - """ - - -class GetRecentlyAddedFilterTypedDict(TypedDict): - filter_: str - filter_type: str - key: str - title: str - type: str - advanced: NotRequired[bool] - - -class GetRecentlyAddedFilter(BaseModel): - filter_: Annotated[str, pydantic.Field(alias="filter")] - - filter_type: Annotated[str, pydantic.Field(alias="filterType")] - - key: str - - title: str - - type: str - - advanced: Optional[bool] = None - - -class GetRecentlyAddedActiveDirection(str, Enum): - r"""The direction of the sort. Can be either `asc` or `desc`.""" - - ASCENDING = "asc" - DESCENDING = "desc" - - -class GetRecentlyAddedDefaultDirection(str, Enum): - r"""The direction of the sort. Can be either `asc` or `desc`.""" - - ASCENDING = "asc" - DESCENDING = "desc" - - -class GetRecentlyAddedSortTypedDict(TypedDict): - key: str - title: str - default: NotRequired[str] - active: NotRequired[bool] - active_direction: NotRequired[GetRecentlyAddedActiveDirection] - r"""The direction of the sort. Can be either `asc` or `desc`. - - """ - default_direction: NotRequired[GetRecentlyAddedDefaultDirection] - r"""The direction of the sort. Can be either `asc` or `desc`. - - """ - desc_key: NotRequired[str] - first_character_key: NotRequired[str] - - -class GetRecentlyAddedSort(BaseModel): - key: str - - title: str - - default: Optional[str] = None - - active: Optional[bool] = None - - active_direction: Annotated[ - Optional[GetRecentlyAddedActiveDirection], - pydantic.Field(alias="activeDirection"), - ] = GetRecentlyAddedActiveDirection.ASCENDING - r"""The direction of the sort. Can be either `asc` or `desc`. - - """ - - default_direction: Annotated[ - Optional[GetRecentlyAddedDefaultDirection], - pydantic.Field(alias="defaultDirection"), - ] = GetRecentlyAddedDefaultDirection.ASCENDING - r"""The direction of the sort. Can be either `asc` or `desc`. - - """ - - desc_key: Annotated[Optional[str], pydantic.Field(alias="descKey")] = None - - first_character_key: Annotated[ - Optional[str], pydantic.Field(alias="firstCharacterKey") - ] = None - - -class GetRecentlyAddedFieldTypedDict(TypedDict): - key: str - title: str - type: str - sub_type: NotRequired[str] - - -class GetRecentlyAddedField(BaseModel): - key: str - - title: str - - type: str - - sub_type: Annotated[Optional[str], pydantic.Field(alias="subType")] = None - - -class GetRecentlyAddedTypeTypedDict(TypedDict): - key: str - type: str - title: str - active: bool - subtype: NotRequired[str] - filter_: NotRequired[List[GetRecentlyAddedFilterTypedDict]] - sort: NotRequired[List[GetRecentlyAddedSortTypedDict]] - field: NotRequired[List[GetRecentlyAddedFieldTypedDict]] - - -class GetRecentlyAddedType(BaseModel): - key: str - - type: str - - title: str - - active: bool - - subtype: Optional[str] = None - - filter_: Annotated[ - Optional[List[GetRecentlyAddedFilter]], pydantic.Field(alias="Filter") - ] = None - - sort: Annotated[ - Optional[List[GetRecentlyAddedSort]], pydantic.Field(alias="Sort") - ] = None - - field: Annotated[ - Optional[List[GetRecentlyAddedField]], pydantic.Field(alias="Field") - ] = None - - -class GetRecentlyAddedOperatorTypedDict(TypedDict): - key: str - title: str - - -class GetRecentlyAddedOperator(BaseModel): - key: str - - title: str - - -class GetRecentlyAddedFieldTypeTypedDict(TypedDict): - type: str - operator: List[GetRecentlyAddedOperatorTypedDict] - - -class GetRecentlyAddedFieldType(BaseModel): - type: str - - operator: Annotated[ - List[GetRecentlyAddedOperator], pydantic.Field(alias="Operator") - ] - - -class MetaTypedDict(TypedDict): - r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" - - type: NotRequired[List[GetRecentlyAddedTypeTypedDict]] - field_type: NotRequired[List[GetRecentlyAddedFieldTypeTypedDict]] - - -class Meta(BaseModel): - r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" - - type: Annotated[ - Optional[List[GetRecentlyAddedType]], pydantic.Field(alias="Type") - ] = None - - field_type: Annotated[ - Optional[List[GetRecentlyAddedFieldType]], pydantic.Field(alias="FieldType") - ] = None - - -class GetRecentlyAddedHubsType(str, Enum, metaclass=utils.OpenEnumMeta): - r"""The type of media content in the Plex library. This can represent videos, music, or photos.""" - - MOVIE = "movie" - TV_SHOW = "show" - SEASON = "season" - EPISODE = "episode" - ARTIST = "artist" - ALBUM = "album" - TRACK = "track" - PHOTO_ALBUM = "photoalbum" - PHOTO = "photo" - COLLECTION = "collection" - - -class GetRecentlyAddedHubsResponseType(str, Enum, metaclass=utils.OpenEnumMeta): - COVER_POSTER = "coverPoster" - BACKGROUND = "background" - SNAPSHOT = "snapshot" - CLEAR_LOGO = "clearLogo" - - -class GetRecentlyAddedImageTypedDict(TypedDict): - alt: str - type: GetRecentlyAddedHubsResponseType - url: str - - -class GetRecentlyAddedImage(BaseModel): - alt: str - - type: Annotated[ - GetRecentlyAddedHubsResponseType, PlainValidator(validate_open_enum(False)) - ] - - url: str - - -class UltraBlurColorsTypedDict(TypedDict): - top_left: str - top_right: str - bottom_right: str - bottom_left: str - - -class UltraBlurColors(BaseModel): - top_left: Annotated[str, pydantic.Field(alias="topLeft")] - - top_right: Annotated[str, pydantic.Field(alias="topRight")] - - bottom_right: Annotated[str, pydantic.Field(alias="bottomRight")] - - bottom_left: Annotated[str, pydantic.Field(alias="bottomLeft")] - - -class GuidsTypedDict(TypedDict): - id: str - r"""The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// - - """ - - -class Guids(BaseModel): - id: str - r"""The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// - - """ - - -class One(int, Enum): - ZERO = 0 - ONE = 1 - - -OptimizedForStreamingTypedDict = TypeAliasType( - "OptimizedForStreamingTypedDict", Union[One, bool] -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - -OptimizedForStreaming = TypeAliasType("OptimizedForStreaming", Union[One, bool]) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - -class GetRecentlyAddedOptimizedForStreaming1(int, Enum): - ZERO = 0 - ONE = 1 - - -GetRecentlyAddedOptimizedForStreamingTypedDict = TypeAliasType( - "GetRecentlyAddedOptimizedForStreamingTypedDict", - Union[GetRecentlyAddedOptimizedForStreaming1, bool], -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - -GetRecentlyAddedOptimizedForStreaming = TypeAliasType( - "GetRecentlyAddedOptimizedForStreaming", - Union[GetRecentlyAddedOptimizedForStreaming1, bool], -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - -class HasThumbnail(str, Enum): - r"""Indicates if the part has a thumbnail.""" - - FALSE = "0" - TRUE = "1" - - -class StreamTypedDict(TypedDict): - id: int - r"""Unique stream identifier.""" - codec: str - r"""Codec used by the stream.""" - display_title: str - r"""Display title for the stream.""" - extended_display_title: str - r"""Extended display title for the stream.""" - stream_type: Literal[1] - r"""Stream type: - - VIDEO = 1 - - AUDIO = 2 - - SUBTITLE = 3 - - """ - format_: NotRequired[str] - r"""Format of the stream (e.g., srt).""" - default: NotRequired[bool] - r"""Indicates if this stream is default.""" - index: NotRequired[int] - r"""Index of the stream.""" - bitrate: NotRequired[int] - r"""Bitrate of the stream.""" - language: NotRequired[str] - r"""Language of the stream.""" - language_tag: NotRequired[str] - r"""Language tag (e.g., en).""" - language_code: NotRequired[str] - r"""ISO language code.""" - header_compression: NotRequired[bool] - r"""Indicates whether header compression is enabled.""" - dovibl_compat_id: NotRequired[int] - r"""Dolby Vision BL compatibility ID.""" - dovibl_present: NotRequired[bool] - r"""Indicates if Dolby Vision BL is present.""" - doviel_present: NotRequired[bool] - r"""Indicates if Dolby Vision EL is present.""" - dovi_level: NotRequired[int] - r"""Dolby Vision level.""" - dovi_present: NotRequired[bool] - r"""Indicates if Dolby Vision is present.""" - dovi_profile: NotRequired[int] - r"""Dolby Vision profile.""" - dovirpu_present: NotRequired[bool] - r"""Indicates if Dolby Vision RPU is present.""" - dovi_version: NotRequired[str] - r"""Dolby Vision version.""" - bit_depth: NotRequired[int] - r"""Bit depth of the video stream.""" - chroma_location: NotRequired[str] - r"""Chroma sample location.""" - chroma_subsampling: NotRequired[str] - r"""Chroma subsampling format.""" - coded_height: NotRequired[int] - r"""Coded video height.""" - coded_width: NotRequired[int] - r"""Coded video width.""" - closed_captions: NotRequired[bool] - color_primaries: NotRequired[str] - r"""Color primaries used.""" - color_range: NotRequired[str] - r"""Color range (e.g., tv).""" - color_space: NotRequired[str] - r"""Color space.""" - color_trc: NotRequired[str] - r"""Color transfer characteristics.""" - frame_rate: NotRequired[float] - r"""Frame rate of the stream.""" - key: NotRequired[str] - r"""Key to access this stream part.""" - height: NotRequired[int] - r"""Height of the video stream.""" - level: NotRequired[int] - r"""Video level.""" - original: NotRequired[bool] - r"""Indicates if this is the original stream.""" - has_scaling_matrix: NotRequired[bool] - profile: NotRequired[str] - r"""Video profile.""" - scan_type: NotRequired[str] - embedded_in_video: NotRequired[str] - ref_frames: NotRequired[int] - r"""Number of reference frames.""" - width: NotRequired[int] - r"""Width of the video stream.""" - selected: NotRequired[bool] - r"""Indicates if this stream is selected (applicable for audio streams).""" - forced: NotRequired[bool] - channels: NotRequired[int] - r"""Number of audio channels (for audio streams).""" - audio_channel_layout: NotRequired[str] - r"""Audio channel layout.""" - sampling_rate: NotRequired[int] - r"""Sampling rate for the audio stream.""" - can_auto_sync: NotRequired[bool] - r"""Indicates if the stream can auto-sync.""" - hearing_impaired: NotRequired[bool] - r"""Indicates if the stream is for the hearing impaired.""" - dub: NotRequired[bool] - r"""Indicates if the stream is a dub.""" - title: NotRequired[str] - r"""Optional title for the stream (e.g., language variant).""" - - -class Stream(BaseModel): - id: int - r"""Unique stream identifier.""" - - codec: str - r"""Codec used by the stream.""" - - display_title: Annotated[str, pydantic.Field(alias="displayTitle")] - r"""Display title for the stream.""" - - extended_display_title: Annotated[str, pydantic.Field(alias="extendedDisplayTitle")] - r"""Extended display title for the stream.""" - - STREAM_TYPE: Annotated[ - Annotated[Literal[1], AfterValidator(validate_const(1))], - pydantic.Field(alias="streamType"), - ] = 1 - r"""Stream type: - - VIDEO = 1 - - AUDIO = 2 - - SUBTITLE = 3 - - """ - - format_: Annotated[Optional[str], pydantic.Field(alias="format")] = None - r"""Format of the stream (e.g., srt).""" - - default: Optional[bool] = None - r"""Indicates if this stream is default.""" - - index: Optional[int] = None - r"""Index of the stream.""" - - bitrate: Optional[int] = None - r"""Bitrate of the stream.""" - - language: Optional[str] = None - r"""Language of the stream.""" - - language_tag: Annotated[Optional[str], pydantic.Field(alias="languageTag")] = None - r"""Language tag (e.g., en).""" - - language_code: Annotated[Optional[str], pydantic.Field(alias="languageCode")] = None - r"""ISO language code.""" - - header_compression: Annotated[ - Optional[bool], pydantic.Field(alias="headerCompression") - ] = None - r"""Indicates whether header compression is enabled.""" - - dovibl_compat_id: Annotated[ - Optional[int], pydantic.Field(alias="DOVIBLCompatID") - ] = None - r"""Dolby Vision BL compatibility ID.""" - - dovibl_present: Annotated[Optional[bool], pydantic.Field(alias="DOVIBLPresent")] = ( - None - ) - r"""Indicates if Dolby Vision BL is present.""" - - doviel_present: Annotated[Optional[bool], pydantic.Field(alias="DOVIELPresent")] = ( - None - ) - r"""Indicates if Dolby Vision EL is present.""" - - dovi_level: Annotated[Optional[int], pydantic.Field(alias="DOVILevel")] = None - r"""Dolby Vision level.""" - - dovi_present: Annotated[Optional[bool], pydantic.Field(alias="DOVIPresent")] = None - r"""Indicates if Dolby Vision is present.""" - - dovi_profile: Annotated[Optional[int], pydantic.Field(alias="DOVIProfile")] = None - r"""Dolby Vision profile.""" - - dovirpu_present: Annotated[ - Optional[bool], pydantic.Field(alias="DOVIRPUPresent") - ] = None - r"""Indicates if Dolby Vision RPU is present.""" - - dovi_version: Annotated[Optional[str], pydantic.Field(alias="DOVIVersion")] = None - r"""Dolby Vision version.""" - - bit_depth: Annotated[Optional[int], pydantic.Field(alias="bitDepth")] = None - r"""Bit depth of the video stream.""" - - chroma_location: Annotated[ - Optional[str], pydantic.Field(alias="chromaLocation") - ] = None - r"""Chroma sample location.""" - - chroma_subsampling: Annotated[ - Optional[str], pydantic.Field(alias="chromaSubsampling") - ] = None - r"""Chroma subsampling format.""" - - coded_height: Annotated[Optional[int], pydantic.Field(alias="codedHeight")] = None - r"""Coded video height.""" - - coded_width: Annotated[Optional[int], pydantic.Field(alias="codedWidth")] = None - r"""Coded video width.""" - - closed_captions: Annotated[ - Optional[bool], pydantic.Field(alias="closedCaptions") - ] = None - - color_primaries: Annotated[ - Optional[str], pydantic.Field(alias="colorPrimaries") - ] = None - r"""Color primaries used.""" - - color_range: Annotated[Optional[str], pydantic.Field(alias="colorRange")] = None - r"""Color range (e.g., tv).""" - - color_space: Annotated[Optional[str], pydantic.Field(alias="colorSpace")] = None - r"""Color space.""" - - color_trc: Annotated[Optional[str], pydantic.Field(alias="colorTrc")] = None - r"""Color transfer characteristics.""" - - frame_rate: Annotated[Optional[float], pydantic.Field(alias="frameRate")] = None - r"""Frame rate of the stream.""" - - key: Optional[str] = None - r"""Key to access this stream part.""" - - height: Optional[int] = None - r"""Height of the video stream.""" - - level: Optional[int] = None - r"""Video level.""" - - original: Optional[bool] = None - r"""Indicates if this is the original stream.""" - - has_scaling_matrix: Annotated[ - Optional[bool], pydantic.Field(alias="hasScalingMatrix") - ] = None - - profile: Optional[str] = None - r"""Video profile.""" - - scan_type: Annotated[Optional[str], pydantic.Field(alias="scanType")] = None - - embedded_in_video: Annotated[ - Optional[str], pydantic.Field(alias="embeddedInVideo") - ] = None - - ref_frames: Annotated[Optional[int], pydantic.Field(alias="refFrames")] = None - r"""Number of reference frames.""" - - width: Optional[int] = None - r"""Width of the video stream.""" - - selected: Optional[bool] = None - r"""Indicates if this stream is selected (applicable for audio streams).""" - - forced: Optional[bool] = None - - channels: Optional[int] = None - r"""Number of audio channels (for audio streams).""" - - audio_channel_layout: Annotated[ - Optional[str], pydantic.Field(alias="audioChannelLayout") - ] = None - r"""Audio channel layout.""" - - sampling_rate: Annotated[Optional[int], pydantic.Field(alias="samplingRate")] = None - r"""Sampling rate for the audio stream.""" - - can_auto_sync: Annotated[Optional[bool], pydantic.Field(alias="canAutoSync")] = None - r"""Indicates if the stream can auto-sync.""" - - hearing_impaired: Annotated[ - Optional[bool], pydantic.Field(alias="hearingImpaired") - ] = None - r"""Indicates if the stream is for the hearing impaired.""" - - dub: Optional[bool] = None - r"""Indicates if the stream is a dub.""" - - title: Optional[str] = None - r"""Optional title for the stream (e.g., language variant).""" - - -class PartTypedDict(TypedDict): - id: int - r"""Unique part identifier.""" - key: str - r"""Key to access this part.""" - file: str - r"""File path for the part.""" - size: int - r"""File size in bytes.""" - accessible: NotRequired[bool] - r"""Indicates if the part is accessible.""" - exists: NotRequired[bool] - r"""Indicates if the part exists.""" - indexes: NotRequired[str] - duration: NotRequired[int] - r"""Duration of the part in milliseconds.""" - packet_length: NotRequired[int] - container: NotRequired[str] - r"""Container format of the part.""" - video_profile: NotRequired[str] - r"""Video profile for the part.""" - audio_profile: NotRequired[str] - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - has64bit_offsets: NotRequired[bool] - optimized_for_streaming: NotRequired[GetRecentlyAddedOptimizedForStreamingTypedDict] - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - has_thumbnail: NotRequired[HasThumbnail] - stream: NotRequired[List[StreamTypedDict]] - r"""An array of streams for this part.""" - - -class Part(BaseModel): - id: int - r"""Unique part identifier.""" - - key: str - r"""Key to access this part.""" - - file: str - r"""File path for the part.""" - - size: int - r"""File size in bytes.""" - - accessible: Optional[bool] = None - r"""Indicates if the part is accessible.""" - - exists: Optional[bool] = None - r"""Indicates if the part exists.""" - - indexes: Optional[str] = None - - duration: Optional[int] = None - r"""Duration of the part in milliseconds.""" - - packet_length: Annotated[Optional[int], pydantic.Field(alias="packetLength")] = None - - container: Optional[str] = None - r"""Container format of the part.""" - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - r"""Video profile for the part.""" - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - optimized_for_streaming: Annotated[ - Optional[GetRecentlyAddedOptimizedForStreaming], - pydantic.Field(alias="optimizedForStreaming"), - ] = None - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - has_thumbnail: Annotated[ - Optional[HasThumbnail], pydantic.Field(alias="hasThumbnail") - ] = HasThumbnail.FALSE - - stream: Annotated[Optional[List[Stream]], pydantic.Field(alias="Stream")] = None - r"""An array of streams for this part.""" - - -class MediaTypedDict(TypedDict): - id: int - r"""Unique media identifier.""" - duration: NotRequired[int] - r"""Duration of the media in milliseconds.""" - bitrate: NotRequired[int] - r"""Bitrate in bits per second.""" - width: NotRequired[int] - r"""Video width in pixels.""" - height: NotRequired[int] - r"""Video height in pixels.""" - aspect_ratio: NotRequired[float] - r"""Aspect ratio of the video.""" - audio_channels: NotRequired[int] - r"""Number of audio channels.""" - display_offset: NotRequired[int] - audio_codec: NotRequired[str] - r"""Audio codec used.""" - video_codec: NotRequired[str] - r"""Video codec used.""" - video_resolution: NotRequired[str] - r"""Video resolution (e.g., 4k).""" - container: NotRequired[str] - r"""File container type.""" - video_frame_rate: NotRequired[str] - r"""Frame rate of the video. Values found include NTSC, PAL, 24p - - """ - video_profile: NotRequired[str] - r"""Video profile (e.g., main 10).""" - has_voice_activity: NotRequired[bool] - r"""Indicates whether voice activity is detected.""" - audio_profile: NotRequired[str] - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - optimized_for_streaming: NotRequired[OptimizedForStreamingTypedDict] - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - has64bit_offsets: NotRequired[bool] - part: NotRequired[List[PartTypedDict]] - r"""An array of parts for this media item.""" - - -class Media(BaseModel): - id: int - r"""Unique media identifier.""" - - duration: Optional[int] = None - r"""Duration of the media in milliseconds.""" - - bitrate: Optional[int] = None - r"""Bitrate in bits per second.""" - - width: Optional[int] = None - r"""Video width in pixels.""" - - height: Optional[int] = None - r"""Video height in pixels.""" - - aspect_ratio: Annotated[Optional[float], pydantic.Field(alias="aspectRatio")] = None - r"""Aspect ratio of the video.""" - - audio_channels: Annotated[Optional[int], pydantic.Field(alias="audioChannels")] = ( - None - ) - r"""Number of audio channels.""" - - display_offset: Annotated[Optional[int], pydantic.Field(alias="displayOffset")] = ( - None - ) - - audio_codec: Annotated[Optional[str], pydantic.Field(alias="audioCodec")] = None - r"""Audio codec used.""" - - video_codec: Annotated[Optional[str], pydantic.Field(alias="videoCodec")] = None - r"""Video codec used.""" - - video_resolution: Annotated[ - Optional[str], pydantic.Field(alias="videoResolution") - ] = None - r"""Video resolution (e.g., 4k).""" - - container: Optional[str] = None - r"""File container type.""" - - video_frame_rate: Annotated[ - Optional[str], pydantic.Field(alias="videoFrameRate") - ] = None - r"""Frame rate of the video. Values found include NTSC, PAL, 24p - - """ - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - r"""Video profile (e.g., main 10).""" - - has_voice_activity: Annotated[ - Optional[bool], pydantic.Field(alias="hasVoiceActivity") - ] = None - r"""Indicates whether voice activity is detected.""" - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - - optimized_for_streaming: Annotated[ - Optional[OptimizedForStreaming], pydantic.Field(alias="optimizedForStreaming") - ] = None - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - part: Annotated[Optional[List[Part]], pydantic.Field(alias="Part")] = None - r"""An array of parts for this media item.""" - - -class GenreTypedDict(TypedDict): - r"""The filter query string for similar items.""" - - id: int - r"""The unique identifier for the genre. - NOTE: This is different for each Plex server and is not globally unique. - - """ - filter_: str - tag: str - r"""The genre name of this media-item - - """ - - -class Genre(BaseModel): - r"""The filter query string for similar items.""" - - id: int - r"""The unique identifier for the genre. - NOTE: This is different for each Plex server and is not globally unique. - - """ - - filter_: Annotated[str, pydantic.Field(alias="filter")] - - tag: str - r"""The genre name of this media-item - - """ - - -class CountryTypedDict(TypedDict): - r"""The filter query string for country media items.""" - - id: int - r"""The unique identifier for the country. - NOTE: This is different for each Plex server and is not globally unique. - - """ - tag: str - r"""The country of origin of this media item""" - filter_: str - - -class Country(BaseModel): - r"""The filter query string for country media items.""" - - id: int - r"""The unique identifier for the country. - NOTE: This is different for each Plex server and is not globally unique. - - """ - - tag: str - r"""The country of origin of this media item""" - - filter_: Annotated[str, pydantic.Field(alias="filter")] - - -class DirectorTypedDict(TypedDict): - id: int - r"""Unique identifier for the director.""" - filter_: str - r"""The filter string used to query this director.""" - tag: str - r"""The role of Director""" - tag_key: str - r"""A unique 24-character hexadecimal key associated with the director's tag, used for internal identification.""" - thumb: NotRequired[str] - r"""The absolute URL of the thumbnail image for the director.""" - - -class Director(BaseModel): - id: int - r"""Unique identifier for the director.""" - - filter_: Annotated[str, pydantic.Field(alias="filter")] - r"""The filter string used to query this director.""" - - tag: str - r"""The role of Director""" - - tag_key: Annotated[str, pydantic.Field(alias="tagKey")] - r"""A unique 24-character hexadecimal key associated with the director's tag, used for internal identification.""" - - thumb: Optional[str] = None - r"""The absolute URL of the thumbnail image for the director.""" - - -class WriterTypedDict(TypedDict): - id: int - r"""Unique identifier for the writer.""" - filter_: str - r"""The filter string used to query this writer.""" - tag: str - r"""The role of Writer""" - tag_key: NotRequired[str] - r"""A 24-character hexadecimal unique key associated with the writer’s tag, used for internal identification.""" - thumb: NotRequired[str] - r"""The absolute URL of the thumbnail image for the writer.""" - - -class Writer(BaseModel): - id: int - r"""Unique identifier for the writer.""" - - filter_: Annotated[str, pydantic.Field(alias="filter")] - r"""The filter string used to query this writer.""" - - tag: str - r"""The role of Writer""" - - tag_key: Annotated[Optional[str], pydantic.Field(alias="tagKey")] = None - r"""A 24-character hexadecimal unique key associated with the writer’s tag, used for internal identification.""" - - thumb: Optional[str] = None - r"""The absolute URL of the thumbnail image for the writer.""" - - -class RoleTypedDict(TypedDict): - id: int - r"""The unique identifier for the role. - NOTE: This is different for each Plex server and is not globally unique. - - """ - filter_: str - r"""The filter string used to query this actor. For example, it may indicate that this is an actor with a given key.""" - tag: str - r"""The display tag for the actor (typically the actor's name).""" - tag_key: str - r"""A 24-character hexadecimal unique key associated with the actor's tag, used for internal identification. - NOTE: This is globally unique across all Plex Servers. - - """ - role: NotRequired[str] - r"""The role played by the actor in the media item.""" - thumb: NotRequired[str] - r"""The absolute URL of the thumbnail image for the actor.""" - - -class Role(BaseModel): - id: int - r"""The unique identifier for the role. - NOTE: This is different for each Plex server and is not globally unique. - - """ - - filter_: Annotated[str, pydantic.Field(alias="filter")] - r"""The filter string used to query this actor. For example, it may indicate that this is an actor with a given key.""" - - tag: str - r"""The display tag for the actor (typically the actor's name).""" - - tag_key: Annotated[str, pydantic.Field(alias="tagKey")] - r"""A 24-character hexadecimal unique key associated with the actor's tag, used for internal identification. - NOTE: This is globally unique across all Plex Servers. - - """ - - role: Optional[str] = None - r"""The role played by the actor in the media item.""" - - thumb: Optional[str] = None - r"""The absolute URL of the thumbnail image for the actor.""" - - -class ProducerTypedDict(TypedDict): - id: int - r"""Unique identifier for the producer.""" - filter_: str - r"""The filter string used to query this producer.""" - tag: str - r"""The name of the producer""" - tag_key: str - r"""A 24-character hexadecimal unique key associated with the producer's tag, used for internal identification. - - """ - thumb: NotRequired[str] - r"""The absolute URL of the thumbnail image for the producer.""" - - -class Producer(BaseModel): - id: int - r"""Unique identifier for the producer.""" - - filter_: Annotated[str, pydantic.Field(alias="filter")] - r"""The filter string used to query this producer.""" - - tag: str - r"""The name of the producer""" - - tag_key: Annotated[str, pydantic.Field(alias="tagKey")] - r"""A 24-character hexadecimal unique key associated with the producer's tag, used for internal identification. - - """ - - thumb: Optional[str] = None - r"""The absolute URL of the thumbnail image for the producer.""" - - -class RatingTypedDict(TypedDict): - r"""The type of rating, for example 'audience' or 'critic'.""" - - image: str - r"""The URL for the rating image, for example from IMDb.""" - value: float - type: str - - -class Rating(BaseModel): - r"""The type of rating, for example 'audience' or 'critic'.""" - - image: str - r"""The URL for the rating image, for example from IMDb.""" - - value: float - - type: str - - -class SimilarTypedDict(TypedDict): - r"""The display tag for the similar item, typically the title.""" - - id: int - filter_: str - tag: str - - -class Similar(BaseModel): - r"""The display tag for the similar item, typically the title.""" - - id: int - - filter_: Annotated[str, pydantic.Field(alias="filter")] - - tag: str - - -class LocationTypedDict(TypedDict): - r"""The folder path for the media item.""" - - path: str - - -class Location(BaseModel): - r"""The folder path for the media item.""" - - path: str - - -class CollectionTypedDict(TypedDict): - tag: str - r"""The user-made collection this media item belongs to""" - - -class Collection(BaseModel): - tag: str - r"""The user-made collection this media item belongs to""" - - -class GetRecentlyAddedMetadataTypedDict(TypedDict): - r"""Unknown""" - - added_at: int - art: str - r"""The art image URL for the media item.""" - audience_rating: float - r"""The audience rating for the media item.""" - child_count: int - r"""The number of child items associated with this media item.""" - duration: int - r"""The duration of the media item in milliseconds.""" - guid: str - r"""The globally unique identifier for the media item.""" - index: int - r"""The index position of the media item.""" - key: str - r"""The unique key for the media item.""" - parent_studio: str - r"""The studio of the parent media item.""" - parent_theme: str - r"""The theme URL for the parent media item.""" - rating_key: str - r"""The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API.""" - rating: float - r"""The critic rating for the media item.""" - season_count: int - r"""The total number of seasons (for TV shows).""" - slug: str - r"""A URL‐friendly version of the media title.""" - summary: str - r"""A synopsis of the media item.""" - tagline: str - r"""A brief tagline for the media item.""" - theme: str - r"""The theme URL for the media item.""" - thumb: str - r"""The thumbnail image URL for the media item.""" - title_sort: str - r"""The sort title used for ordering media items.""" - title: str - r"""The title of the media item.""" - type: GetRecentlyAddedHubsType - audience_rating_image: NotRequired[str] - r"""The URL for the audience rating image.""" - chapter_source: NotRequired[str] - r"""The source from which chapter data is derived.""" - content_rating: NotRequired[str] - r"""The content rating for the media item.""" - created_at_accuracy: NotRequired[str] - r"""The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available).""" - created_at_tz_offset: NotRequired[str] - r"""The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC.""" - grandparent_art: NotRequired[str] - r"""The art URL for the grandparent media item.""" - grandparent_guid: NotRequired[str] - r"""The GUID of the grandparent media item.""" - grandparent_key: NotRequired[str] - r"""The key of the grandparent media item.""" - grandparent_rating_key: NotRequired[str] - r"""The rating key of the grandparent media item.""" - grandparent_slug: NotRequired[str] - r"""The slug for the grandparent media item.""" - grandparent_theme: NotRequired[str] - r"""The theme URL for the grandparent media item.""" - grandparent_thumb: NotRequired[str] - r"""The thumbnail URL for the grandparent media item.""" - grandparent_title: NotRequired[str] - r"""The title of the grandparent media item.""" - last_rated_at: NotRequired[int] - r"""The Unix timestamp representing the last time the item was rated.""" - last_viewed_at: NotRequired[int] - r"""Unix timestamp for when the media item was last viewed.""" - leaf_count: NotRequired[int] - r"""The number of leaf items (end nodes) under this media item.""" - library_section_id: NotRequired[int] - r"""The identifier for the library section.""" - library_section_key: NotRequired[str] - r"""The key corresponding to the library section.""" - library_section_title: NotRequired[str] - r"""The title of the library section.""" - original_title: NotRequired[str] - r"""The original title of the media item (if different).""" - originally_available_at: NotRequired[date] - r"""The original release date of the media item.""" - parent_guid: NotRequired[str] - r"""The GUID of the parent media item.""" - parent_index: NotRequired[int] - r"""The index position of the parent media item.""" - parent_key: NotRequired[str] - r"""The key of the parent media item.""" - parent_rating_key: NotRequired[str] - r"""The rating key of the parent media item.""" - parent_slug: NotRequired[str] - r"""The slug for the parent media item.""" - parent_thumb: NotRequired[str] - r"""The thumbnail URL for the parent media item.""" - parent_title: NotRequired[str] - r"""The title of the parent media item.""" - parent_year: NotRequired[int] - r"""The release year of the parent media item.""" - primary_extra_key: NotRequired[str] - r"""The primary extra key associated with this media item.""" - rating_image: NotRequired[str] - r"""The URL for the rating image.""" - skip_count: NotRequired[int] - r"""The number of times this media item has been skipped.""" - studio: NotRequired[str] - r"""The studio that produced the media item.""" - subtype: NotRequired[str] - r"""A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip.""" - updated_at: NotRequired[int] - r"""Unix epoch datetime in seconds""" - user_rating: NotRequired[float] - r"""The rating provided by a user for the item. This value is expressed as a decimal number.""" - view_count: NotRequired[int] - r"""The number of times this media item has been viewed.""" - view_offset: NotRequired[int] - r"""The current playback offset (in milliseconds).""" - viewed_leaf_count: NotRequired[int] - r"""The number of leaf items that have been viewed.""" - year: NotRequired[int] - r"""The release year of the media item.""" - image: NotRequired[List[GetRecentlyAddedImageTypedDict]] - ultra_blur_colors: NotRequired[UltraBlurColorsTypedDict] - guids: NotRequired[List[GuidsTypedDict]] - media: NotRequired[List[MediaTypedDict]] - genre: NotRequired[List[GenreTypedDict]] - country: NotRequired[List[CountryTypedDict]] - director: NotRequired[List[DirectorTypedDict]] - writer: NotRequired[List[WriterTypedDict]] - role: NotRequired[List[RoleTypedDict]] - producer: NotRequired[List[ProducerTypedDict]] - rating1: NotRequired[List[RatingTypedDict]] - similar: NotRequired[List[SimilarTypedDict]] - location: NotRequired[List[LocationTypedDict]] - collection: NotRequired[List[CollectionTypedDict]] - - -class GetRecentlyAddedMetadata(BaseModel): - r"""Unknown""" - - added_at: Annotated[int, pydantic.Field(alias="addedAt")] - - art: str - r"""The art image URL for the media item.""" - - audience_rating: Annotated[float, pydantic.Field(alias="audienceRating")] - r"""The audience rating for the media item.""" - - child_count: Annotated[int, pydantic.Field(alias="childCount")] - r"""The number of child items associated with this media item.""" - - duration: int - r"""The duration of the media item in milliseconds.""" - - guid: str - r"""The globally unique identifier for the media item.""" - - index: int - r"""The index position of the media item.""" - - key: str - r"""The unique key for the media item.""" - - parent_studio: Annotated[str, pydantic.Field(alias="parentStudio")] - r"""The studio of the parent media item.""" - - parent_theme: Annotated[str, pydantic.Field(alias="parentTheme")] - r"""The theme URL for the parent media item.""" - - rating_key: Annotated[str, pydantic.Field(alias="ratingKey")] - r"""The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API.""" - - rating: float - r"""The critic rating for the media item.""" - - season_count: Annotated[int, pydantic.Field(alias="seasonCount")] - r"""The total number of seasons (for TV shows).""" - - slug: str - r"""A URL‐friendly version of the media title.""" - - summary: str - r"""A synopsis of the media item.""" - - tagline: str - r"""A brief tagline for the media item.""" - - theme: str - r"""The theme URL for the media item.""" - - thumb: str - r"""The thumbnail image URL for the media item.""" - - title_sort: Annotated[str, pydantic.Field(alias="titleSort")] - r"""The sort title used for ordering media items.""" - - title: str - r"""The title of the media item.""" - - type: Annotated[GetRecentlyAddedHubsType, PlainValidator(validate_open_enum(False))] - - audience_rating_image: Annotated[ - Optional[str], pydantic.Field(alias="audienceRatingImage") - ] = None - r"""The URL for the audience rating image.""" - - chapter_source: Annotated[Optional[str], pydantic.Field(alias="chapterSource")] = ( - None - ) - r"""The source from which chapter data is derived.""" - - content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( - None - ) - r"""The content rating for the media item.""" - - created_at_accuracy: Annotated[ - Optional[str], pydantic.Field(alias="createdAtAccuracy") - ] = None - r"""The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available).""" - - created_at_tz_offset: Annotated[ - Optional[str], pydantic.Field(alias="createdAtTZOffset") - ] = None - r"""The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC.""" - - grandparent_art: Annotated[ - Optional[str], pydantic.Field(alias="grandparentArt") - ] = None - r"""The art URL for the grandparent media item.""" - - grandparent_guid: Annotated[ - Optional[str], pydantic.Field(alias="grandparentGuid") - ] = None - r"""The GUID of the grandparent media item.""" - - grandparent_key: Annotated[ - Optional[str], pydantic.Field(alias="grandparentKey") - ] = None - r"""The key of the grandparent media item.""" - - grandparent_rating_key: Annotated[ - Optional[str], pydantic.Field(alias="grandparentRatingKey") - ] = None - r"""The rating key of the grandparent media item.""" - - grandparent_slug: Annotated[ - Optional[str], pydantic.Field(alias="grandparentSlug") - ] = None - r"""The slug for the grandparent media item.""" - - grandparent_theme: Annotated[ - Optional[str], pydantic.Field(alias="grandparentTheme") - ] = None - r"""The theme URL for the grandparent media item.""" - - grandparent_thumb: Annotated[ - Optional[str], pydantic.Field(alias="grandparentThumb") - ] = None - r"""The thumbnail URL for the grandparent media item.""" - - grandparent_title: Annotated[ - Optional[str], pydantic.Field(alias="grandparentTitle") - ] = None - r"""The title of the grandparent media item.""" - - last_rated_at: Annotated[Optional[int], pydantic.Field(alias="lastRatedAt")] = None - r"""The Unix timestamp representing the last time the item was rated.""" - - last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( - None - ) - r"""Unix timestamp for when the media item was last viewed.""" - - leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None - r"""The number of leaf items (end nodes) under this media item.""" - - library_section_id: Annotated[ - Optional[int], pydantic.Field(alias="librarySectionID") - ] = None - r"""The identifier for the library section.""" - - library_section_key: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionKey") - ] = None - r"""The key corresponding to the library section.""" - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - r"""The title of the library section.""" - - original_title: Annotated[Optional[str], pydantic.Field(alias="originalTitle")] = ( - None - ) - r"""The original title of the media item (if different).""" - - originally_available_at: Annotated[ - Optional[date], pydantic.Field(alias="originallyAvailableAt") - ] = None - r"""The original release date of the media item.""" - - parent_guid: Annotated[Optional[str], pydantic.Field(alias="parentGuid")] = None - r"""The GUID of the parent media item.""" - - parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None - r"""The index position of the parent media item.""" - - parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None - r"""The key of the parent media item.""" - - parent_rating_key: Annotated[ - Optional[str], pydantic.Field(alias="parentRatingKey") - ] = None - r"""The rating key of the parent media item.""" - - parent_slug: Annotated[Optional[str], pydantic.Field(alias="parentSlug")] = None - r"""The slug for the parent media item.""" - - parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None - r"""The thumbnail URL for the parent media item.""" - - parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None - r"""The title of the parent media item.""" - - parent_year: Annotated[Optional[int], pydantic.Field(alias="parentYear")] = None - r"""The release year of the parent media item.""" - - primary_extra_key: Annotated[ - Optional[str], pydantic.Field(alias="primaryExtraKey") - ] = None - r"""The primary extra key associated with this media item.""" - - rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None - r"""The URL for the rating image.""" - - skip_count: Annotated[Optional[int], pydantic.Field(alias="skipCount")] = None - r"""The number of times this media item has been skipped.""" - - studio: Optional[str] = None - r"""The studio that produced the media item.""" - - subtype: Optional[str] = None - r"""A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip.""" - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - r"""Unix epoch datetime in seconds""" - - user_rating: Annotated[Optional[float], pydantic.Field(alias="userRating")] = None - r"""The rating provided by a user for the item. This value is expressed as a decimal number.""" - - view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None - r"""The number of times this media item has been viewed.""" - - view_offset: Annotated[Optional[int], pydantic.Field(alias="viewOffset")] = None - r"""The current playback offset (in milliseconds).""" - - viewed_leaf_count: Annotated[ - Optional[int], pydantic.Field(alias="viewedLeafCount") - ] = None - r"""The number of leaf items that have been viewed.""" - - year: Optional[int] = None - r"""The release year of the media item.""" - - image: Annotated[ - Optional[List[GetRecentlyAddedImage]], pydantic.Field(alias="Image") - ] = None - - ultra_blur_colors: Annotated[ - Optional[UltraBlurColors], pydantic.Field(alias="UltraBlurColors") - ] = None - - guids: Annotated[Optional[List[Guids]], pydantic.Field(alias="Guid")] = None - - media: Annotated[Optional[List[Media]], pydantic.Field(alias="Media")] = None - - genre: Annotated[Optional[List[Genre]], pydantic.Field(alias="Genre")] = None - - country: Annotated[Optional[List[Country]], pydantic.Field(alias="Country")] = None - - director: Annotated[Optional[List[Director]], pydantic.Field(alias="Director")] = ( - None - ) - - writer: Annotated[Optional[List[Writer]], pydantic.Field(alias="Writer")] = None - - role: Annotated[Optional[List[Role]], pydantic.Field(alias="Role")] = None - - producer: Annotated[Optional[List[Producer]], pydantic.Field(alias="Producer")] = ( - None - ) - - rating1: Annotated[Optional[List[Rating]], pydantic.Field(alias="Rating")] = None - - similar: Annotated[Optional[List[Similar]], pydantic.Field(alias="Similar")] = None - - location: Annotated[Optional[List[Location]], pydantic.Field(alias="Location")] = ( - None - ) - - collection: Annotated[ - Optional[List[Collection]], pydantic.Field(alias="Collection") - ] = None - - -class GetRecentlyAddedMediaContainerTypedDict(TypedDict): - size: int - r"""Number of media items returned in this response.""" - total_size: int - r"""Total number of media items in the library.""" - offset: int - r"""Offset value for pagination.""" - allow_sync: bool - r"""Indicates whether syncing is allowed.""" - identifier: str - r"""An plugin identifier for the media container.""" - meta: NotRequired[MetaTypedDict] - r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. - - """ - metadata: NotRequired[List[GetRecentlyAddedMetadataTypedDict]] - r"""An array of metadata items.""" - - -class GetRecentlyAddedMediaContainer(BaseModel): - size: int - r"""Number of media items returned in this response.""" - - total_size: Annotated[int, pydantic.Field(alias="totalSize")] - r"""Total number of media items in the library.""" - - offset: int - r"""Offset value for pagination.""" - - allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] - r"""Indicates whether syncing is allowed.""" - - identifier: str - r"""An plugin identifier for the media container.""" - - meta: Annotated[Optional[Meta], pydantic.Field(alias="Meta")] = None - r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`. - - """ - - metadata: Annotated[ - Optional[List[GetRecentlyAddedMetadata]], pydantic.Field(alias="Metadata") - ] = None - r"""An array of metadata items.""" - - -class GetRecentlyAddedResponseBodyTypedDict(TypedDict): - r"""A successful response with recently added content.""" - - media_container: NotRequired[GetRecentlyAddedMediaContainerTypedDict] - - -class GetRecentlyAddedResponseBody(BaseModel): - r"""A successful response with recently added content.""" - - media_container: Annotated[ - Optional[GetRecentlyAddedMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetRecentlyAddedResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetRecentlyAddedResponseBodyTypedDict] - r"""A successful response with recently added content.""" - - -class GetRecentlyAddedResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetRecentlyAddedResponseBody] = None - r"""A successful response with recently added content.""" diff --git a/src/plex_api_client/models/operations/get_recently_added_library.py b/src/plex_api_client/models/operations/get_recently_added_library.py deleted file mode 100644 index d7cae25..0000000 --- a/src/plex_api_client/models/operations/get_recently_added_library.py +++ /dev/null @@ -1,659 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import datetime -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata, validate_open_enum -import pydantic -from pydantic.functional_validators import PlainValidator -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class QueryParamType(int, Enum, metaclass=utils.OpenEnumMeta): - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - MOVIE = 1 - TV_SHOW = 2 - SEASON = 3 - EPISODE = 4 - ARTIST = 5 - ALBUM = 6 - TRACK = 7 - PHOTO_ALBUM = 8 - PHOTO = 9 - - -class QueryParamIncludeMeta(int, Enum): - r"""Adds the Meta object to the response""" - - DISABLE = 0 - ENABLE = 1 - - -class GetRecentlyAddedLibraryRequestTypedDict(TypedDict): - type: QueryParamType - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - content_directory_id: NotRequired[int] - pinned_content_directory_id: NotRequired[List[int]] - section_id: NotRequired[int] - r"""The library section ID for filtering content.""" - include_meta: NotRequired[QueryParamIncludeMeta] - r"""Adds the Meta object to the response - - """ - x_plex_container_start: NotRequired[int] - r"""The index of the first item to return. If not specified, the first item will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 0 - - """ - x_plex_container_size: NotRequired[int] - r"""The number of items to return. If not specified, all items will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 50 - - """ - - -class GetRecentlyAddedLibraryRequest(BaseModel): - type: Annotated[ - Annotated[QueryParamType, PlainValidator(validate_open_enum(True))], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - content_directory_id: Annotated[ - Optional[int], - pydantic.Field(alias="contentDirectoryID"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - - pinned_content_directory_id: Annotated[ - Optional[List[int]], - pydantic.Field(alias="pinnedContentDirectoryID"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - - section_id: Annotated[ - Optional[int], - pydantic.Field(alias="sectionID"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The library section ID for filtering content.""" - - include_meta: Annotated[ - Optional[QueryParamIncludeMeta], - pydantic.Field(alias="includeMeta"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = QueryParamIncludeMeta.DISABLE - r"""Adds the Meta object to the response - - """ - - x_plex_container_start: Annotated[ - Optional[int], - pydantic.Field(alias="X-Plex-Container-Start"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 0 - r"""The index of the first item to return. If not specified, the first item will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 0 - - """ - - x_plex_container_size: Annotated[ - Optional[int], - pydantic.Field(alias="X-Plex-Container-Size"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 50 - r"""The number of items to return. If not specified, all items will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 50 - - """ - - -class GetRecentlyAddedLibraryFilterTypedDict(TypedDict): - filter_: str - filter_type: str - key: str - title: str - type: str - advanced: NotRequired[bool] - - -class GetRecentlyAddedLibraryFilter(BaseModel): - filter_: Annotated[str, pydantic.Field(alias="filter")] - - filter_type: Annotated[str, pydantic.Field(alias="filterType")] - - key: str - - title: str - - type: str - - advanced: Optional[bool] = None - - -class ActiveDirection(str, Enum): - r"""The direction of the sort. Can be either `asc` or `desc`.""" - - ASCENDING = "asc" - DESCENDING = "desc" - - -class DefaultDirection(str, Enum): - r"""The direction of the sort. Can be either `asc` or `desc`.""" - - ASCENDING = "asc" - DESCENDING = "desc" - - -class SortTypedDict(TypedDict): - key: str - title: str - default: NotRequired[str] - active: NotRequired[bool] - active_direction: NotRequired[ActiveDirection] - r"""The direction of the sort. Can be either `asc` or `desc`. - - """ - default_direction: NotRequired[DefaultDirection] - r"""The direction of the sort. Can be either `asc` or `desc`. - - """ - desc_key: NotRequired[str] - first_character_key: NotRequired[str] - - -class Sort(BaseModel): - key: str - - title: str - - default: Optional[str] = None - - active: Optional[bool] = None - - active_direction: Annotated[ - Optional[ActiveDirection], pydantic.Field(alias="activeDirection") - ] = ActiveDirection.ASCENDING - r"""The direction of the sort. Can be either `asc` or `desc`. - - """ - - default_direction: Annotated[ - Optional[DefaultDirection], pydantic.Field(alias="defaultDirection") - ] = DefaultDirection.ASCENDING - r"""The direction of the sort. Can be either `asc` or `desc`. - - """ - - desc_key: Annotated[Optional[str], pydantic.Field(alias="descKey")] = None - - first_character_key: Annotated[ - Optional[str], pydantic.Field(alias="firstCharacterKey") - ] = None - - -class FieldTTypedDict(TypedDict): - key: str - title: str - type: str - sub_type: NotRequired[str] - - -class FieldT(BaseModel): - key: str - - title: str - - type: str - - sub_type: Annotated[Optional[str], pydantic.Field(alias="subType")] = None - - -class GetRecentlyAddedLibraryTypeTypedDict(TypedDict): - key: str - type: str - title: str - active: bool - subtype: NotRequired[str] - filter_: NotRequired[List[GetRecentlyAddedLibraryFilterTypedDict]] - sort: NotRequired[List[SortTypedDict]] - field: NotRequired[List[FieldTTypedDict]] - - -class GetRecentlyAddedLibraryType(BaseModel): - key: str - - type: str - - title: str - - active: bool - - subtype: Optional[str] = None - - filter_: Annotated[ - Optional[List[GetRecentlyAddedLibraryFilter]], pydantic.Field(alias="Filter") - ] = None - - sort: Annotated[Optional[List[Sort]], pydantic.Field(alias="Sort")] = None - - field: Annotated[Optional[List[FieldT]], pydantic.Field(alias="Field")] = None - - -class OperatorTypedDict(TypedDict): - key: str - title: str - - -class Operator(BaseModel): - key: str - - title: str - - -class FieldTypeTypedDict(TypedDict): - type: str - operator: List[OperatorTypedDict] - - -class FieldType(BaseModel): - type: str - - operator: Annotated[List[Operator], pydantic.Field(alias="Operator")] - - -class GetRecentlyAddedLibraryPartTypedDict(TypedDict): - id: NotRequired[float] - key: NotRequired[str] - duration: NotRequired[float] - file: NotRequired[str] - size: NotRequired[float] - container: NotRequired[str] - has64bit_offsets: NotRequired[bool] - has_thumbnail: NotRequired[float] - optimized_for_streaming: NotRequired[bool] - video_profile: NotRequired[str] - - -class GetRecentlyAddedLibraryPart(BaseModel): - id: Optional[float] = None - - key: Optional[str] = None - - duration: Optional[float] = None - - file: Optional[str] = None - - size: Optional[float] = None - - container: Optional[str] = None - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - has_thumbnail: Annotated[Optional[float], pydantic.Field(alias="hasThumbnail")] = ( - None - ) - - optimized_for_streaming: Annotated[ - Optional[bool], pydantic.Field(alias="optimizedForStreaming") - ] = None - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - - -class GetRecentlyAddedLibraryMediaTypedDict(TypedDict): - id: NotRequired[float] - duration: NotRequired[float] - bitrate: NotRequired[float] - width: NotRequired[float] - height: NotRequired[float] - aspect_ratio: NotRequired[float] - audio_channels: NotRequired[float] - audio_codec: NotRequired[str] - video_codec: NotRequired[str] - video_resolution: NotRequired[float] - container: NotRequired[str] - video_frame_rate: NotRequired[str] - optimized_for_streaming: NotRequired[float] - has64bit_offsets: NotRequired[bool] - video_profile: NotRequired[str] - part: NotRequired[List[GetRecentlyAddedLibraryPartTypedDict]] - - -class GetRecentlyAddedLibraryMedia(BaseModel): - id: Optional[float] = None - - duration: Optional[float] = None - - bitrate: Optional[float] = None - - width: Optional[float] = None - - height: Optional[float] = None - - aspect_ratio: Annotated[Optional[float], pydantic.Field(alias="aspectRatio")] = None - - audio_channels: Annotated[ - Optional[float], pydantic.Field(alias="audioChannels") - ] = None - - audio_codec: Annotated[Optional[str], pydantic.Field(alias="audioCodec")] = None - - video_codec: Annotated[Optional[str], pydantic.Field(alias="videoCodec")] = None - - video_resolution: Annotated[ - Optional[float], pydantic.Field(alias="videoResolution") - ] = None - - container: Optional[str] = None - - video_frame_rate: Annotated[ - Optional[str], pydantic.Field(alias="videoFrameRate") - ] = None - - optimized_for_streaming: Annotated[ - Optional[float], pydantic.Field(alias="optimizedForStreaming") - ] = None - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - - part: Annotated[ - Optional[List[GetRecentlyAddedLibraryPart]], pydantic.Field(alias="Part") - ] = None - - -class GetRecentlyAddedLibraryGenreTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetRecentlyAddedLibraryGenre(BaseModel): - tag: Optional[str] = None - - -class GetRecentlyAddedLibraryDirectorTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetRecentlyAddedLibraryDirector(BaseModel): - tag: Optional[str] = None - - -class GetRecentlyAddedLibraryWriterTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetRecentlyAddedLibraryWriter(BaseModel): - tag: Optional[str] = None - - -class GetRecentlyAddedLibraryCountryTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetRecentlyAddedLibraryCountry(BaseModel): - tag: Optional[str] = None - - -class GetRecentlyAddedLibraryRoleTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetRecentlyAddedLibraryRole(BaseModel): - tag: Optional[str] = None - - -class GetRecentlyAddedLibraryMetadataTypedDict(TypedDict): - allow_sync: NotRequired[bool] - library_section_id: NotRequired[float] - library_section_title: NotRequired[str] - library_section_uuid: NotRequired[str] - rating_key: NotRequired[float] - key: NotRequired[str] - guid: NotRequired[str] - studio: NotRequired[str] - type: NotRequired[str] - title: NotRequired[str] - content_rating: NotRequired[str] - summary: NotRequired[str] - rating: NotRequired[float] - audience_rating: NotRequired[float] - year: NotRequired[float] - tagline: NotRequired[str] - thumb: NotRequired[str] - art: NotRequired[str] - duration: NotRequired[float] - originally_available_at: NotRequired[datetime] - added_at: NotRequired[float] - updated_at: NotRequired[float] - audience_rating_image: NotRequired[str] - chapter_source: NotRequired[str] - primary_extra_key: NotRequired[str] - rating_image: NotRequired[str] - media: NotRequired[List[GetRecentlyAddedLibraryMediaTypedDict]] - genre: NotRequired[List[GetRecentlyAddedLibraryGenreTypedDict]] - director: NotRequired[List[GetRecentlyAddedLibraryDirectorTypedDict]] - writer: NotRequired[List[GetRecentlyAddedLibraryWriterTypedDict]] - country: NotRequired[List[GetRecentlyAddedLibraryCountryTypedDict]] - role: NotRequired[List[GetRecentlyAddedLibraryRoleTypedDict]] - - -class GetRecentlyAddedLibraryMetadata(BaseModel): - allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None - - library_section_id: Annotated[ - Optional[float], pydantic.Field(alias="librarySectionID") - ] = None - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - - library_section_uuid: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionUUID") - ] = None - - rating_key: Annotated[Optional[float], pydantic.Field(alias="ratingKey")] = None - - key: Optional[str] = None - - guid: Optional[str] = None - - studio: Optional[str] = None - - type: Optional[str] = None - - title: Optional[str] = None - - content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( - None - ) - - summary: Optional[str] = None - - rating: Optional[float] = None - - audience_rating: Annotated[ - Optional[float], pydantic.Field(alias="audienceRating") - ] = None - - year: Optional[float] = None - - tagline: Optional[str] = None - - thumb: Optional[str] = None - - art: Optional[str] = None - - duration: Optional[float] = None - - originally_available_at: Annotated[ - Optional[datetime], pydantic.Field(alias="originallyAvailableAt") - ] = None - - added_at: Annotated[Optional[float], pydantic.Field(alias="addedAt")] = None - - updated_at: Annotated[Optional[float], pydantic.Field(alias="updatedAt")] = None - - audience_rating_image: Annotated[ - Optional[str], pydantic.Field(alias="audienceRatingImage") - ] = None - - chapter_source: Annotated[Optional[str], pydantic.Field(alias="chapterSource")] = ( - None - ) - - primary_extra_key: Annotated[ - Optional[str], pydantic.Field(alias="primaryExtraKey") - ] = None - - rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None - - media: Annotated[ - Optional[List[GetRecentlyAddedLibraryMedia]], pydantic.Field(alias="Media") - ] = None - - genre: Annotated[ - Optional[List[GetRecentlyAddedLibraryGenre]], pydantic.Field(alias="Genre") - ] = None - - director: Annotated[ - Optional[List[GetRecentlyAddedLibraryDirector]], - pydantic.Field(alias="Director"), - ] = None - - writer: Annotated[ - Optional[List[GetRecentlyAddedLibraryWriter]], pydantic.Field(alias="Writer") - ] = None - - country: Annotated[ - Optional[List[GetRecentlyAddedLibraryCountry]], pydantic.Field(alias="Country") - ] = None - - role: Annotated[ - Optional[List[GetRecentlyAddedLibraryRole]], pydantic.Field(alias="Role") - ] = None - - -class GetRecentlyAddedLibraryMediaContainerTypedDict(TypedDict): - r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" - - type: NotRequired[List[GetRecentlyAddedLibraryTypeTypedDict]] - field_type: NotRequired[List[FieldTypeTypedDict]] - size: NotRequired[float] - allow_sync: NotRequired[bool] - identifier: NotRequired[str] - media_tag_prefix: NotRequired[str] - media_tag_version: NotRequired[float] - mixed_parents: NotRequired[bool] - metadata: NotRequired[List[GetRecentlyAddedLibraryMetadataTypedDict]] - - -class GetRecentlyAddedLibraryMediaContainer(BaseModel): - r"""The Meta object is only included in the response if the `includeMeta` parameter is set to `1`.""" - - type: Annotated[ - Optional[List[GetRecentlyAddedLibraryType]], pydantic.Field(alias="Type") - ] = None - - field_type: Annotated[ - Optional[List[FieldType]], pydantic.Field(alias="FieldType") - ] = None - - size: Optional[float] = None - - allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None - - identifier: Optional[str] = None - - media_tag_prefix: Annotated[ - Optional[str], pydantic.Field(alias="mediaTagPrefix") - ] = None - - media_tag_version: Annotated[ - Optional[float], pydantic.Field(alias="mediaTagVersion") - ] = None - - mixed_parents: Annotated[Optional[bool], pydantic.Field(alias="mixedParents")] = ( - None - ) - - metadata: Annotated[ - Optional[List[GetRecentlyAddedLibraryMetadata]], - pydantic.Field(alias="Metadata"), - ] = None - - -class GetRecentlyAddedLibraryResponseBodyTypedDict(TypedDict): - r"""The recently added content""" - - media_container: NotRequired[GetRecentlyAddedLibraryMediaContainerTypedDict] - - -class GetRecentlyAddedLibraryResponseBody(BaseModel): - r"""The recently added content""" - - media_container: Annotated[ - Optional[GetRecentlyAddedLibraryMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class GetRecentlyAddedLibraryResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetRecentlyAddedLibraryResponseBodyTypedDict] - r"""The recently added content""" - - -class GetRecentlyAddedLibraryResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetRecentlyAddedLibraryResponseBody] = None - r"""The recently added content""" diff --git a/src/plex_api_client/models/operations/get_refresh_library_metadata.py b/src/plex_api_client/models/operations/get_refresh_library_metadata.py deleted file mode 100644 index 0527d81..0000000 --- a/src/plex_api_client/models/operations/get_refresh_library_metadata.py +++ /dev/null @@ -1,65 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata -import pydantic -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class Force(int, Enum): - r"""Force the refresh even if the library is already being refreshed.""" - - ZERO = 0 - ONE = 1 - - -class GetRefreshLibraryMetadataRequestTypedDict(TypedDict): - section_key: int - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - force: NotRequired[Force] - r"""Force the refresh even if the library is already being refreshed.""" - - -class GetRefreshLibraryMetadataRequest(BaseModel): - section_key: Annotated[ - int, - pydantic.Field(alias="sectionKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - - force: Annotated[ - Optional[Force], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Force the refresh even if the library is already being refreshed.""" - - -class GetRefreshLibraryMetadataResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class GetRefreshLibraryMetadataResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/get_search_all_libraries.py b/src/plex_api_client/models/operations/get_search_all_libraries.py deleted file mode 100644 index d27e2a4..0000000 --- a/src/plex_api_client/models/operations/get_search_all_libraries.py +++ /dev/null @@ -1,1218 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import date -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import ( - FieldMetadata, - HeaderMetadata, - QueryParamMetadata, - validate_const, - validate_open_enum, -) -import pydantic -from pydantic.functional_validators import AfterValidator, PlainValidator -from typing import List, Literal, Optional, Union -from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict - - -class SearchTypes(str, Enum, metaclass=utils.OpenEnumMeta): - MOVIES = "movies" - MUSIC = "music" - OTHER_VIDEOS = "otherVideos" - PEOPLE = "people" - TV = "tv" - - -class GetSearchAllLibrariesQueryParamIncludeCollections(int, Enum): - r"""Whether to include collections in the search results.""" - - DISABLE = 0 - ENABLE = 1 - - -class GetSearchAllLibrariesQueryParamIncludeExternalMedia(int, Enum): - r"""Whether to include external media in the search results.""" - - DISABLE = 0 - ENABLE = 1 - - -class GetSearchAllLibrariesRequestTypedDict(TypedDict): - query: str - r"""The search query term.""" - client_id: str - r"""An opaque identifier unique to the client (UUID, serial number, or other unique device ID)""" - limit: NotRequired[int] - r"""Limit the number of results returned.""" - search_types: NotRequired[List[SearchTypes]] - r"""A comma-separated list of search types to include. Valid values are: movies, music, otherVideos, people, tv. - - """ - include_collections: NotRequired[GetSearchAllLibrariesQueryParamIncludeCollections] - r"""Whether to include collections in the search results.""" - include_external_media: NotRequired[ - GetSearchAllLibrariesQueryParamIncludeExternalMedia - ] - r"""Whether to include external media in the search results.""" - - -class GetSearchAllLibrariesRequest(BaseModel): - query: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The search query term.""" - - client_id: Annotated[ - str, - pydantic.Field(alias="X-Plex-Client-Identifier"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] - r"""An opaque identifier unique to the client (UUID, serial number, or other unique device ID)""" - - limit: Annotated[ - Optional[int], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Limit the number of results returned.""" - - search_types: Annotated[ - Optional[ - List[Annotated[SearchTypes, PlainValidator(validate_open_enum(False))]] - ], - pydantic.Field(alias="searchTypes"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=False)), - ] = None - r"""A comma-separated list of search types to include. Valid values are: movies, music, otherVideos, people, tv. - - """ - - include_collections: Annotated[ - Optional[GetSearchAllLibrariesQueryParamIncludeCollections], - pydantic.Field(alias="includeCollections"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = GetSearchAllLibrariesQueryParamIncludeCollections.DISABLE - r"""Whether to include collections in the search results.""" - - include_external_media: Annotated[ - Optional[GetSearchAllLibrariesQueryParamIncludeExternalMedia], - pydantic.Field(alias="includeExternalMedia"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = GetSearchAllLibrariesQueryParamIncludeExternalMedia.DISABLE - r"""Whether to include external media in the search results.""" - - -class GetSearchAllLibrariesDirectoryTypedDict(TypedDict): - key: str - r"""The unique identifier path for the search result item.""" - library_section_id: int - r"""The identifier for the library section.""" - library_section_key: str - r"""The key corresponding to the library section.""" - library_section_title: str - r"""The title of the library section.""" - type: str - r"""The type of the directory.""" - id: int - tag: str - library_section_type: Literal[1] - filter_: NotRequired[str] - r"""The filter string used to query this specific item in the library.""" - tag_type: Literal[4] - r"""The type of tag associated with this search result (e.g., Director, Actor).""" - tag_key: NotRequired[str] - r"""The unique identifier for the tag associated with this search result.""" - thumb: NotRequired[str] - r"""The URL to the thumbnail image associated with this search result.""" - count: NotRequired[int] - r"""The number of items associated with this search result.""" - - -class GetSearchAllLibrariesDirectory(BaseModel): - key: str - r"""The unique identifier path for the search result item.""" - - library_section_id: Annotated[int, pydantic.Field(alias="librarySectionID")] - r"""The identifier for the library section.""" - - library_section_key: Annotated[str, pydantic.Field(alias="librarySectionKey")] - r"""The key corresponding to the library section.""" - - library_section_title: Annotated[str, pydantic.Field(alias="librarySectionTitle")] - r"""The title of the library section.""" - - type: str - r"""The type of the directory.""" - - id: int - - tag: str - - LIBRARY_SECTION_TYPE: Annotated[ - Annotated[Optional[Literal[1]], AfterValidator(validate_const(1))], - pydantic.Field(alias="librarySectionType"), - ] = 1 - - filter_: Annotated[Optional[str], pydantic.Field(alias="filter")] = None - r"""The filter string used to query this specific item in the library.""" - - TAG_TYPE: Annotated[ - Annotated[Optional[Literal[4]], AfterValidator(validate_const(4))], - pydantic.Field(alias="tagType"), - ] = 4 - r"""The type of tag associated with this search result (e.g., Director, Actor).""" - - tag_key: Annotated[Optional[str], pydantic.Field(alias="tagKey")] = None - r"""The unique identifier for the tag associated with this search result.""" - - thumb: Optional[str] = None - r"""The URL to the thumbnail image associated with this search result.""" - - count: Optional[int] = None - r"""The number of items associated with this search result.""" - - -class GetSearchAllLibrariesType(str, Enum, metaclass=utils.OpenEnumMeta): - r"""The type of media content in the Plex library. This can represent videos, music, or photos.""" - - MOVIE = "movie" - TV_SHOW = "show" - SEASON = "season" - EPISODE = "episode" - ARTIST = "artist" - ALBUM = "album" - TRACK = "track" - PHOTO_ALBUM = "photoalbum" - PHOTO = "photo" - COLLECTION = "collection" - - -class GetSearchAllLibrariesLibraryType(str, Enum, metaclass=utils.OpenEnumMeta): - COVER_POSTER = "coverPoster" - BACKGROUND = "background" - SNAPSHOT = "snapshot" - CLEAR_LOGO = "clearLogo" - - -class GetSearchAllLibrariesImageTypedDict(TypedDict): - alt: str - type: GetSearchAllLibrariesLibraryType - url: str - - -class GetSearchAllLibrariesImage(BaseModel): - alt: str - - type: Annotated[ - GetSearchAllLibrariesLibraryType, PlainValidator(validate_open_enum(False)) - ] - - url: str - - -class GetSearchAllLibrariesUltraBlurColorsTypedDict(TypedDict): - top_left: str - top_right: str - bottom_right: str - bottom_left: str - - -class GetSearchAllLibrariesUltraBlurColors(BaseModel): - top_left: Annotated[str, pydantic.Field(alias="topLeft")] - - top_right: Annotated[str, pydantic.Field(alias="topRight")] - - bottom_right: Annotated[str, pydantic.Field(alias="bottomRight")] - - bottom_left: Annotated[str, pydantic.Field(alias="bottomLeft")] - - -class GetSearchAllLibrariesGuidsTypedDict(TypedDict): - id: str - r"""The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// - - """ - - -class GetSearchAllLibrariesGuids(BaseModel): - id: str - r"""The unique identifier for the Guid. Can be prefixed with imdb://, tmdb://, tvdb:// - - """ - - -class GetSearchAllLibrariesShowOrdering(str, Enum, metaclass=utils.OpenEnumMeta): - r"""Setting that indicates the episode ordering for the show. - Options: - - None = Library default - - tmdbAiring = The Movie Database (Aired) - - aired = TheTVDB (Aired) - - dvd = TheTVDB (DVD) - - absolute = TheTVDB (Absolute) - - """ - - NONE = "None" - TMDB_AIRING = "tmdbAiring" - TVDB_AIRED = "aired" - TVDB_DVD = "dvd" - TVDB_ABSOLUTE = "absolute" - - -class GetSearchAllLibrariesFlattenSeasons(str, Enum, metaclass=utils.OpenEnumMeta): - r"""Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show).""" - - LIBRARY_DEFAULT = "-1" - HIDE = "0" - SHOW = "1" - - -class GetSearchAllLibrariesOptimizedForStreaming1(int, Enum): - ZERO = 0 - ONE = 1 - - -GetSearchAllLibrariesOptimizedForStreamingTypedDict = TypeAliasType( - "GetSearchAllLibrariesOptimizedForStreamingTypedDict", - Union[GetSearchAllLibrariesOptimizedForStreaming1, bool], -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - -GetSearchAllLibrariesOptimizedForStreaming = TypeAliasType( - "GetSearchAllLibrariesOptimizedForStreaming", - Union[GetSearchAllLibrariesOptimizedForStreaming1, bool], -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - -class GetSearchAllLibrariesOptimizedForStreamingLibrary1(int, Enum): - ZERO = 0 - ONE = 1 - - -GetSearchAllLibrariesLibraryOptimizedForStreamingTypedDict = TypeAliasType( - "GetSearchAllLibrariesLibraryOptimizedForStreamingTypedDict", - Union[GetSearchAllLibrariesOptimizedForStreamingLibrary1, bool], -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - -""" - - -GetSearchAllLibrariesLibraryOptimizedForStreaming = TypeAliasType( - "GetSearchAllLibrariesLibraryOptimizedForStreaming", - Union[GetSearchAllLibrariesOptimizedForStreamingLibrary1, bool], -) -r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - -""" - - -class GetSearchAllLibrariesHasThumbnail(str, Enum): - r"""Indicates if the part has a thumbnail.""" - - FALSE = "0" - TRUE = "1" - - -class GetSearchAllLibrariesPartTypedDict(TypedDict): - id: int - r"""Unique part identifier.""" - accessible: NotRequired[bool] - r"""Indicates if the part is accessible.""" - exists: NotRequired[bool] - r"""Indicates if the part exists.""" - key: NotRequired[str] - r"""Key to access this part.""" - indexes: NotRequired[str] - duration: NotRequired[int] - r"""Duration of the part in milliseconds.""" - file: NotRequired[str] - r"""File path for the part.""" - size: NotRequired[int] - r"""File size in bytes.""" - packet_length: NotRequired[int] - container: NotRequired[str] - r"""Container format of the part.""" - video_profile: NotRequired[str] - r"""Video profile for the part.""" - audio_profile: NotRequired[str] - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - has64bit_offsets: NotRequired[bool] - optimized_for_streaming: NotRequired[ - GetSearchAllLibrariesLibraryOptimizedForStreamingTypedDict - ] - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - """ - has_thumbnail: NotRequired[GetSearchAllLibrariesHasThumbnail] - - -class GetSearchAllLibrariesPart(BaseModel): - id: int - r"""Unique part identifier.""" - - accessible: Optional[bool] = None - r"""Indicates if the part is accessible.""" - - exists: Optional[bool] = None - r"""Indicates if the part exists.""" - - key: Optional[str] = None - r"""Key to access this part.""" - - indexes: Optional[str] = None - - duration: Optional[int] = None - r"""Duration of the part in milliseconds.""" - - file: Optional[str] = None - r"""File path for the part.""" - - size: Optional[int] = None - r"""File size in bytes.""" - - packet_length: Annotated[Optional[int], pydantic.Field(alias="packetLength")] = None - - container: Optional[str] = None - r"""Container format of the part.""" - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - r"""Video profile for the part.""" - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - optimized_for_streaming: Annotated[ - Optional[GetSearchAllLibrariesLibraryOptimizedForStreaming], - pydantic.Field(alias="optimizedForStreaming"), - ] = None - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true - - """ - - has_thumbnail: Annotated[ - Optional[GetSearchAllLibrariesHasThumbnail], - pydantic.Field(alias="hasThumbnail"), - ] = GetSearchAllLibrariesHasThumbnail.FALSE - - -class GetSearchAllLibrariesMediaTypedDict(TypedDict): - id: int - r"""Unique media identifier.""" - duration: NotRequired[int] - r"""Duration of the media in milliseconds.""" - bitrate: NotRequired[int] - r"""Bitrate in bits per second.""" - width: NotRequired[int] - r"""Video width in pixels.""" - height: NotRequired[int] - r"""Video height in pixels.""" - aspect_ratio: NotRequired[float] - r"""Aspect ratio of the video.""" - audio_channels: NotRequired[int] - r"""Number of audio channels.""" - display_offset: NotRequired[int] - audio_codec: NotRequired[str] - r"""Audio codec used.""" - video_codec: NotRequired[str] - r"""Video codec used.""" - video_resolution: NotRequired[str] - r"""Video resolution (e.g., 4k).""" - container: NotRequired[str] - r"""Container format of the media.""" - video_frame_rate: NotRequired[str] - r"""Frame rate of the video. Values found include NTSC, PAL, 24p - - """ - video_profile: NotRequired[str] - r"""Video profile (e.g., main 10).""" - has_voice_activity: NotRequired[bool] - r"""Indicates whether voice activity is detected.""" - audio_profile: NotRequired[str] - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - optimized_for_streaming: NotRequired[ - GetSearchAllLibrariesOptimizedForStreamingTypedDict - ] - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - has64bit_offsets: NotRequired[bool] - r"""Indicates whether the media has 64-bit offsets. - This is relevant for media files that may require larger offsets than what 32-bit integers can provide. - - """ - part: NotRequired[List[GetSearchAllLibrariesPartTypedDict]] - - -class GetSearchAllLibrariesMedia(BaseModel): - id: int - r"""Unique media identifier.""" - - duration: Optional[int] = None - r"""Duration of the media in milliseconds.""" - - bitrate: Optional[int] = None - r"""Bitrate in bits per second.""" - - width: Optional[int] = None - r"""Video width in pixels.""" - - height: Optional[int] = None - r"""Video height in pixels.""" - - aspect_ratio: Annotated[Optional[float], pydantic.Field(alias="aspectRatio")] = None - r"""Aspect ratio of the video.""" - - audio_channels: Annotated[Optional[int], pydantic.Field(alias="audioChannels")] = ( - None - ) - r"""Number of audio channels.""" - - display_offset: Annotated[Optional[int], pydantic.Field(alias="displayOffset")] = ( - None - ) - - audio_codec: Annotated[Optional[str], pydantic.Field(alias="audioCodec")] = None - r"""Audio codec used.""" - - video_codec: Annotated[Optional[str], pydantic.Field(alias="videoCodec")] = None - r"""Video codec used.""" - - video_resolution: Annotated[ - Optional[str], pydantic.Field(alias="videoResolution") - ] = None - r"""Video resolution (e.g., 4k).""" - - container: Optional[str] = None - r"""Container format of the media.""" - - video_frame_rate: Annotated[ - Optional[str], pydantic.Field(alias="videoFrameRate") - ] = None - r"""Frame rate of the video. Values found include NTSC, PAL, 24p - - """ - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - r"""Video profile (e.g., main 10).""" - - has_voice_activity: Annotated[ - Optional[bool], pydantic.Field(alias="hasVoiceActivity") - ] = None - r"""Indicates whether voice activity is detected.""" - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - r"""The audio profile used for the media (e.g., DTS, Dolby Digital, etc.).""" - - optimized_for_streaming: Annotated[ - Optional[GetSearchAllLibrariesOptimizedForStreaming], - pydantic.Field(alias="optimizedForStreaming"), - ] = None - r"""Has this media been optimized for streaming. NOTE: This can be 0, 1, false or true""" - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - r"""Indicates whether the media has 64-bit offsets. - This is relevant for media files that may require larger offsets than what 32-bit integers can provide. - - """ - - part: Annotated[ - Optional[List[GetSearchAllLibrariesPart]], pydantic.Field(alias="Part") - ] = None - - -class GetSearchAllLibrariesGenreTypedDict(TypedDict): - id: int - r"""The unique identifier for the genre. - NOTE: This is different for each Plex server and is not globally unique. - - """ - tag: str - r"""The genre name of this media-item - - """ - - -class GetSearchAllLibrariesGenre(BaseModel): - id: int - r"""The unique identifier for the genre. - NOTE: This is different for each Plex server and is not globally unique. - - """ - - tag: str - r"""The genre name of this media-item - - """ - - -class GetSearchAllLibrariesCountryTypedDict(TypedDict): - id: int - r"""The unique identifier for the country. - NOTE: This is different for each Plex server and is not globally unique. - - """ - tag: str - r"""The country of origin of this media item""" - - -class GetSearchAllLibrariesCountry(BaseModel): - id: int - r"""The unique identifier for the country. - NOTE: This is different for each Plex server and is not globally unique. - - """ - - tag: str - r"""The country of origin of this media item""" - - -class GetSearchAllLibrariesDirectorTypedDict(TypedDict): - id: int - r"""Unique identifier for the director.""" - tag: str - r"""The role of Director""" - thumb: NotRequired[str] - r"""The absolute URL of the thumbnail image for the director.""" - - -class GetSearchAllLibrariesDirector(BaseModel): - id: int - r"""Unique identifier for the director.""" - - tag: str - r"""The role of Director""" - - thumb: Optional[str] = None - r"""The absolute URL of the thumbnail image for the director.""" - - -class GetSearchAllLibrariesWriterTypedDict(TypedDict): - id: int - r"""Unique identifier for the writer.""" - tag: str - r"""The role of Writer""" - thumb: NotRequired[str] - r"""The absolute URL of the thumbnail image for the writer.""" - - -class GetSearchAllLibrariesWriter(BaseModel): - id: int - r"""Unique identifier for the writer.""" - - tag: str - r"""The role of Writer""" - - thumb: Optional[str] = None - r"""The absolute URL of the thumbnail image for the writer.""" - - -class GetSearchAllLibrariesRoleTypedDict(TypedDict): - id: int - r"""The unique identifier for the role. - NOTE: This is different for each Plex server and is not globally unique. - - """ - tag: str - r"""The display tag for the actor (typically the actor's name).""" - role: NotRequired[str] - r"""The role played by the actor in the media item.""" - thumb: NotRequired[str] - r"""The absolute URL of the thumbnail image for the actor.""" - - -class GetSearchAllLibrariesRole(BaseModel): - id: int - r"""The unique identifier for the role. - NOTE: This is different for each Plex server and is not globally unique. - - """ - - tag: str - r"""The display tag for the actor (typically the actor's name).""" - - role: Optional[str] = None - r"""The role played by the actor in the media item.""" - - thumb: Optional[str] = None - r"""The absolute URL of the thumbnail image for the actor.""" - - -class GetSearchAllLibrariesLocationTypedDict(TypedDict): - r"""The folder path for the media item.""" - - path: str - - -class GetSearchAllLibrariesLocation(BaseModel): - r"""The folder path for the media item.""" - - path: str - - -class GetSearchAllLibrariesMetadataTypedDict(TypedDict): - r"""Unknown""" - - rating_key: str - r"""The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API.""" - key: str - r"""The unique key for the media item.""" - guid: str - r"""The globally unique identifier for the media item.""" - slug: str - r"""A URL‐friendly version of the media title.""" - type: GetSearchAllLibrariesType - title: str - r"""The title of the media item.""" - banner: str - r"""The banner image URL for the media item.""" - title_sort: str - r"""The sort title used for ordering media items.""" - summary: str - r"""A synopsis of the media item.""" - rating: float - r"""The critic rating for the media item.""" - audience_rating: float - r"""The audience rating for the media item.""" - tagline: str - r"""A brief tagline for the media item.""" - thumb: str - r"""The thumbnail image URL for the media item.""" - art: str - r"""The art image URL for the media item.""" - theme: str - r"""The theme URL for the media item.""" - index: int - r"""The index position of the media item.""" - child_count: int - r"""The number of child items associated with this media item.""" - season_count: int - r"""The total number of seasons (for TV shows).""" - duration: int - r"""The duration of the media item in milliseconds.""" - added_at: int - studio: NotRequired[str] - r"""The studio that produced the media item.""" - content_rating: NotRequired[str] - r"""The content rating for the media item.""" - year: NotRequired[int] - r"""The release year of the media item.""" - leaf_count: NotRequired[int] - r"""The number of leaf items (end nodes) under this media item.""" - viewed_leaf_count: NotRequired[int] - r"""The number of leaf items that have been viewed.""" - originally_available_at: NotRequired[date] - r"""The original release date of the media item.""" - updated_at: NotRequired[int] - r"""Unix epoch datetime in seconds""" - parent_year: NotRequired[int] - r"""The release year of the parent media item.""" - audience_rating_image: NotRequired[str] - r"""The URL for the audience rating image.""" - chapter_source: NotRequired[str] - r"""The source from which chapter data is derived.""" - primary_extra_key: NotRequired[str] - r"""The primary extra key associated with this media item.""" - original_title: NotRequired[str] - r"""The original title of the media item (if different).""" - parent_rating_key: NotRequired[str] - r"""The rating key of the parent media item.""" - grandparent_rating_key: NotRequired[str] - r"""The rating key of the grandparent media item.""" - parent_guid: NotRequired[str] - r"""The GUID of the parent media item.""" - grandparent_guid: NotRequired[str] - r"""The GUID of the grandparent media item.""" - grandparent_slug: NotRequired[str] - r"""The slug for the grandparent media item.""" - grandparent_key: NotRequired[str] - r"""The key of the grandparent media item.""" - parent_key: NotRequired[str] - r"""The key of the parent media item.""" - grandparent_title: NotRequired[str] - r"""The title of the grandparent media item.""" - grandparent_thumb: NotRequired[str] - r"""The thumbnail URL for the grandparent media item.""" - grandparent_theme: NotRequired[str] - r"""The theme URL for the grandparent media item.""" - grandparent_art: NotRequired[str] - r"""The art URL for the grandparent media item.""" - parent_title: NotRequired[str] - r"""The title of the parent media item.""" - parent_index: NotRequired[int] - r"""The index position of the parent media item.""" - parent_thumb: NotRequired[str] - r"""The thumbnail URL for the parent media item.""" - rating_image: NotRequired[str] - r"""The URL for the rating image.""" - view_count: NotRequired[int] - r"""The number of times this media item has been viewed.""" - view_offset: NotRequired[int] - r"""The current playback offset (in milliseconds).""" - skip_count: NotRequired[int] - r"""The number of times this media item has been skipped.""" - subtype: NotRequired[str] - r"""A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip.""" - last_rated_at: NotRequired[int] - r"""The Unix timestamp representing the last time the item was rated.""" - created_at_accuracy: NotRequired[str] - r"""The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available).""" - created_at_tz_offset: NotRequired[str] - r"""The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC.""" - last_viewed_at: NotRequired[int] - r"""Unix timestamp for when the media item was last viewed.""" - user_rating: NotRequired[float] - r"""The rating provided by a user for the item. This value is expressed as a decimal number.""" - image: NotRequired[List[GetSearchAllLibrariesImageTypedDict]] - ultra_blur_colors: NotRequired[GetSearchAllLibrariesUltraBlurColorsTypedDict] - guids: NotRequired[List[GetSearchAllLibrariesGuidsTypedDict]] - library_section_id: NotRequired[int] - r"""The identifier for the library section.""" - library_section_title: NotRequired[str] - r"""The title of the library section.""" - library_section_key: NotRequired[str] - r"""The key corresponding to the library section.""" - show_ordering: NotRequired[GetSearchAllLibrariesShowOrdering] - r"""Setting that indicates the episode ordering for the show. - Options: - - None = Library default - - tmdbAiring = The Movie Database (Aired) - - aired = TheTVDB (Aired) - - dvd = TheTVDB (DVD) - - absolute = TheTVDB (Absolute) - - """ - flatten_seasons: NotRequired[GetSearchAllLibrariesFlattenSeasons] - r"""Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). - - """ - skip_children: NotRequired[bool] - r"""Indicates whether child items should be skipped.""" - media: NotRequired[List[GetSearchAllLibrariesMediaTypedDict]] - genre: NotRequired[List[GetSearchAllLibrariesGenreTypedDict]] - country: NotRequired[List[GetSearchAllLibrariesCountryTypedDict]] - director: NotRequired[List[GetSearchAllLibrariesDirectorTypedDict]] - writer: NotRequired[List[GetSearchAllLibrariesWriterTypedDict]] - role: NotRequired[List[GetSearchAllLibrariesRoleTypedDict]] - location: NotRequired[List[GetSearchAllLibrariesLocationTypedDict]] - - -class GetSearchAllLibrariesMetadata(BaseModel): - r"""Unknown""" - - rating_key: Annotated[str, pydantic.Field(alias="ratingKey")] - r"""The rating key (Media ID) of this media item. Note: Although this is always an integer, it is represented as a string in the API.""" - - key: str - r"""The unique key for the media item.""" - - guid: str - r"""The globally unique identifier for the media item.""" - - slug: str - r"""A URL‐friendly version of the media title.""" - - type: Annotated[ - GetSearchAllLibrariesType, PlainValidator(validate_open_enum(False)) - ] - - title: str - r"""The title of the media item.""" - - banner: str - r"""The banner image URL for the media item.""" - - title_sort: Annotated[str, pydantic.Field(alias="titleSort")] - r"""The sort title used for ordering media items.""" - - summary: str - r"""A synopsis of the media item.""" - - rating: float - r"""The critic rating for the media item.""" - - audience_rating: Annotated[float, pydantic.Field(alias="audienceRating")] - r"""The audience rating for the media item.""" - - tagline: str - r"""A brief tagline for the media item.""" - - thumb: str - r"""The thumbnail image URL for the media item.""" - - art: str - r"""The art image URL for the media item.""" - - theme: str - r"""The theme URL for the media item.""" - - index: int - r"""The index position of the media item.""" - - child_count: Annotated[int, pydantic.Field(alias="childCount")] - r"""The number of child items associated with this media item.""" - - season_count: Annotated[int, pydantic.Field(alias="seasonCount")] - r"""The total number of seasons (for TV shows).""" - - duration: int - r"""The duration of the media item in milliseconds.""" - - added_at: Annotated[int, pydantic.Field(alias="addedAt")] - - studio: Optional[str] = None - r"""The studio that produced the media item.""" - - content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( - None - ) - r"""The content rating for the media item.""" - - year: Optional[int] = None - r"""The release year of the media item.""" - - leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None - r"""The number of leaf items (end nodes) under this media item.""" - - viewed_leaf_count: Annotated[ - Optional[int], pydantic.Field(alias="viewedLeafCount") - ] = None - r"""The number of leaf items that have been viewed.""" - - originally_available_at: Annotated[ - Optional[date], pydantic.Field(alias="originallyAvailableAt") - ] = None - r"""The original release date of the media item.""" - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - r"""Unix epoch datetime in seconds""" - - parent_year: Annotated[Optional[int], pydantic.Field(alias="parentYear")] = None - r"""The release year of the parent media item.""" - - audience_rating_image: Annotated[ - Optional[str], pydantic.Field(alias="audienceRatingImage") - ] = None - r"""The URL for the audience rating image.""" - - chapter_source: Annotated[Optional[str], pydantic.Field(alias="chapterSource")] = ( - None - ) - r"""The source from which chapter data is derived.""" - - primary_extra_key: Annotated[ - Optional[str], pydantic.Field(alias="primaryExtraKey") - ] = None - r"""The primary extra key associated with this media item.""" - - original_title: Annotated[Optional[str], pydantic.Field(alias="originalTitle")] = ( - None - ) - r"""The original title of the media item (if different).""" - - parent_rating_key: Annotated[ - Optional[str], pydantic.Field(alias="parentRatingKey") - ] = None - r"""The rating key of the parent media item.""" - - grandparent_rating_key: Annotated[ - Optional[str], pydantic.Field(alias="grandparentRatingKey") - ] = None - r"""The rating key of the grandparent media item.""" - - parent_guid: Annotated[Optional[str], pydantic.Field(alias="parentGuid")] = None - r"""The GUID of the parent media item.""" - - grandparent_guid: Annotated[ - Optional[str], pydantic.Field(alias="grandparentGuid") - ] = None - r"""The GUID of the grandparent media item.""" - - grandparent_slug: Annotated[ - Optional[str], pydantic.Field(alias="grandparentSlug") - ] = None - r"""The slug for the grandparent media item.""" - - grandparent_key: Annotated[ - Optional[str], pydantic.Field(alias="grandparentKey") - ] = None - r"""The key of the grandparent media item.""" - - parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None - r"""The key of the parent media item.""" - - grandparent_title: Annotated[ - Optional[str], pydantic.Field(alias="grandparentTitle") - ] = None - r"""The title of the grandparent media item.""" - - grandparent_thumb: Annotated[ - Optional[str], pydantic.Field(alias="grandparentThumb") - ] = None - r"""The thumbnail URL for the grandparent media item.""" - - grandparent_theme: Annotated[ - Optional[str], pydantic.Field(alias="grandparentTheme") - ] = None - r"""The theme URL for the grandparent media item.""" - - grandparent_art: Annotated[ - Optional[str], pydantic.Field(alias="grandparentArt") - ] = None - r"""The art URL for the grandparent media item.""" - - parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None - r"""The title of the parent media item.""" - - parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None - r"""The index position of the parent media item.""" - - parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None - r"""The thumbnail URL for the parent media item.""" - - rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None - r"""The URL for the rating image.""" - - view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None - r"""The number of times this media item has been viewed.""" - - view_offset: Annotated[Optional[int], pydantic.Field(alias="viewOffset")] = None - r"""The current playback offset (in milliseconds).""" - - skip_count: Annotated[Optional[int], pydantic.Field(alias="skipCount")] = None - r"""The number of times this media item has been skipped.""" - - subtype: Optional[str] = None - r"""A classification that further describes the type of media item. For example, 'clip' indicates that the item is a short video clip.""" - - last_rated_at: Annotated[Optional[int], pydantic.Field(alias="lastRatedAt")] = None - r"""The Unix timestamp representing the last time the item was rated.""" - - created_at_accuracy: Annotated[ - Optional[str], pydantic.Field(alias="createdAtAccuracy") - ] = None - r"""The accuracy of the creation timestamp. This value indicates the format(s) provided (for example, 'epoch,local' means both epoch and local time formats are available).""" - - created_at_tz_offset: Annotated[ - Optional[str], pydantic.Field(alias="createdAtTZOffset") - ] = None - r"""The time zone offset for the creation timestamp, represented as a string. This offset indicates the difference from UTC.""" - - last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( - None - ) - r"""Unix timestamp for when the media item was last viewed.""" - - user_rating: Annotated[Optional[float], pydantic.Field(alias="userRating")] = None - r"""The rating provided by a user for the item. This value is expressed as a decimal number.""" - - image: Annotated[ - Optional[List[GetSearchAllLibrariesImage]], pydantic.Field(alias="Image") - ] = None - - ultra_blur_colors: Annotated[ - Optional[GetSearchAllLibrariesUltraBlurColors], - pydantic.Field(alias="UltraBlurColors"), - ] = None - - guids: Annotated[ - Optional[List[GetSearchAllLibrariesGuids]], pydantic.Field(alias="Guid") - ] = None - - library_section_id: Annotated[ - Optional[int], pydantic.Field(alias="librarySectionID") - ] = None - r"""The identifier for the library section.""" - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - r"""The title of the library section.""" - - library_section_key: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionKey") - ] = None - r"""The key corresponding to the library section.""" - - show_ordering: Annotated[ - Annotated[ - Optional[GetSearchAllLibrariesShowOrdering], - PlainValidator(validate_open_enum(False)), - ], - pydantic.Field(alias="showOrdering"), - ] = None - r"""Setting that indicates the episode ordering for the show. - Options: - - None = Library default - - tmdbAiring = The Movie Database (Aired) - - aired = TheTVDB (Aired) - - dvd = TheTVDB (DVD) - - absolute = TheTVDB (Absolute) - - """ - - flatten_seasons: Annotated[ - Annotated[ - Optional[GetSearchAllLibrariesFlattenSeasons], - PlainValidator(validate_open_enum(False)), - ], - pydantic.Field(alias="flattenSeasons"), - ] = None - r"""Setting that indicates if seasons are set to hidden for the show. (-1 = Library default, 0 = Hide, 1 = Show). - - """ - - skip_children: Annotated[Optional[bool], pydantic.Field(alias="skipChildren")] = ( - None - ) - r"""Indicates whether child items should be skipped.""" - - media: Annotated[ - Optional[List[GetSearchAllLibrariesMedia]], pydantic.Field(alias="Media") - ] = None - - genre: Annotated[ - Optional[List[GetSearchAllLibrariesGenre]], pydantic.Field(alias="Genre") - ] = None - - country: Annotated[ - Optional[List[GetSearchAllLibrariesCountry]], pydantic.Field(alias="Country") - ] = None - - director: Annotated[ - Optional[List[GetSearchAllLibrariesDirector]], pydantic.Field(alias="Director") - ] = None - - writer: Annotated[ - Optional[List[GetSearchAllLibrariesWriter]], pydantic.Field(alias="Writer") - ] = None - - role: Annotated[ - Optional[List[GetSearchAllLibrariesRole]], pydantic.Field(alias="Role") - ] = None - - location: Annotated[ - Optional[List[GetSearchAllLibrariesLocation]], pydantic.Field(alias="Location") - ] = None - - -class SearchResultTypedDict(TypedDict): - score: float - r"""The score of the search result, typically a float value between 0 and 1.""" - directory: NotRequired[GetSearchAllLibrariesDirectoryTypedDict] - metadata: NotRequired[GetSearchAllLibrariesMetadataTypedDict] - - -class SearchResult(BaseModel): - score: float - r"""The score of the search result, typically a float value between 0 and 1.""" - - directory: Annotated[ - Optional[GetSearchAllLibrariesDirectory], pydantic.Field(alias="Directory") - ] = None - - metadata: Annotated[ - Optional[GetSearchAllLibrariesMetadata], pydantic.Field(alias="Metadata") - ] = None - - -class GetSearchAllLibrariesMediaContainerTypedDict(TypedDict): - size: int - r"""Number of media items returned in this response.""" - allow_sync: bool - r"""Indicates whether syncing is allowed.""" - identifier: str - r"""An plugin identifier for the media container.""" - media_tag_prefix: str - r"""The prefix used for media tag resource paths.""" - media_tag_version: int - r"""The version number for media tags.""" - search_result: List[SearchResultTypedDict] - library_section_id: NotRequired[int] - r"""The unique identifier for the library section.""" - library_section_title: NotRequired[str] - r"""The title of the library section.""" - library_section_uuid: NotRequired[str] - r"""The universally unique identifier for the library section.""" - - -class GetSearchAllLibrariesMediaContainer(BaseModel): - size: int - r"""Number of media items returned in this response.""" - - allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] - r"""Indicates whether syncing is allowed.""" - - identifier: str - r"""An plugin identifier for the media container.""" - - media_tag_prefix: Annotated[str, pydantic.Field(alias="mediaTagPrefix")] - r"""The prefix used for media tag resource paths.""" - - media_tag_version: Annotated[int, pydantic.Field(alias="mediaTagVersion")] - r"""The version number for media tags.""" - - search_result: Annotated[List[SearchResult], pydantic.Field(alias="SearchResult")] - - library_section_id: Annotated[ - Optional[int], pydantic.Field(alias="librarySectionID") - ] = None - r"""The unique identifier for the library section.""" - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - r"""The title of the library section.""" - - library_section_uuid: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionUUID") - ] = None - r"""The universally unique identifier for the library section.""" - - -class GetSearchAllLibrariesResponseBodyTypedDict(TypedDict): - r"""The libraries available on the Server""" - - media_container: GetSearchAllLibrariesMediaContainerTypedDict - - -class GetSearchAllLibrariesResponseBody(BaseModel): - r"""The libraries available on the Server""" - - media_container: Annotated[ - GetSearchAllLibrariesMediaContainer, pydantic.Field(alias="MediaContainer") - ] - - -class GetSearchAllLibrariesResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetSearchAllLibrariesResponseBodyTypedDict] - r"""The libraries available on the Server""" - - -class GetSearchAllLibrariesResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetSearchAllLibrariesResponseBody] = None - r"""The libraries available on the Server""" diff --git a/src/plex_api_client/models/operations/get_search_library.py b/src/plex_api_client/models/operations/get_search_library.py deleted file mode 100644 index e0b069a..0000000 --- a/src/plex_api_client/models/operations/get_search_library.py +++ /dev/null @@ -1,238 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import ( - FieldMetadata, - PathParamMetadata, - QueryParamMetadata, - validate_open_enum, -) -import pydantic -from pydantic.functional_validators import PlainValidator -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetSearchLibraryQueryParamType(int, Enum, metaclass=utils.OpenEnumMeta): - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - MOVIE = 1 - TV_SHOW = 2 - SEASON = 3 - EPISODE = 4 - ARTIST = 5 - ALBUM = 6 - TRACK = 7 - PHOTO_ALBUM = 8 - PHOTO = 9 - - -class GetSearchLibraryRequestTypedDict(TypedDict): - section_key: int - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - type: GetSearchLibraryQueryParamType - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - -class GetSearchLibraryRequest(BaseModel): - section_key: Annotated[ - int, - pydantic.Field(alias="sectionKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""The unique key of the Plex library. - Note: This is unique in the context of the Plex server. - - """ - - type: Annotated[ - Annotated[ - GetSearchLibraryQueryParamType, PlainValidator(validate_open_enum(True)) - ], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - -class GetSearchLibraryMetadataTypedDict(TypedDict): - rating_key: NotRequired[str] - key: NotRequired[str] - parent_rating_key: NotRequired[str] - guid: NotRequired[str] - parent_guid: NotRequired[str] - parent_studio: NotRequired[str] - type: NotRequired[str] - title: NotRequired[str] - parent_key: NotRequired[str] - parent_title: NotRequired[str] - summary: NotRequired[str] - index: NotRequired[int] - parent_index: NotRequired[int] - parent_year: NotRequired[int] - thumb: NotRequired[str] - art: NotRequired[str] - parent_thumb: NotRequired[str] - parent_theme: NotRequired[str] - added_at: NotRequired[int] - updated_at: NotRequired[int] - - -class GetSearchLibraryMetadata(BaseModel): - rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None - - key: Optional[str] = None - - parent_rating_key: Annotated[ - Optional[str], pydantic.Field(alias="parentRatingKey") - ] = None - - guid: Optional[str] = None - - parent_guid: Annotated[Optional[str], pydantic.Field(alias="parentGuid")] = None - - parent_studio: Annotated[Optional[str], pydantic.Field(alias="parentStudio")] = None - - type: Optional[str] = None - - title: Optional[str] = None - - parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None - - parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None - - summary: Optional[str] = None - - index: Optional[int] = None - - parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None - - parent_year: Annotated[Optional[int], pydantic.Field(alias="parentYear")] = None - - thumb: Optional[str] = None - - art: Optional[str] = None - - parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None - - parent_theme: Annotated[Optional[str], pydantic.Field(alias="parentTheme")] = None - - added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - - -class GetSearchLibraryMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - allow_sync: NotRequired[bool] - art: NotRequired[str] - identifier: NotRequired[str] - media_tag_prefix: NotRequired[str] - media_tag_version: NotRequired[int] - nocache: NotRequired[bool] - thumb: NotRequired[str] - title1: NotRequired[str] - title2: NotRequired[str] - view_group: NotRequired[str] - view_mode: NotRequired[int] - metadata: NotRequired[List[GetSearchLibraryMetadataTypedDict]] - - -class GetSearchLibraryMediaContainer(BaseModel): - size: Optional[int] = None - - allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None - - art: Optional[str] = None - - identifier: Optional[str] = None - - media_tag_prefix: Annotated[ - Optional[str], pydantic.Field(alias="mediaTagPrefix") - ] = None - - media_tag_version: Annotated[ - Optional[int], pydantic.Field(alias="mediaTagVersion") - ] = None - - nocache: Optional[bool] = None - - thumb: Optional[str] = None - - title1: Optional[str] = None - - title2: Optional[str] = None - - view_group: Annotated[Optional[str], pydantic.Field(alias="viewGroup")] = None - - view_mode: Annotated[Optional[int], pydantic.Field(alias="viewMode")] = None - - metadata: Annotated[ - Optional[List[GetSearchLibraryMetadata]], pydantic.Field(alias="Metadata") - ] = None - - -class GetSearchLibraryResponseBodyTypedDict(TypedDict): - r"""The contents of the library by section and type""" - - media_container: NotRequired[GetSearchLibraryMediaContainerTypedDict] - - -class GetSearchLibraryResponseBody(BaseModel): - r"""The contents of the library by section and type""" - - media_container: Annotated[ - Optional[GetSearchLibraryMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetSearchLibraryResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetSearchLibraryResponseBodyTypedDict] - r"""The contents of the library by section and type""" - - -class GetSearchLibraryResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetSearchLibraryResponseBody] = None - r"""The contents of the library by section and type""" diff --git a/src/plex_api_client/models/operations/get_server_identity.py b/src/plex_api_client/models/operations/get_server_identity.py deleted file mode 100644 index 332018f..0000000 --- a/src/plex_api_client/models/operations/get_server_identity.py +++ /dev/null @@ -1,67 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -import pydantic -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetServerIdentityMediaContainerTypedDict(TypedDict): - size: NotRequired[float] - claimed: NotRequired[bool] - machine_identifier: NotRequired[str] - version: NotRequired[str] - - -class GetServerIdentityMediaContainer(BaseModel): - size: Optional[float] = None - - claimed: Optional[bool] = None - - machine_identifier: Annotated[ - Optional[str], pydantic.Field(alias="machineIdentifier") - ] = None - - version: Optional[str] = None - - -class GetServerIdentityResponseBodyTypedDict(TypedDict): - r"""The Server Identity information""" - - media_container: NotRequired[GetServerIdentityMediaContainerTypedDict] - - -class GetServerIdentityResponseBody(BaseModel): - r"""The Server Identity information""" - - media_container: Annotated[ - Optional[GetServerIdentityMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class GetServerIdentityResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetServerIdentityResponseBodyTypedDict] - r"""The Server Identity information""" - - -class GetServerIdentityResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetServerIdentityResponseBody] = None - r"""The Server Identity information""" diff --git a/src/plex_api_client/models/operations/get_server_resources.py b/src/plex_api_client/models/operations/get_server_resources.py deleted file mode 100644 index 8730a28..0000000 --- a/src/plex_api_client/models/operations/get_server_resources.py +++ /dev/null @@ -1,281 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import datetime -from enum import Enum -import httpx -from plex_api_client.types import BaseModel, Nullable, UNSET_SENTINEL -from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata -import pydantic -from pydantic import model_serializer -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -GET_SERVER_RESOURCES_SERVERS = [ - "https://plex.tv/api/v2", -] - - -class IncludeHTTPS(int, Enum): - r"""Include Https entries in the results""" - - DISABLE = 0 - ENABLE = 1 - - -class IncludeRelay(int, Enum): - r"""Include Relay addresses in the results - E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400 - - """ - - DISABLE = 0 - ENABLE = 1 - - -class IncludeIPv6(int, Enum): - r"""Include IPv6 entries in the results""" - - DISABLE = 0 - ENABLE = 1 - - -class GetServerResourcesRequestTypedDict(TypedDict): - client_id: str - r"""An opaque identifier unique to the client (UUID, serial number, or other unique device ID)""" - include_https: NotRequired[IncludeHTTPS] - r"""Include Https entries in the results""" - include_relay: NotRequired[IncludeRelay] - r"""Include Relay addresses in the results - E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400 - - """ - include_i_pv6: NotRequired[IncludeIPv6] - r"""Include IPv6 entries in the results""" - - -class GetServerResourcesRequest(BaseModel): - client_id: Annotated[ - str, - pydantic.Field(alias="X-Plex-Client-Identifier"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] - r"""An opaque identifier unique to the client (UUID, serial number, or other unique device ID)""" - - include_https: Annotated[ - Optional[IncludeHTTPS], - pydantic.Field(alias="includeHttps"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = IncludeHTTPS.DISABLE - r"""Include Https entries in the results""" - - include_relay: Annotated[ - Optional[IncludeRelay], - pydantic.Field(alias="includeRelay"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = IncludeRelay.DISABLE - r"""Include Relay addresses in the results - E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400 - - """ - - include_i_pv6: Annotated[ - Optional[IncludeIPv6], - pydantic.Field(alias="includeIPv6"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = IncludeIPv6.DISABLE - r"""Include IPv6 entries in the results""" - - -class Protocol(str, Enum): - r"""The protocol used for the connection (http, https, etc)""" - - HTTP = "http" - HTTPS = "https" - - -class ConnectionsTypedDict(TypedDict): - protocol: Protocol - r"""The protocol used for the connection (http, https, etc)""" - address: str - r"""The (ip) address or domain name used for the connection""" - port: int - r"""The port used for the connection""" - uri: str - r"""The full URI of the connection""" - local: bool - r"""If the connection is local address""" - relay: bool - r"""If the connection is relayed through plex.direct""" - i_pv6: bool - r"""If the connection is using IPv6""" - - -class Connections(BaseModel): - protocol: Protocol - r"""The protocol used for the connection (http, https, etc)""" - - address: str - r"""The (ip) address or domain name used for the connection""" - - port: int - r"""The port used for the connection""" - - uri: str - r"""The full URI of the connection""" - - local: bool - r"""If the connection is local address""" - - relay: bool - r"""If the connection is relayed through plex.direct""" - - i_pv6: Annotated[bool, pydantic.Field(alias="IPv6")] - r"""If the connection is using IPv6""" - - -class PlexDeviceTypedDict(TypedDict): - name: str - product: str - product_version: str - platform: Nullable[str] - platform_version: Nullable[str] - device: Nullable[str] - client_identifier: str - created_at: datetime - last_seen_at: datetime - provides: str - owner_id: Nullable[int] - r"""ownerId is null when the device is owned by the token used to send the request""" - source_title: Nullable[str] - public_address: str - access_token: str - owned: bool - home: bool - synced: bool - relay: bool - presence: bool - https_required: bool - public_address_matches: bool - dns_rebinding_protection: bool - nat_loopback_supported: bool - connections: List[ConnectionsTypedDict] - - -class PlexDevice(BaseModel): - name: str - - product: str - - product_version: Annotated[str, pydantic.Field(alias="productVersion")] - - platform: Nullable[str] - - platform_version: Annotated[Nullable[str], pydantic.Field(alias="platformVersion")] - - device: Nullable[str] - - client_identifier: Annotated[str, pydantic.Field(alias="clientIdentifier")] - - created_at: Annotated[datetime, pydantic.Field(alias="createdAt")] - - last_seen_at: Annotated[datetime, pydantic.Field(alias="lastSeenAt")] - - provides: str - - owner_id: Annotated[Nullable[int], pydantic.Field(alias="ownerId")] - r"""ownerId is null when the device is owned by the token used to send the request""" - - source_title: Annotated[Nullable[str], pydantic.Field(alias="sourceTitle")] - - public_address: Annotated[str, pydantic.Field(alias="publicAddress")] - - access_token: Annotated[str, pydantic.Field(alias="accessToken")] - - owned: bool - - home: bool - - synced: bool - - relay: bool - - presence: bool - - https_required: Annotated[bool, pydantic.Field(alias="httpsRequired")] - - public_address_matches: Annotated[ - bool, pydantic.Field(alias="publicAddressMatches") - ] - - dns_rebinding_protection: Annotated[ - bool, pydantic.Field(alias="dnsRebindingProtection") - ] - - nat_loopback_supported: Annotated[ - bool, pydantic.Field(alias="natLoopbackSupported") - ] - - connections: List[Connections] - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = [] - nullable_fields = [ - "platform", - "platformVersion", - "device", - "ownerId", - "sourceTitle", - ] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class GetServerResourcesResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - plex_devices: NotRequired[List[PlexDeviceTypedDict]] - r"""List of Plex Devices. This includes Plex hosted servers and clients""" - - -class GetServerResourcesResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - plex_devices: Optional[List[PlexDevice]] = None - r"""List of Plex Devices. This includes Plex hosted servers and clients""" diff --git a/src/plex_api_client/models/operations/get_thumb_image.py b/src/plex_api_client/models/operations/get_thumb_image.py deleted file mode 100644 index ce56059..0000000 --- a/src/plex_api_client/models/operations/get_thumb_image.py +++ /dev/null @@ -1,87 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import ( - FieldMetadata, - HeaderMetadata, - PathParamMetadata, - QueryParamMetadata, -) -import pydantic -from typing import Dict, List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetThumbImageRequestTypedDict(TypedDict): - rating_key: int - r"""the id of the library item to return the children of.""" - width: int - height: int - min_size: int - upscale: int - x_plex_token: str - r"""An authentication token, obtained from plex.tv""" - - -class GetThumbImageRequest(BaseModel): - rating_key: Annotated[ - int, - pydantic.Field(alias="ratingKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""the id of the library item to return the children of.""" - - width: Annotated[ - int, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - - height: Annotated[ - int, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - - min_size: Annotated[ - int, - pydantic.Field(alias="minSize"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - - upscale: Annotated[ - int, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - - x_plex_token: Annotated[ - str, - pydantic.Field(alias="X-Plex-Token"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] - r"""An authentication token, obtained from plex.tv""" - - -class GetThumbImageResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - headers: Dict[str, List[str]] - response_stream: NotRequired[httpx.Response] - r"""Successful response returning an image""" - - -class GetThumbImageResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - headers: Dict[str, List[str]] - - response_stream: Optional[httpx.Response] = None - r"""Successful response returning an image""" diff --git a/src/plex_api_client/models/operations/get_users.py b/src/plex_api_client/models/operations/get_users.py deleted file mode 100644 index 1bbd24e..0000000 --- a/src/plex_api_client/models/operations/get_users.py +++ /dev/null @@ -1,477 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client.types import ( - BaseModel, - Nullable, - OptionalNullable, - UNSET, - UNSET_SENTINEL, -) -from plex_api_client.utils import FieldMetadata, HeaderMetadata -import pydantic -from pydantic import model_serializer -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -GET_USERS_SERVERS = [ - "https://plex.tv/api", -] - - -class GetUsersRequestTypedDict(TypedDict): - client_id: str - r"""An opaque identifier unique to the client (UUID, serial number, or other unique device ID)""" - x_plex_token: str - r"""An authentication token, obtained from plex.tv""" - client_name: NotRequired[str] - r"""The name of the client application. (Plex Web, Plex Media Server, etc.)""" - device_nickname: NotRequired[str] - r"""A relatively friendly name for the client device""" - device_name: NotRequired[str] - r"""The name of the device the client application is running on. This is used to track the client application and its usage. (Chrome, Safari, etc.)""" - device_screen_resolution: NotRequired[str] - r"""The resolution of the device the client application is running on. This is used to track the client application and its usage. (1487x1165,2560x1440)""" - client_version: NotRequired[str] - r"""The version of the client application.""" - platform: NotRequired[str] - r"""The platform of the client application.""" - client_features: NotRequired[str] - r"""The features of the client application. This is used to track the client application and its usage. (external-media,indirect-media,hub-style-list)""" - model: NotRequired[str] - r"""A potentially less friendly identifier for the device model""" - x_plex_session_id: NotRequired[str] - r"""The session ID of the client application. This is used to track the client application and its usage. (97e136ef-4ddd-4ff3-89a7-a5820c96c2ca)""" - x_plex_language: NotRequired[str] - r"""The language of the client application.""" - platform_version: NotRequired[str] - r"""The version of the platform""" - - -class GetUsersRequest(BaseModel): - client_id: Annotated[ - str, - pydantic.Field(alias="X-Plex-Client-Identifier"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] - r"""An opaque identifier unique to the client (UUID, serial number, or other unique device ID)""" - - x_plex_token: Annotated[ - str, - pydantic.Field(alias="X-Plex-Token"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] - r"""An authentication token, obtained from plex.tv""" - - client_name: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Product"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The name of the client application. (Plex Web, Plex Media Server, etc.)""" - - device_nickname: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Device"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""A relatively friendly name for the client device""" - - device_name: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Device-Name"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The name of the device the client application is running on. This is used to track the client application and its usage. (Chrome, Safari, etc.)""" - - device_screen_resolution: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Device-Screen-Resolution"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The resolution of the device the client application is running on. This is used to track the client application and its usage. (1487x1165,2560x1440)""" - - client_version: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Version"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The version of the client application.""" - - platform: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Platform"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The platform of the client application.""" - - client_features: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Features"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The features of the client application. This is used to track the client application and its usage. (external-media,indirect-media,hub-style-list)""" - - model: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Model"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""A potentially less friendly identifier for the device model""" - - x_plex_session_id: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Session-Id"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The session ID of the client application. This is used to track the client application and its usage. (97e136ef-4ddd-4ff3-89a7-a5820c96c2ca)""" - - x_plex_language: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Language"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The language of the client application.""" - - platform_version: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Platform-Version"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The version of the platform""" - - -class Protected(int, Enum): - r"""Indicates whether the account is protected.""" - - DISABLE = 0 - ENABLE = 1 - - -class Home(int, Enum): - r"""Indicates if the user is part of a home group.""" - - DISABLE = 0 - ENABLE = 1 - - -class AllowTuners(int, Enum): - r"""Indicates if the user is allowed to use tuners.""" - - DISABLE = 0 - ENABLE = 1 - - -class AllowSync(int, Enum): - r"""Indicates if the user is allowed to sync media.""" - - DISABLE = 0 - ENABLE = 1 - - -class AllowCameraUpload(int, Enum): - r"""Indicates if the user is allowed to upload from a camera.""" - - DISABLE = 0 - ENABLE = 1 - - -class AllowChannels(int, Enum): - r"""Indicates if the user has access to channels.""" - - DISABLE = 0 - ENABLE = 1 - - -class AllowSubtitleAdmin(int, Enum): - r"""Indicates if the user can manage subtitles.""" - - DISABLE = 0 - ENABLE = 1 - - -class Restricted(int, Enum): - r"""Indicates if the user has restricted access.""" - - DISABLE = 0 - ENABLE = 1 - - -class AllLibraries(int, Enum): - r"""Indicates if the user has access to all libraries.""" - - DISABLE = 0 - ENABLE = 1 - - -class Owned(int, Enum): - r"""Indicates if the user owns the server.""" - - DISABLE = 0 - ENABLE = 1 - - -class Pending(int, Enum): - r"""Indicates if the server is pending approval.""" - - DISABLE = 0 - ENABLE = 1 - - -class GetUsersServerTypedDict(TypedDict): - id: int - r"""Unique ID of the server of the connected user""" - server_id: int - r"""ID of the actual Plex server.""" - machine_identifier: str - r"""Machine identifier of the Plex server.""" - name: str - r"""Name of the Plex server of the connected user.""" - last_seen_at: int - num_libraries: int - r"""Number of libraries in the server this user has access to.""" - all_libraries: NotRequired[AllLibraries] - owned: NotRequired[Owned] - pending: NotRequired[Pending] - - -class GetUsersServer(BaseModel): - id: int - r"""Unique ID of the server of the connected user""" - - server_id: int - r"""ID of the actual Plex server.""" - - machine_identifier: str - r"""Machine identifier of the Plex server.""" - - name: str - r"""Name of the Plex server of the connected user.""" - - last_seen_at: int - - num_libraries: int - r"""Number of libraries in the server this user has access to.""" - - all_libraries: Optional[AllLibraries] = AllLibraries.DISABLE - - owned: Optional[Owned] = Owned.DISABLE - - pending: Optional[Pending] = Pending.DISABLE - - -class UserTypedDict(TypedDict): - id: int - r"""User's unique ID.""" - title: str - r"""User's display name.""" - username: str - r"""User's username.""" - email: str - r"""User's email address.""" - thumb: str - r"""URL to the user's avatar image.""" - server: List[GetUsersServerTypedDict] - r"""List of servers owned by the user.""" - recommendations_playlist_id: NotRequired[Nullable[str]] - r"""ID of the user's recommendation playlist.""" - protected: NotRequired[Protected] - home: NotRequired[Home] - allow_tuners: NotRequired[AllowTuners] - allow_sync: NotRequired[AllowSync] - allow_camera_upload: NotRequired[AllowCameraUpload] - allow_channels: NotRequired[AllowChannels] - allow_subtitle_admin: NotRequired[AllowSubtitleAdmin] - filter_all: NotRequired[Nullable[str]] - r"""Filters applied for all content.""" - filter_movies: NotRequired[Nullable[str]] - r"""Filters applied for movies.""" - filter_music: NotRequired[Nullable[str]] - r"""Filters applied for music.""" - filter_photos: NotRequired[Nullable[str]] - r"""Filters applied for photos.""" - filter_television: NotRequired[str] - r"""Filters applied for television.""" - restricted: NotRequired[Restricted] - - -class User(BaseModel): - id: int - r"""User's unique ID.""" - - title: str - r"""User's display name.""" - - username: str - r"""User's username.""" - - email: str - r"""User's email address.""" - - thumb: str - r"""URL to the user's avatar image.""" - - server: List[GetUsersServer] - r"""List of servers owned by the user.""" - - recommendations_playlist_id: OptionalNullable[str] = UNSET - r"""ID of the user's recommendation playlist.""" - - protected: Optional[Protected] = Protected.DISABLE - - home: Optional[Home] = Home.DISABLE - - allow_tuners: Optional[AllowTuners] = AllowTuners.DISABLE - - allow_sync: Optional[AllowSync] = AllowSync.DISABLE - - allow_camera_upload: Optional[AllowCameraUpload] = AllowCameraUpload.DISABLE - - allow_channels: Optional[AllowChannels] = AllowChannels.DISABLE - - allow_subtitle_admin: Optional[AllowSubtitleAdmin] = AllowSubtitleAdmin.DISABLE - - filter_all: OptionalNullable[str] = UNSET - r"""Filters applied for all content.""" - - filter_movies: OptionalNullable[str] = UNSET - r"""Filters applied for movies.""" - - filter_music: OptionalNullable[str] = UNSET - r"""Filters applied for music.""" - - filter_photos: OptionalNullable[str] = UNSET - r"""Filters applied for photos.""" - - filter_television: Optional[str] = None - r"""Filters applied for television.""" - - restricted: Optional[Restricted] = Restricted.DISABLE - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = [ - "recommendationsPlaylistId", - "protected", - "home", - "allowTuners", - "allowSync", - "allowCameraUpload", - "allowChannels", - "allowSubtitleAdmin", - "filterAll", - "filterMovies", - "filterMusic", - "filterPhotos", - "filterTelevision", - "restricted", - ] - nullable_fields = [ - "recommendationsPlaylistId", - "filterAll", - "filterMovies", - "filterMusic", - "filterPhotos", - ] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class GetUsersMediaContainerTypedDict(TypedDict): - r"""Container holding user and server details.""" - - friendly_name: str - r"""The friendly name of the Plex instance.""" - identifier: str - machine_identifier: str - r"""Unique Machine identifier of the Plex server.""" - total_size: int - r"""Total number of users.""" - size: int - r"""Number of users in the current response.""" - user: List[UserTypedDict] - r"""List of users with access to the Plex server.""" - - -class GetUsersMediaContainer(BaseModel): - r"""Container holding user and server details.""" - - friendly_name: str - r"""The friendly name of the Plex instance.""" - - identifier: str - - machine_identifier: str - r"""Unique Machine identifier of the Plex server.""" - - total_size: int - r"""Total number of users.""" - - size: int - r"""Number of users in the current response.""" - - user: List[User] - r"""List of users with access to the Plex server.""" - - -class GetUsersResponseBodyTypedDict(TypedDict): - r"""Successful response with media container data in XML""" - - media_container: NotRequired[GetUsersMediaContainerTypedDict] - r"""Container holding user and server details.""" - - -class GetUsersResponseBody(BaseModel): - r"""Successful response with media container data in XML""" - - media_container: Optional[GetUsersMediaContainer] = None - r"""Container holding user and server details.""" - - -class GetUsersResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - body: NotRequired[bytes] - - -class GetUsersResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - body: Optional[bytes] = None diff --git a/src/plex_api_client/models/operations/get_watch_list.py b/src/plex_api_client/models/operations/get_watch_list.py deleted file mode 100644 index 8194946..0000000 --- a/src/plex_api_client/models/operations/get_watch_list.py +++ /dev/null @@ -1,386 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import date -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import ( - FieldMetadata, - HeaderMetadata, - PathParamMetadata, - QueryParamMetadata, - validate_open_enum, -) -import pydantic -from pydantic.functional_validators import PlainValidator -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -GET_WATCH_LIST_SERVERS = [ - # The plex discover provider server - "https://discover.provider.plex.tv", -] - - -class Filter(str, Enum, metaclass=utils.OpenEnumMeta): - r"""Filter""" - - ALL = "all" - AVAILABLE = "available" - RELEASED = "released" - - -class Libtype(str, Enum, metaclass=utils.OpenEnumMeta): - r"""The type of library to filter. Can be \"movie\" or \"show\", or all if not present.""" - - MOVIE = "movie" - SHOW = "show" - - -class IncludeCollections(int, Enum): - r"""include collections in the results""" - - ONE = 1 - ZERO = 0 - - -class IncludeExternalMedia(int, Enum): - r"""include external media in the results""" - - ONE = 1 - ZERO = 0 - - -class GetWatchListRequestTypedDict(TypedDict): - filter_: Filter - r"""Filter""" - x_plex_token: str - r"""An authentication token, obtained from plex.tv""" - sort: NotRequired[str] - r"""In the format \"field:dir\". Available fields are \"watchlistedAt\" (Added At), - \"titleSort\" (Title), \"originallyAvailableAt\" (Release Date), or \"rating\" (Critic Rating). - \"dir\" can be \"asc\" or \"desc\" - - """ - libtype: NotRequired[Libtype] - r"""The type of library to filter. Can be \"movie\" or \"show\", or all if not present. - - """ - maxresults: NotRequired[int] - r"""The number of items to return. If not specified, all items will be returned. - If the number of items exceeds the limit, the response will be paginated. - - """ - include_collections: NotRequired[IncludeCollections] - r"""include collections in the results - - """ - include_external_media: NotRequired[IncludeExternalMedia] - r"""include external media in the results - - """ - x_plex_container_start: NotRequired[int] - r"""The index of the first item to return. If not specified, the first item will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 0 - - """ - x_plex_container_size: NotRequired[int] - r"""The number of items to return. If not specified, all items will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 50 - - """ - - -class GetWatchListRequest(BaseModel): - filter_: Annotated[ - Annotated[Filter, PlainValidator(validate_open_enum(False))], - pydantic.Field(alias="filter"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""Filter""" - - x_plex_token: Annotated[ - str, - pydantic.Field(alias="X-Plex-Token"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] - r"""An authentication token, obtained from plex.tv""" - - sort: Annotated[ - Optional[str], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""In the format \"field:dir\". Available fields are \"watchlistedAt\" (Added At), - \"titleSort\" (Title), \"originallyAvailableAt\" (Release Date), or \"rating\" (Critic Rating). - \"dir\" can be \"asc\" or \"desc\" - - """ - - libtype: Annotated[ - Annotated[Optional[Libtype], PlainValidator(validate_open_enum(False))], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The type of library to filter. Can be \"movie\" or \"show\", or all if not present. - - """ - - maxresults: Annotated[ - Optional[int], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The number of items to return. If not specified, all items will be returned. - If the number of items exceeds the limit, the response will be paginated. - - """ - - include_collections: Annotated[ - Optional[IncludeCollections], - pydantic.Field(alias="includeCollections"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""include collections in the results - - """ - - include_external_media: Annotated[ - Optional[IncludeExternalMedia], - pydantic.Field(alias="includeExternalMedia"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""include external media in the results - - """ - - x_plex_container_start: Annotated[ - Optional[int], - pydantic.Field(alias="X-Plex-Container-Start"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 0 - r"""The index of the first item to return. If not specified, the first item will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 0 - - """ - - x_plex_container_size: Annotated[ - Optional[int], - pydantic.Field(alias="X-Plex-Container-Size"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 50 - r"""The number of items to return. If not specified, all items will be returned. - If the number of items exceeds the limit, the response will be paginated. - By default this is 50 - - """ - - -class ImageTypedDict(TypedDict): - alt: NotRequired[str] - type: NotRequired[str] - url: NotRequired[str] - - -class Image(BaseModel): - alt: Optional[str] = None - - type: Optional[str] = None - - url: Optional[str] = None - - -class MetadataTypedDict(TypedDict): - art: NotRequired[str] - guid: NotRequired[str] - key: NotRequired[str] - rating_key: NotRequired[str] - studio: NotRequired[str] - tagline: NotRequired[str] - type: NotRequired[str] - thumb: NotRequired[str] - added_at: NotRequired[int] - duration: NotRequired[int] - public_pages_url: NotRequired[str] - slug: NotRequired[str] - user_state: NotRequired[bool] - title: NotRequired[str] - content_rating: NotRequired[str] - originally_available_at: NotRequired[date] - year: NotRequired[int] - image: NotRequired[List[ImageTypedDict]] - banner: NotRequired[str] - rating: NotRequired[float] - expires_at: NotRequired[int] - original_title: NotRequired[str] - audience_rating: NotRequired[float] - audience_rating_image: NotRequired[str] - rating_image: NotRequired[str] - imdb_rating_count: NotRequired[int] - subtype: NotRequired[str] - theme: NotRequired[str] - leaf_count: NotRequired[int] - child_count: NotRequired[int] - is_continuing_series: NotRequired[bool] - skip_children: NotRequired[bool] - availability_id: NotRequired[str] - streaming_media_id: NotRequired[str] - playable_key: NotRequired[str] - - -class Metadata(BaseModel): - art: Optional[str] = None - - guid: Optional[str] = None - - key: Optional[str] = None - - rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None - - studio: Optional[str] = None - - tagline: Optional[str] = None - - type: Optional[str] = None - - thumb: Optional[str] = None - - added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None - - duration: Optional[int] = None - - public_pages_url: Annotated[ - Optional[str], pydantic.Field(alias="publicPagesURL") - ] = None - - slug: Optional[str] = None - - user_state: Annotated[Optional[bool], pydantic.Field(alias="userState")] = None - - title: Optional[str] = None - - content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( - None - ) - - originally_available_at: Annotated[ - Optional[date], pydantic.Field(alias="originallyAvailableAt") - ] = None - - year: Optional[int] = None - - image: Annotated[Optional[List[Image]], pydantic.Field(alias="Image")] = None - - banner: Optional[str] = None - - rating: Optional[float] = None - - expires_at: Annotated[Optional[int], pydantic.Field(alias="expiresAt")] = None - - original_title: Annotated[Optional[str], pydantic.Field(alias="originalTitle")] = ( - None - ) - - audience_rating: Annotated[ - Optional[float], pydantic.Field(alias="audienceRating") - ] = None - - audience_rating_image: Annotated[ - Optional[str], pydantic.Field(alias="audienceRatingImage") - ] = None - - rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None - - imdb_rating_count: Annotated[ - Optional[int], pydantic.Field(alias="imdbRatingCount") - ] = None - - subtype: Optional[str] = None - - theme: Optional[str] = None - - leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None - - child_count: Annotated[Optional[int], pydantic.Field(alias="childCount")] = None - - is_continuing_series: Annotated[ - Optional[bool], pydantic.Field(alias="isContinuingSeries") - ] = None - - skip_children: Annotated[Optional[bool], pydantic.Field(alias="skipChildren")] = ( - None - ) - - availability_id: Annotated[ - Optional[str], pydantic.Field(alias="availabilityId") - ] = None - - streaming_media_id: Annotated[ - Optional[str], pydantic.Field(alias="streamingMediaId") - ] = None - - playable_key: Annotated[Optional[str], pydantic.Field(alias="playableKey")] = None - - -class GetWatchListResponseBodyTypedDict(TypedDict): - r"""Watchlist Data""" - - library_section_id: NotRequired[str] - library_section_title: NotRequired[str] - offset: NotRequired[int] - total_size: NotRequired[int] - identifier: NotRequired[str] - size: NotRequired[int] - metadata: NotRequired[List[MetadataTypedDict]] - - -class GetWatchListResponseBody(BaseModel): - r"""Watchlist Data""" - - library_section_id: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionID") - ] = None - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - - offset: Optional[int] = None - - total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None - - identifier: Optional[str] = None - - size: Optional[int] = None - - metadata: Annotated[Optional[List[Metadata]], pydantic.Field(alias="Metadata")] = ( - None - ) - - -class GetWatchListResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetWatchListResponseBodyTypedDict] - r"""Watchlist Data""" - - -class GetWatchListResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetWatchListResponseBody] = None - r"""Watchlist Data""" diff --git a/src/plex_api_client/models/operations/getalbums.py b/src/plex_api_client/models/operations/getalbums.py new file mode 100644 index 0000000..a73afdf --- /dev/null +++ b/src/plex_api_client/models/operations/getalbums.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetAlbumsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetAlbumsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetAlbumsRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetAlbumsRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetAlbumsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class GetAlbumsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getallhubs.py b/src/plex_api_client/models/operations/getallhubs.py new file mode 100644 index 0000000..9d5ac13 --- /dev/null +++ b/src/plex_api_client/models/operations/getallhubs.py @@ -0,0 +1,333 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, + hub as components_hub, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetAllHubsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetAllHubsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetAllHubsRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + count: NotRequired[int] + r"""Limit results to count items""" + only_transient: NotRequired[components_boolint.BoolInt] + r"""Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)""" + identifier: NotRequired[List[str]] + r"""If provided, limit to only specified hubs""" + + +class GetAllHubsRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + count: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Limit results to count items""" + + only_transient: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="onlyTransient"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)""" + + identifier: Annotated[ + Optional[List[str]], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""If provided, limit to only specified hubs""" + + +class GetAllHubsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + hub: NotRequired[List[components_hub.HubTypedDict]] + + +class GetAllHubsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + hub: Annotated[Optional[List[components_hub.Hub]], pydantic.Field(alias="Hub")] = ( + None + ) + + +class GetAllHubsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetAllHubsMediaContainerTypedDict] + + +class GetAllHubsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetAllHubsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetAllHubsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[GetAllHubsResponseBodyTypedDict] + r"""OK""" + + +class GetAllHubsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[GetAllHubsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getallitemleaves.py b/src/plex_api_client/models/operations/getallitemleaves.py new file mode 100644 index 0000000..ebc4d94 --- /dev/null +++ b/src/plex_api_client/models/operations/getallitemleaves.py @@ -0,0 +1,256 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetAllItemLeavesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetAllItemLeavesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetAllItemLeavesRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetAllItemLeavesRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetAllItemLeavesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class GetAllItemLeavesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getalllanguages.py b/src/plex_api_client/models/operations/getalllanguages.py new file mode 100644 index 0000000..fef69b6 --- /dev/null +++ b/src/plex_api_client/models/operations/getalllanguages.py @@ -0,0 +1,109 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.types import BaseModel +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class LanguageTypedDict(TypedDict): + code: NotRequired[str] + r"""3 letter language code""" + title: NotRequired[str] + + +class Language(BaseModel): + code: Optional[str] = None + r"""3 letter language code""" + + title: Optional[str] = None + + +class GetAllLanguagesMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + language: NotRequired[List[LanguageTypedDict]] + + +class GetAllLanguagesMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + language: Annotated[Optional[List[Language]], pydantic.Field(alias="Language")] = ( + None + ) + + +class GetAllLanguagesResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetAllLanguagesMediaContainerTypedDict] + + +class GetAllLanguagesResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetAllLanguagesMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetAllLanguagesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[GetAllLanguagesResponseBodyTypedDict] + r"""OK""" + + +class GetAllLanguagesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[GetAllLanguagesResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getallleaves.py b/src/plex_api_client/models/operations/getallleaves.py new file mode 100644 index 0000000..318bd10 --- /dev/null +++ b/src/plex_api_client/models/operations/getallleaves.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetAllLeavesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetAllLeavesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetAllLeavesRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetAllLeavesRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetAllLeavesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class GetAllLeavesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getallpreferences.py b/src/plex_api_client/models/operations/getallpreferences.py new file mode 100644 index 0000000..1b971fc --- /dev/null +++ b/src/plex_api_client/models/operations/getallpreferences.py @@ -0,0 +1,39 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + mediacontainerwithsettings as components_mediacontainerwithsettings, +) +from plex_api_client.types import BaseModel +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class GetAllPreferencesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_settings: NotRequired[ + components_mediacontainerwithsettings.MediaContainerWithSettingsTypedDict + ] + r"""OK""" + + +class GetAllPreferencesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_settings: Optional[ + components_mediacontainerwithsettings.MediaContainerWithSettings + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getallsubscriptions.py b/src/plex_api_client/models/operations/getallsubscriptions.py new file mode 100644 index 0000000..f7dad82 --- /dev/null +++ b/src/plex_api_client/models/operations/getallsubscriptions.py @@ -0,0 +1,270 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, + mediacontainerwithsubscription as components_mediacontainerwithsubscription, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetAllSubscriptionsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetAllSubscriptionsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetAllSubscriptionsRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + include_grabs: NotRequired[components_boolint.BoolInt] + r"""Indicates whether the active grabs should be included as well""" + include_storage: NotRequired[components_boolint.BoolInt] + r"""Compute the storage of recorded items desired by this subscription""" + + +class GetAllSubscriptionsRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + include_grabs: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="includeGrabs"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates whether the active grabs should be included as well""" + + include_storage: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="includeStorage"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Compute the storage of recorded items desired by this subscription""" + + +class GetAllSubscriptionsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_subscription: NotRequired[ + components_mediacontainerwithsubscription.MediaContainerWithSubscriptionTypedDict + ] + r"""OK""" + + +class GetAllSubscriptionsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_subscription: Optional[ + components_mediacontainerwithsubscription.MediaContainerWithSubscription + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getarts.py b/src/plex_api_client/models/operations/getarts.py new file mode 100644 index 0000000..9dd8fde --- /dev/null +++ b/src/plex_api_client/models/operations/getarts.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithartwork as components_mediacontainerwithartwork, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetArtsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetArtsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetArtsRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetArtsRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetArtsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_artwork: NotRequired[ + components_mediacontainerwithartwork.MediaContainerWithArtworkTypedDict + ] + r"""OK""" + + +class GetArtsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_artwork: Optional[ + components_mediacontainerwithartwork.MediaContainerWithArtwork + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getaugmentationstatus.py b/src/plex_api_client/models/operations/getaugmentationstatus.py new file mode 100644 index 0000000..3ce75e8 --- /dev/null +++ b/src/plex_api_client/models/operations/getaugmentationstatus.py @@ -0,0 +1,261 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetAugmentationStatusGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetAugmentationStatusGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetAugmentationStatusRequestTypedDict(TypedDict): + augmentation_id: str + r"""The id of the augmentation""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + wait: NotRequired[components_boolint.BoolInt] + r"""Wait for augmentation completion before returning""" + + +class GetAugmentationStatusRequest(BaseModel): + augmentation_id: Annotated[ + str, + pydantic.Field(alias="augmentationId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The id of the augmentation""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + wait: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Wait for augmentation completion before returning""" + + +class GetAugmentationStatusResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class GetAugmentationStatusResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/getavailableclients.py b/src/plex_api_client/models/operations/getavailableclients.py deleted file mode 100644 index 760860b..0000000 --- a/src/plex_api_client/models/operations/getavailableclients.py +++ /dev/null @@ -1,103 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class ServerTypedDict(TypedDict): - name: NotRequired[str] - host: NotRequired[str] - address: NotRequired[str] - port: NotRequired[float] - machine_identifier: NotRequired[str] - version: NotRequired[str] - protocol: NotRequired[str] - product: NotRequired[str] - device_class: NotRequired[str] - protocol_version: NotRequired[float] - protocol_capabilities: NotRequired[str] - - -class Server(BaseModel): - name: Optional[str] = None - - host: Optional[str] = None - - address: Optional[str] = None - - port: Optional[float] = None - - machine_identifier: Annotated[ - Optional[str], pydantic.Field(alias="machineIdentifier") - ] = None - - version: Optional[str] = None - - protocol: Optional[str] = None - - product: Optional[str] = None - - device_class: Annotated[Optional[str], pydantic.Field(alias="deviceClass")] = None - - protocol_version: Annotated[ - Optional[float], pydantic.Field(alias="protocolVersion") - ] = None - - protocol_capabilities: Annotated[ - Optional[str], pydantic.Field(alias="protocolCapabilities") - ] = None - - -class GetAvailableClientsMediaContainerTypedDict(TypedDict): - size: NotRequired[float] - server: NotRequired[List[ServerTypedDict]] - - -class GetAvailableClientsMediaContainer(BaseModel): - size: Optional[float] = None - - server: Annotated[Optional[List[Server]], pydantic.Field(alias="Server")] = None - - -class GetAvailableClientsResponseBodyTypedDict(TypedDict): - r"""Available Clients""" - - media_container: NotRequired[GetAvailableClientsMediaContainerTypedDict] - - -class GetAvailableClientsResponseBody(BaseModel): - r"""Available Clients""" - - media_container: Annotated[ - Optional[GetAvailableClientsMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class GetAvailableClientsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetAvailableClientsResponseBodyTypedDict] - r"""Available Clients""" - - -class GetAvailableClientsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetAvailableClientsResponseBody] = None - r"""Available Clients""" diff --git a/src/plex_api_client/models/operations/getavailablegrabbers.py b/src/plex_api_client/models/operations/getavailablegrabbers.py new file mode 100644 index 0000000..efd35cf --- /dev/null +++ b/src/plex_api_client/models/operations/getavailablegrabbers.py @@ -0,0 +1,327 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetAvailableGrabbersGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetAvailableGrabbersGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetAvailableGrabbersRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + protocol: NotRequired[str] + r"""Only return grabbers providing this protocol.""" + + +class GetAvailableGrabbersRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + protocol: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Only return grabbers providing this protocol.""" + + +class MediaGrabberTypedDict(TypedDict): + identifier: NotRequired[str] + protocol: NotRequired[str] + title: NotRequired[str] + + +class MediaGrabber(BaseModel): + identifier: Optional[str] = None + + protocol: Optional[str] = None + + title: Optional[str] = None + + +class GetAvailableGrabbersMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + media_grabber: NotRequired[List[MediaGrabberTypedDict]] + + +class GetAvailableGrabbersMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + media_grabber: Annotated[ + Optional[List[MediaGrabber]], pydantic.Field(alias="MediaGrabber") + ] = None + + +class GetAvailableGrabbersResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetAvailableGrabbersMediaContainerTypedDict] + + +class GetAvailableGrabbersResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetAvailableGrabbersMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetAvailableGrabbersResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[GetAvailableGrabbersResponseBodyTypedDict] + r"""OK""" + + +class GetAvailableGrabbersResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[GetAvailableGrabbersResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getavailablesorts.py b/src/plex_api_client/models/operations/getavailablesorts.py new file mode 100644 index 0000000..3f5dbae --- /dev/null +++ b/src/plex_api_client/models/operations/getavailablesorts.py @@ -0,0 +1,314 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + sort as components_sort, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetAvailableSortsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetAvailableSortsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetAvailableSortsRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetAvailableSortsRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetAvailableSortsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + directory: NotRequired[List[components_sort.SortTypedDict]] + + +class GetAvailableSortsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + directory: Annotated[ + Optional[List[components_sort.Sort]], pydantic.Field(alias="Directory") + ] = None + + +class GetAvailableSortsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetAvailableSortsMediaContainerTypedDict] + + +class GetAvailableSortsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetAvailableSortsMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetAvailableSortsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetAvailableSortsResponseBodyTypedDict] + r"""OK""" + + +class GetAvailableSortsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetAvailableSortsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getbackgroundtasks.py b/src/plex_api_client/models/operations/getbackgroundtasks.py new file mode 100644 index 0000000..5e4fe34 --- /dev/null +++ b/src/plex_api_client/models/operations/getbackgroundtasks.py @@ -0,0 +1,145 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.types import BaseModel +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetBackgroundTasksType(str, Enum): + TRANSCODE = "transcode" + + +class TranscodeJobTypedDict(TypedDict): + generator_id: NotRequired[int] + key: NotRequired[str] + progress: NotRequired[float] + rating_key: NotRequired[str] + remaining: NotRequired[int] + r"""The number of seconds remaining in this job""" + size: NotRequired[int] + r"""The size of the result so far""" + speed: NotRequired[float] + r"""The speed of the transcode; 1.0 means real-time""" + target_tag_id: NotRequired[int] + r"""The tag associated with the job. This could be the tag containing the optimizer settings.""" + thumb: NotRequired[str] + title: NotRequired[str] + type: NotRequired[GetBackgroundTasksType] + + +class TranscodeJob(BaseModel): + generator_id: Annotated[Optional[int], pydantic.Field(alias="generatorID")] = None + + key: Optional[str] = None + + progress: Optional[float] = None + + rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None + + remaining: Optional[int] = None + r"""The number of seconds remaining in this job""" + + size: Optional[int] = None + r"""The size of the result so far""" + + speed: Optional[float] = None + r"""The speed of the transcode; 1.0 means real-time""" + + target_tag_id: Annotated[Optional[int], pydantic.Field(alias="targetTagID")] = None + r"""The tag associated with the job. This could be the tag containing the optimizer settings.""" + + thumb: Optional[str] = None + + title: Optional[str] = None + + type: Optional[GetBackgroundTasksType] = None + + +class GetBackgroundTasksMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + transcode_job: NotRequired[List[TranscodeJobTypedDict]] + + +class GetBackgroundTasksMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + transcode_job: Annotated[ + Optional[List[TranscodeJob]], pydantic.Field(alias="TranscodeJob") + ] = None + + +class GetBackgroundTasksResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetBackgroundTasksMediaContainerTypedDict] + + +class GetBackgroundTasksResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetBackgroundTasksMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetBackgroundTasksResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetBackgroundTasksResponseBodyTypedDict] + r"""OK""" + + +class GetBackgroundTasksResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetBackgroundTasksResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getbandwidthstatistics.py b/src/plex_api_client/models/operations/getbandwidthstatistics.py deleted file mode 100644 index 2a1a4cb..0000000 --- a/src/plex_api_client/models/operations/getbandwidthstatistics.py +++ /dev/null @@ -1,171 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetBandwidthStatisticsRequestTypedDict(TypedDict): - timespan: NotRequired[int] - r"""The timespan to retrieve statistics for - the exact meaning of this parameter is not known - - """ - - -class GetBandwidthStatisticsRequest(BaseModel): - timespan: Annotated[ - Optional[int], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The timespan to retrieve statistics for - the exact meaning of this parameter is not known - - """ - - -class GetBandwidthStatisticsDeviceTypedDict(TypedDict): - id: NotRequired[int] - name: NotRequired[str] - platform: NotRequired[str] - client_identifier: NotRequired[str] - created_at: NotRequired[int] - - -class GetBandwidthStatisticsDevice(BaseModel): - id: Optional[int] = None - - name: Optional[str] = None - - platform: Optional[str] = None - - client_identifier: Annotated[ - Optional[str], pydantic.Field(alias="clientIdentifier") - ] = None - - created_at: Annotated[Optional[int], pydantic.Field(alias="createdAt")] = None - - -class GetBandwidthStatisticsAccountTypedDict(TypedDict): - id: NotRequired[int] - key: NotRequired[str] - name: NotRequired[str] - default_audio_language: NotRequired[str] - auto_select_audio: NotRequired[bool] - default_subtitle_language: NotRequired[str] - subtitle_mode: NotRequired[int] - thumb: NotRequired[str] - - -class GetBandwidthStatisticsAccount(BaseModel): - id: Optional[int] = None - - key: Optional[str] = None - - name: Optional[str] = None - - default_audio_language: Annotated[ - Optional[str], pydantic.Field(alias="defaultAudioLanguage") - ] = None - - auto_select_audio: Annotated[ - Optional[bool], pydantic.Field(alias="autoSelectAudio") - ] = None - - default_subtitle_language: Annotated[ - Optional[str], pydantic.Field(alias="defaultSubtitleLanguage") - ] = None - - subtitle_mode: Annotated[Optional[int], pydantic.Field(alias="subtitleMode")] = None - - thumb: Optional[str] = None - - -class StatisticsBandwidthTypedDict(TypedDict): - account_id: NotRequired[int] - device_id: NotRequired[int] - timespan: NotRequired[int] - at: NotRequired[int] - lan: NotRequired[bool] - bytes_: NotRequired[int] - - -class StatisticsBandwidth(BaseModel): - account_id: Annotated[Optional[int], pydantic.Field(alias="accountID")] = None - - device_id: Annotated[Optional[int], pydantic.Field(alias="deviceID")] = None - - timespan: Optional[int] = None - - at: Optional[int] = None - - lan: Optional[bool] = None - - bytes_: Annotated[Optional[int], pydantic.Field(alias="bytes")] = None - - -class GetBandwidthStatisticsMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - device: NotRequired[List[GetBandwidthStatisticsDeviceTypedDict]] - account: NotRequired[List[GetBandwidthStatisticsAccountTypedDict]] - statistics_bandwidth: NotRequired[List[StatisticsBandwidthTypedDict]] - - -class GetBandwidthStatisticsMediaContainer(BaseModel): - size: Optional[int] = None - - device: Annotated[ - Optional[List[GetBandwidthStatisticsDevice]], pydantic.Field(alias="Device") - ] = None - - account: Annotated[ - Optional[List[GetBandwidthStatisticsAccount]], pydantic.Field(alias="Account") - ] = None - - statistics_bandwidth: Annotated[ - Optional[List[StatisticsBandwidth]], pydantic.Field(alias="StatisticsBandwidth") - ] = None - - -class GetBandwidthStatisticsResponseBodyTypedDict(TypedDict): - r"""Bandwidth Statistics""" - - media_container: NotRequired[GetBandwidthStatisticsMediaContainerTypedDict] - - -class GetBandwidthStatisticsResponseBody(BaseModel): - r"""Bandwidth Statistics""" - - media_container: Annotated[ - Optional[GetBandwidthStatisticsMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class GetBandwidthStatisticsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetBandwidthStatisticsResponseBodyTypedDict] - r"""Bandwidth Statistics""" - - -class GetBandwidthStatisticsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetBandwidthStatisticsResponseBody] = None - r"""Bandwidth Statistics""" diff --git a/src/plex_api_client/models/operations/getbutlertasks.py b/src/plex_api_client/models/operations/getbutlertasks.py deleted file mode 100644 index 4ee17d7..0000000 --- a/src/plex_api_client/models/operations/getbutlertasks.py +++ /dev/null @@ -1,82 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class ButlerTaskTypedDict(TypedDict): - name: NotRequired[str] - interval: NotRequired[float] - schedule_randomized: NotRequired[bool] - enabled: NotRequired[bool] - title: NotRequired[str] - description: NotRequired[str] - - -class ButlerTask(BaseModel): - name: Optional[str] = None - - interval: Optional[float] = None - - schedule_randomized: Annotated[ - Optional[bool], pydantic.Field(alias="scheduleRandomized") - ] = None - - enabled: Optional[bool] = None - - title: Optional[str] = None - - description: Optional[str] = None - - -class ButlerTasksTypedDict(TypedDict): - butler_task: NotRequired[List[ButlerTaskTypedDict]] - - -class ButlerTasks(BaseModel): - butler_task: Annotated[ - Optional[List[ButlerTask]], pydantic.Field(alias="ButlerTask") - ] = None - - -class GetButlerTasksResponseBodyTypedDict(TypedDict): - r"""All butler tasks""" - - butler_tasks: NotRequired[ButlerTasksTypedDict] - - -class GetButlerTasksResponseBody(BaseModel): - r"""All butler tasks""" - - butler_tasks: Annotated[ - Optional[ButlerTasks], pydantic.Field(alias="ButlerTasks") - ] = None - - -class GetButlerTasksResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetButlerTasksResponseBodyTypedDict] - r"""All butler tasks""" - - -class GetButlerTasksResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetButlerTasksResponseBody] = None - r"""All butler tasks""" diff --git a/src/plex_api_client/models/operations/getcategories.py b/src/plex_api_client/models/operations/getcategories.py new file mode 100644 index 0000000..06da062 --- /dev/null +++ b/src/plex_api_client/models/operations/getcategories.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithartwork as components_mediacontainerwithartwork, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetCategoriesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetCategoriesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetCategoriesRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetCategoriesRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetCategoriesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_artwork: NotRequired[ + components_mediacontainerwithartwork.MediaContainerWithArtworkTypedDict + ] + r"""OK""" + + +class GetCategoriesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_artwork: Optional[ + components_mediacontainerwithartwork.MediaContainerWithArtwork + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getchannels.py b/src/plex_api_client/models/operations/getchannels.py new file mode 100644 index 0000000..3196b0d --- /dev/null +++ b/src/plex_api_client/models/operations/getchannels.py @@ -0,0 +1,314 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + channel as components_channel, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetChannelsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetChannelsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetChannelsRequestTypedDict(TypedDict): + lineup: str + r"""The URI describing the lineup""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetChannelsRequest(BaseModel): + lineup: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The URI describing the lineup""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetChannelsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + channel: NotRequired[List[components_channel.ChannelTypedDict]] + + +class GetChannelsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + channel: Annotated[ + Optional[List[components_channel.Channel]], pydantic.Field(alias="Channel") + ] = None + + +class GetChannelsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetChannelsMediaContainerTypedDict] + + +class GetChannelsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetChannelsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetChannelsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[GetChannelsResponseBodyTypedDict] + r"""OK""" + + +class GetChannelsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[GetChannelsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getchapterimage.py b/src/plex_api_client/models/operations/getchapterimage.py new file mode 100644 index 0000000..0cc295e --- /dev/null +++ b/src/plex_api_client/models/operations/getchapterimage.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetChapterImageGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetChapterImageGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetChapterImageRequestTypedDict(TypedDict): + media_id: int + r"""The id of the media item""" + chapter: int + r"""The index of the chapter""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetChapterImageRequest(BaseModel): + media_id: Annotated[ + int, + pydantic.Field(alias="mediaId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The id of the media item""" + + chapter: Annotated[ + int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The index of the chapter""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetChapterImageResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + response_stream: NotRequired[httpx.Response] + r"""OK""" + + +class GetChapterImageResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + response_stream: Optional[httpx.Response] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getcluster.py b/src/plex_api_client/models/operations/getcluster.py new file mode 100644 index 0000000..07ddfe9 --- /dev/null +++ b/src/plex_api_client/models/operations/getcluster.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithartwork as components_mediacontainerwithartwork, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetClusterGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetClusterGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetClusterRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetClusterRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetClusterResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_artwork: NotRequired[ + components_mediacontainerwithartwork.MediaContainerWithArtworkTypedDict + ] + r"""OK""" + + +class GetClusterResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_artwork: Optional[ + components_mediacontainerwithartwork.MediaContainerWithArtwork + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getcollectionimage.py b/src/plex_api_client/models/operations/getcollectionimage.py new file mode 100644 index 0000000..26420d8 --- /dev/null +++ b/src/plex_api_client/models/operations/getcollectionimage.py @@ -0,0 +1,273 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + composite as components_composite, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetCollectionImageGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetCollectionImageGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetCollectionImageRequestTypedDict(TypedDict): + collection_id: int + r"""The collection id""" + updated_at: int + r"""The update time of the image. Used for busting cache.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + composite: NotRequired[components_composite.CompositeTypedDict] + + +class GetCollectionImageRequest(BaseModel): + collection_id: Annotated[ + int, + pydantic.Field(alias="collectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The collection id""" + + updated_at: Annotated[ + int, + pydantic.Field(alias="updatedAt"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The update time of the image. Used for busting cache.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + composite: Annotated[ + Optional[components_composite.Composite], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + +class GetCollectionImageResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + response_stream: NotRequired[httpx.Response] + r"""OK""" + + +class GetCollectionImageResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + response_stream: Optional[httpx.Response] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getcollectionitems.py b/src/plex_api_client/models/operations/getcollectionitems.py new file mode 100644 index 0000000..7105ec8 --- /dev/null +++ b/src/plex_api_client/models/operations/getcollectionitems.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetCollectionItemsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetCollectionItemsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetCollectionItemsRequestTypedDict(TypedDict): + collection_id: int + r"""The collection id""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetCollectionItemsRequest(BaseModel): + collection_id: Annotated[ + int, + pydantic.Field(alias="collectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The collection id""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetCollectionItemsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class GetCollectionItemsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getcollections.py b/src/plex_api_client/models/operations/getcollections.py new file mode 100644 index 0000000..29354e8 --- /dev/null +++ b/src/plex_api_client/models/operations/getcollections.py @@ -0,0 +1,275 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, + mediaquery as components_mediaquery, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetCollectionsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetCollectionsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetCollectionsRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + media_query: NotRequired[components_mediaquery.MediaQueryTypedDict] + r"""This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries""" + + +class GetCollectionsRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + media_query: Annotated[ + Optional[components_mediaquery.MediaQuery], + pydantic.Field(alias="mediaQuery"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries""" + + +class GetCollectionsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class GetCollectionsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getcolors.py b/src/plex_api_client/models/operations/getcolors.py new file mode 100644 index 0000000..e286f3b --- /dev/null +++ b/src/plex_api_client/models/operations/getcolors.py @@ -0,0 +1,334 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetColorsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetColorsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetColorsRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + url: NotRequired[str] + r"""Url for image which requires color extraction. Can be relative PMS library path or absolute url.""" + + +class GetColorsRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + url: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Url for image which requires color extraction. Can be relative PMS library path or absolute url.""" + + +class UltraBlurColorsTypedDict(TypedDict): + bottom_left: NotRequired[str] + r"""The color (hex) for the bottom left quadrant.""" + bottom_right: NotRequired[str] + r"""The color (hex) for the bottom right quadrant.""" + top_left: NotRequired[str] + r"""The color (hex) for the top left quadrant.""" + top_right: NotRequired[str] + r"""The color (hex) for the top right quadrant.""" + + +class UltraBlurColors(BaseModel): + bottom_left: Annotated[Optional[str], pydantic.Field(alias="bottomLeft")] = None + r"""The color (hex) for the bottom left quadrant.""" + + bottom_right: Annotated[Optional[str], pydantic.Field(alias="bottomRight")] = None + r"""The color (hex) for the bottom right quadrant.""" + + top_left: Annotated[Optional[str], pydantic.Field(alias="topLeft")] = None + r"""The color (hex) for the top left quadrant.""" + + top_right: Annotated[Optional[str], pydantic.Field(alias="topRight")] = None + r"""The color (hex) for the top right quadrant.""" + + +class GetColorsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + ultra_blur_colors: NotRequired[List[UltraBlurColorsTypedDict]] + + +class GetColorsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + ultra_blur_colors: Annotated[ + Optional[List[UltraBlurColors]], pydantic.Field(alias="UltraBlurColors") + ] = None + + +class GetColorsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetColorsMediaContainerTypedDict] + + +class GetColorsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetColorsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetColorsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetColorsResponseBodyTypedDict] + r"""OK""" + + +class GetColorsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetColorsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getcommon.py b/src/plex_api_client/models/operations/getcommon.py new file mode 100644 index 0000000..af163fc --- /dev/null +++ b/src/plex_api_client/models/operations/getcommon.py @@ -0,0 +1,283 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, + mediaquery as components_mediaquery, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetCommonGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetCommonGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetCommonRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + type: NotRequired[int] + r"""Item type""" + media_query: NotRequired[components_mediaquery.MediaQueryTypedDict] + r"""This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries""" + + +class GetCommonRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + type: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Item type""" + + media_query: Annotated[ + Optional[components_mediaquery.MediaQuery], + pydantic.Field(alias="mediaQuery"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries""" + + +class GetCommonResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class GetCommonResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getcompanionsdata.py b/src/plex_api_client/models/operations/getcompanionsdata.py deleted file mode 100644 index 950010f..0000000 --- a/src/plex_api_client/models/operations/getcompanionsdata.py +++ /dev/null @@ -1,63 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -GET_COMPANIONS_DATA_SERVERS = [ - "https://plex.tv/api/v2", -] - - -class ResponseBodyTypedDict(TypedDict): - identifier: str - base_url: str - title: str - link_url: str - provides: str - token: str - r"""The plex authtoken used to identify with""" - - -class ResponseBody(BaseModel): - identifier: str - - base_url: Annotated[str, pydantic.Field(alias="baseURL")] - - title: str - - link_url: Annotated[str, pydantic.Field(alias="linkURL")] - - provides: str - - token: str - r"""The plex authtoken used to identify with""" - - -class GetCompanionsDataResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - response_bodies: NotRequired[List[ResponseBodyTypedDict]] - r"""Companions Data""" - - -class GetCompanionsDataResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - response_bodies: Optional[List[ResponseBody]] = None - r"""Companions Data""" diff --git a/src/plex_api_client/models/operations/getcontinuewatching.py b/src/plex_api_client/models/operations/getcontinuewatching.py new file mode 100644 index 0000000..fc80381 --- /dev/null +++ b/src/plex_api_client/models/operations/getcontinuewatching.py @@ -0,0 +1,316 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + hub as components_hub, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetContinueWatchingGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetContinueWatchingGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetContinueWatchingRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + count: NotRequired[int] + r"""Limit results to count items""" + + +class GetContinueWatchingRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + count: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Limit results to count items""" + + +class GetContinueWatchingMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + hub: NotRequired[List[components_hub.HubTypedDict]] + + +class GetContinueWatchingMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + hub: Annotated[Optional[List[components_hub.Hub]], pydantic.Field(alias="Hub")] = ( + None + ) + + +class GetContinueWatchingResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetContinueWatchingMediaContainerTypedDict] + + +class GetContinueWatchingResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetContinueWatchingMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetContinueWatchingResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[GetContinueWatchingResponseBodyTypedDict] + r"""OK""" + + +class GetContinueWatchingResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[GetContinueWatchingResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getcountries.py b/src/plex_api_client/models/operations/getcountries.py new file mode 100644 index 0000000..f0a6525 --- /dev/null +++ b/src/plex_api_client/models/operations/getcountries.py @@ -0,0 +1,154 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.types import BaseModel +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class Flavor(int, Enum): + r"""- `0`: The country is divided into regions, and following the key will lead to a list of regions. + - `1`: The county is divided by postal codes, and an example code is returned in `example`. + - `2`: The country has a single postal code, returned in `example`. + + """ + + ZERO = 0 + ONE = 1 + TWO = 2 + + +class CountryTypedDict(TypedDict): + code: NotRequired[str] + r"""Three letter code""" + example: NotRequired[str] + flavor: NotRequired[Flavor] + r"""- `0`: The country is divided into regions, and following the key will lead to a list of regions. + - `1`: The county is divided by postal codes, and an example code is returned in `example`. + - `2`: The country has a single postal code, returned in `example`. + + """ + key: NotRequired[str] + language: NotRequired[str] + r"""Three letter language code""" + language_title: NotRequired[str] + r"""The title of the language""" + title: NotRequired[str] + type: NotRequired[str] + + +class Country(BaseModel): + code: Optional[str] = None + r"""Three letter code""" + + example: Optional[str] = None + + flavor: Optional[Flavor] = None + r"""- `0`: The country is divided into regions, and following the key will lead to a list of regions. + - `1`: The county is divided by postal codes, and an example code is returned in `example`. + - `2`: The country has a single postal code, returned in `example`. + + """ + + key: Optional[str] = None + + language: Optional[str] = None + r"""Three letter language code""" + + language_title: Annotated[Optional[str], pydantic.Field(alias="languageTitle")] = ( + None + ) + r"""The title of the language""" + + title: Optional[str] = None + + type: Optional[str] = None + + +class GetCountriesMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + country: NotRequired[List[CountryTypedDict]] + + +class GetCountriesMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + country: Annotated[Optional[List[Country]], pydantic.Field(alias="Country")] = None + + +class GetCountriesResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetCountriesMediaContainerTypedDict] + + +class GetCountriesResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetCountriesMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetCountriesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[GetCountriesResponseBodyTypedDict] + r"""OK""" + + +class GetCountriesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[GetCountriesResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getcountrieslineups.py b/src/plex_api_client/models/operations/getcountrieslineups.py new file mode 100644 index 0000000..fc5bfa1 --- /dev/null +++ b/src/plex_api_client/models/operations/getcountrieslineups.py @@ -0,0 +1,278 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithlineup as components_mediacontainerwithlineup, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetCountriesLineupsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetCountriesLineupsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetCountriesLineupsRequestTypedDict(TypedDict): + country: str + r"""3 letter country code""" + epg_id: str + r"""The `providerIdentifier` of the provider""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + postal_code: NotRequired[str] + r"""The postal code for the lineups to fetch""" + + +class GetCountriesLineupsRequest(BaseModel): + country: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""3 letter country code""" + + epg_id: Annotated[ + str, + pydantic.Field(alias="epgId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The `providerIdentifier` of the provider""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + postal_code: Annotated[ + Optional[str], + pydantic.Field(alias="postalCode"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The postal code for the lineups to fetch""" + + +class GetCountriesLineupsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_lineup: NotRequired[ + components_mediacontainerwithlineup.MediaContainerWithLineupTypedDict + ] + r"""OK""" + + +class GetCountriesLineupsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_lineup: Optional[ + components_mediacontainerwithlineup.MediaContainerWithLineup + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getcountryregions.py b/src/plex_api_client/models/operations/getcountryregions.py new file mode 100644 index 0000000..d56e093 --- /dev/null +++ b/src/plex_api_client/models/operations/getcountryregions.py @@ -0,0 +1,338 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetCountryRegionsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetCountryRegionsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetCountryRegionsRequestTypedDict(TypedDict): + country: str + r"""3 letter country code""" + epg_id: str + r"""The `providerIdentifier` of the provider""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetCountryRegionsRequest(BaseModel): + country: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""3 letter country code""" + + epg_id: Annotated[ + str, + pydantic.Field(alias="epgId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The `providerIdentifier` of the provider""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetCountryRegionsCountryTypedDict(TypedDict): + key: NotRequired[str] + national: NotRequired[bool] + title: NotRequired[str] + type: NotRequired[str] + + +class GetCountryRegionsCountry(BaseModel): + key: Optional[str] = None + + national: Optional[bool] = None + + title: Optional[str] = None + + type: Optional[str] = None + + +class GetCountryRegionsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + country: NotRequired[List[GetCountryRegionsCountryTypedDict]] + + +class GetCountryRegionsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + country: Annotated[ + Optional[List[GetCountryRegionsCountry]], pydantic.Field(alias="Country") + ] = None + + +class GetCountryRegionsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetCountryRegionsMediaContainerTypedDict] + + +class GetCountryRegionsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetCountryRegionsMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetCountryRegionsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[GetCountryRegionsResponseBodyTypedDict] + r"""OK""" + + +class GetCountryRegionsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[GetCountryRegionsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getdevicedetails.py b/src/plex_api_client/models/operations/getdevicedetails.py new file mode 100644 index 0000000..6221a94 --- /dev/null +++ b/src/plex_api_client/models/operations/getdevicedetails.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithdevice as components_mediacontainerwithdevice, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetDeviceDetailsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetDeviceDetailsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetDeviceDetailsRequestTypedDict(TypedDict): + device_id: int + r"""The ID of the device.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetDeviceDetailsRequest(BaseModel): + device_id: Annotated[ + int, + pydantic.Field(alias="deviceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the device.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetDeviceDetailsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_device: NotRequired[ + components_mediacontainerwithdevice.MediaContainerWithDeviceTypedDict + ] + r"""OK""" + + +class GetDeviceDetailsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_device: Optional[ + components_mediacontainerwithdevice.MediaContainerWithDevice + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getdevices.py b/src/plex_api_client/models/operations/getdevices.py deleted file mode 100644 index 54ef0e2..0000000 --- a/src/plex_api_client/models/operations/getdevices.py +++ /dev/null @@ -1,83 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class DeviceTypedDict(TypedDict): - id: NotRequired[float] - name: NotRequired[str] - platform: NotRequired[str] - client_identifier: NotRequired[str] - created_at: NotRequired[float] - - -class Device(BaseModel): - id: Optional[float] = None - - name: Optional[str] = None - - platform: Optional[str] = None - - client_identifier: Annotated[ - Optional[str], pydantic.Field(alias="clientIdentifier") - ] = None - - created_at: Annotated[Optional[float], pydantic.Field(alias="createdAt")] = None - - -class GetDevicesMediaContainerTypedDict(TypedDict): - size: NotRequired[float] - identifier: NotRequired[str] - device: NotRequired[List[DeviceTypedDict]] - - -class GetDevicesMediaContainer(BaseModel): - size: Optional[float] = None - - identifier: Optional[str] = None - - device: Annotated[Optional[List[Device]], pydantic.Field(alias="Device")] = None - - -class GetDevicesResponseBodyTypedDict(TypedDict): - r"""Devices""" - - media_container: NotRequired[GetDevicesMediaContainerTypedDict] - - -class GetDevicesResponseBody(BaseModel): - r"""Devices""" - - media_container: Annotated[ - Optional[GetDevicesMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetDevicesResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetDevicesResponseBodyTypedDict] - r"""Devices""" - - -class GetDevicesResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetDevicesResponseBody] = None - r"""Devices""" diff --git a/src/plex_api_client/models/operations/getdeviceschannels.py b/src/plex_api_client/models/operations/getdeviceschannels.py new file mode 100644 index 0000000..88cda2e --- /dev/null +++ b/src/plex_api_client/models/operations/getdeviceschannels.py @@ -0,0 +1,349 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetDevicesChannelsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetDevicesChannelsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetDevicesChannelsRequestTypedDict(TypedDict): + device_id: int + r"""The ID of the device.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetDevicesChannelsRequest(BaseModel): + device_id: Annotated[ + int, + pydantic.Field(alias="deviceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the device.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DeviceChannelTypedDict(TypedDict): + drm: NotRequired[bool] + r"""Indicates the channel is DRMed and thus may not be playable""" + favorite: NotRequired[bool] + hd: NotRequired[bool] + identifier: NotRequired[str] + key: NotRequired[str] + name: NotRequired[str] + signal_quality: NotRequired[int] + signal_strength: NotRequired[int] + + +class DeviceChannel(BaseModel): + drm: Optional[bool] = None + r"""Indicates the channel is DRMed and thus may not be playable""" + + favorite: Optional[bool] = None + + hd: Optional[bool] = None + + identifier: Optional[str] = None + + key: Optional[str] = None + + name: Optional[str] = None + + signal_quality: Annotated[Optional[int], pydantic.Field(alias="signalQuality")] = ( + None + ) + + signal_strength: Annotated[ + Optional[int], pydantic.Field(alias="signalStrength") + ] = None + + +class GetDevicesChannelsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + device_channel: NotRequired[List[DeviceChannelTypedDict]] + + +class GetDevicesChannelsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + device_channel: Annotated[ + Optional[List[DeviceChannel]], pydantic.Field(alias="DeviceChannel") + ] = None + + +class GetDevicesChannelsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetDevicesChannelsMediaContainerTypedDict] + + +class GetDevicesChannelsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetDevicesChannelsMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetDevicesChannelsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[GetDevicesChannelsResponseBodyTypedDict] + r"""OK""" + + +class GetDevicesChannelsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[GetDevicesChannelsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getdownloadqueue.py b/src/plex_api_client/models/operations/getdownloadqueue.py new file mode 100644 index 0000000..10076c0 --- /dev/null +++ b/src/plex_api_client/models/operations/getdownloadqueue.py @@ -0,0 +1,359 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetDownloadQueueGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetDownloadQueueGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetDownloadQueueRequestTypedDict(TypedDict): + queue_id: int + r"""The queue id""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetDownloadQueueRequest(BaseModel): + queue_id: Annotated[ + int, + pydantic.Field(alias="queueId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The queue id""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetDownloadQueueStatus(str, Enum): + r"""The state of this queue + - deciding: At least one item is still being decided + - waiting: At least one item is waiting for transcode and none are currently transcoding + - processing: At least one item is being transcoded + - done: All items are available (or potentially expired) + - error: At least one item has encountered an error + + """ + + DECIDING = "deciding" + WAITING = "waiting" + PROCESSING = "processing" + DONE = "done" + ERROR = "error" + + +class GetDownloadQueueDownloadQueueTypedDict(TypedDict): + id: NotRequired[int] + item_count: NotRequired[int] + status: NotRequired[GetDownloadQueueStatus] + r"""The state of this queue + - deciding: At least one item is still being decided + - waiting: At least one item is waiting for transcode and none are currently transcoding + - processing: At least one item is being transcoded + - done: All items are available (or potentially expired) + - error: At least one item has encountered an error + + """ + + +class GetDownloadQueueDownloadQueue(BaseModel): + id: Optional[int] = None + + item_count: Annotated[Optional[int], pydantic.Field(alias="itemCount")] = None + + status: Optional[GetDownloadQueueStatus] = None + r"""The state of this queue + - deciding: At least one item is still being decided + - waiting: At least one item is waiting for transcode and none are currently transcoding + - processing: At least one item is being transcoded + - done: All items are available (or potentially expired) + - error: At least one item has encountered an error + + """ + + +class GetDownloadQueueMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + download_queue: NotRequired[List[GetDownloadQueueDownloadQueueTypedDict]] + + +class GetDownloadQueueMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + download_queue: Annotated[ + Optional[List[GetDownloadQueueDownloadQueue]], + pydantic.Field(alias="DownloadQueue"), + ] = None + + +class GetDownloadQueueResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetDownloadQueueMediaContainerTypedDict] + + +class GetDownloadQueueResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetDownloadQueueMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetDownloadQueueResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetDownloadQueueResponseBodyTypedDict] + r"""OK""" + + +class GetDownloadQueueResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetDownloadQueueResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getdownloadqueueitems.py b/src/plex_api_client/models/operations/getdownloadqueueitems.py new file mode 100644 index 0000000..0422f7b --- /dev/null +++ b/src/plex_api_client/models/operations/getdownloadqueueitems.py @@ -0,0 +1,471 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + transcodesession as components_transcodesession, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetDownloadQueueItemsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetDownloadQueueItemsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetDownloadQueueItemsRequestTypedDict(TypedDict): + queue_id: int + r"""The queue id""" + item_id: List[int] + r"""The item ids""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetDownloadQueueItemsRequest(BaseModel): + queue_id: Annotated[ + int, + pydantic.Field(alias="queueId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The queue id""" + + item_id: Annotated[ + List[int], + pydantic.Field(alias="itemId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The item ids""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetDownloadQueueItemsDecisionResultTypedDict(TypedDict): + available_bandwidth: NotRequired[int] + r"""The maximum bitrate set when item was added""" + direct_play_decision_code: NotRequired[int] + direct_play_decision_text: NotRequired[str] + general_decision_code: NotRequired[int] + general_decision_text: NotRequired[str] + mde_decision_code: NotRequired[int] + r"""The code indicating the status of evaluation of playback when client indicates `hasMDE=1`""" + mde_decision_text: NotRequired[str] + r"""Descriptive text for the above code""" + transcode_decision_code: NotRequired[int] + transcode_decision_text: NotRequired[str] + + +class GetDownloadQueueItemsDecisionResult(BaseModel): + available_bandwidth: Annotated[ + Optional[int], pydantic.Field(alias="availableBandwidth") + ] = None + r"""The maximum bitrate set when item was added""" + + direct_play_decision_code: Annotated[ + Optional[int], pydantic.Field(alias="directPlayDecisionCode") + ] = None + + direct_play_decision_text: Annotated[ + Optional[str], pydantic.Field(alias="directPlayDecisionText") + ] = None + + general_decision_code: Annotated[ + Optional[int], pydantic.Field(alias="generalDecisionCode") + ] = None + + general_decision_text: Annotated[ + Optional[str], pydantic.Field(alias="generalDecisionText") + ] = None + + mde_decision_code: Annotated[ + Optional[int], pydantic.Field(alias="mdeDecisionCode") + ] = None + r"""The code indicating the status of evaluation of playback when client indicates `hasMDE=1`""" + + mde_decision_text: Annotated[ + Optional[str], pydantic.Field(alias="mdeDecisionText") + ] = None + r"""Descriptive text for the above code""" + + transcode_decision_code: Annotated[ + Optional[int], pydantic.Field(alias="transcodeDecisionCode") + ] = None + + transcode_decision_text: Annotated[ + Optional[str], pydantic.Field(alias="transcodeDecisionText") + ] = None + + +class GetDownloadQueueItemsStatus(str, Enum): + r"""The state of the item: + - deciding: The item decision is pending + - waiting: The item is waiting for transcode + - processing: The item is being transcoded + - available: The item is available for download + - error: The item encountered an error in the decision or transcode + - expired: The transcoded item has timed out and is no longer available + + """ + + DECIDING = "deciding" + WAITING = "waiting" + PROCESSING = "processing" + AVAILABLE = "available" + ERROR = "error" + EXPIRED = "expired" + + +class GetDownloadQueueItemsTranscodeTypedDict(TypedDict): + r"""The transcode session object which is not yet documented otherwise it'd be a $ref here.""" + + +class GetDownloadQueueItemsTranscode(BaseModel): + r"""The transcode session object which is not yet documented otherwise it'd be a $ref here.""" + + +class GetDownloadQueueItemsDownloadQueueItemTypedDict(TypedDict): + decision_result: NotRequired[GetDownloadQueueItemsDecisionResultTypedDict] + error: NotRequired[str] + r"""The error encountered in transcoding or decision""" + id: NotRequired[int] + key: NotRequired[str] + queue_id: NotRequired[int] + status: NotRequired[GetDownloadQueueItemsStatus] + r"""The state of the item: + - deciding: The item decision is pending + - waiting: The item is waiting for transcode + - processing: The item is being transcoded + - available: The item is available for download + - error: The item encountered an error in the decision or transcode + - expired: The transcoded item has timed out and is no longer available + + """ + transcode: NotRequired[GetDownloadQueueItemsTranscodeTypedDict] + r"""The transcode session object which is not yet documented otherwise it'd be a $ref here.""" + transcode_session: NotRequired[ + components_transcodesession.TranscodeSessionTypedDict + ] + r"""The transcode session if item is currently being transcoded""" + + +class GetDownloadQueueItemsDownloadQueueItem(BaseModel): + decision_result: Annotated[ + Optional[GetDownloadQueueItemsDecisionResult], + pydantic.Field(alias="DecisionResult"), + ] = None + + error: Optional[str] = None + r"""The error encountered in transcoding or decision""" + + id: Optional[int] = None + + key: Optional[str] = None + + queue_id: Annotated[Optional[int], pydantic.Field(alias="queueId")] = None + + status: Optional[GetDownloadQueueItemsStatus] = None + r"""The state of the item: + - deciding: The item decision is pending + - waiting: The item is waiting for transcode + - processing: The item is being transcoded + - available: The item is available for download + - error: The item encountered an error in the decision or transcode + - expired: The transcoded item has timed out and is no longer available + + """ + + transcode: Optional[GetDownloadQueueItemsTranscode] = None + r"""The transcode session object which is not yet documented otherwise it'd be a $ref here.""" + + transcode_session: Annotated[ + Optional[components_transcodesession.TranscodeSession], + pydantic.Field(alias="TranscodeSession"), + ] = None + r"""The transcode session if item is currently being transcoded""" + + +class GetDownloadQueueItemsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + download_queue_item: NotRequired[ + List[GetDownloadQueueItemsDownloadQueueItemTypedDict] + ] + + +class GetDownloadQueueItemsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + download_queue_item: Annotated[ + Optional[List[GetDownloadQueueItemsDownloadQueueItem]], + pydantic.Field(alias="DownloadQueueItem"), + ] = None + + +class GetDownloadQueueItemsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetDownloadQueueItemsMediaContainerTypedDict] + + +class GetDownloadQueueItemsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetDownloadQueueItemsMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetDownloadQueueItemsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetDownloadQueueItemsResponseBodyTypedDict] + r"""OK""" + + +class GetDownloadQueueItemsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetDownloadQueueItemsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getdownloadqueuemedia.py b/src/plex_api_client/models/operations/getdownloadqueuemedia.py new file mode 100644 index 0000000..820e3b6 --- /dev/null +++ b/src/plex_api_client/models/operations/getdownloadqueuemedia.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetDownloadQueueMediaGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetDownloadQueueMediaGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetDownloadQueueMediaRequestTypedDict(TypedDict): + queue_id: int + r"""The queue id""" + item_id: int + r"""The item ids""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetDownloadQueueMediaRequest(BaseModel): + queue_id: Annotated[ + int, + pydantic.Field(alias="queueId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The queue id""" + + item_id: Annotated[ + int, + pydantic.Field(alias="itemId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The item ids""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetDownloadQueueMediaResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + + +class GetDownloadQueueMediaResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] diff --git a/src/plex_api_client/models/operations/getdvr.py b/src/plex_api_client/models/operations/getdvr.py new file mode 100644 index 0000000..363321b --- /dev/null +++ b/src/plex_api_client/models/operations/getdvr.py @@ -0,0 +1,351 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + device as components_device, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetDVRGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetDVRGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetDVRRequestTypedDict(TypedDict): + dvr_id: int + r"""The ID of the DVR.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetDVRRequest(BaseModel): + dvr_id: Annotated[ + int, + pydantic.Field(alias="dvrId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the DVR.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetDVRDVRsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + status: NotRequired[int] + r"""A status indicator. If present and non-zero, indicates an error""" + + +class GetDVRDVRsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + status: Optional[int] = None + r"""A status indicator. If present and non-zero, indicates an error""" + + +class GetDVRDVRTypedDict(TypedDict): + device: NotRequired[List[components_device.DeviceTypedDict]] + key: NotRequired[str] + language: NotRequired[str] + lineup: NotRequired[str] + uuid: NotRequired[str] + + +class GetDVRDVR(BaseModel): + device: Annotated[ + Optional[List[components_device.Device]], pydantic.Field(alias="Device") + ] = None + + key: Optional[str] = None + + language: Optional[str] = None + + lineup: Optional[str] = None + + uuid: Optional[str] = None + + +class GetDVRMediaContainerTypedDict(TypedDict): + media_container: NotRequired[GetDVRDVRsMediaContainerTypedDict] + dvr: NotRequired[List[GetDVRDVRTypedDict]] + + +class GetDVRMediaContainer(BaseModel): + media_container: Annotated[ + Optional[GetDVRDVRsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + dvr: Annotated[Optional[List[GetDVRDVR]], pydantic.Field(alias="DVR")] = None + + +class GetDVRResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetDVRMediaContainerTypedDict] + + +class GetDVRResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetDVRMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetDVRResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[GetDVRResponseBodyTypedDict] + r"""OK""" + + +class GetDVRResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[GetDVRResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getextras.py b/src/plex_api_client/models/operations/getextras.py new file mode 100644 index 0000000..cc0341b --- /dev/null +++ b/src/plex_api_client/models/operations/getextras.py @@ -0,0 +1,256 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetExtrasGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetExtrasGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetExtrasRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetExtrasRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetExtrasResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class GetExtrasResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getfile.py b/src/plex_api_client/models/operations/getfile.py new file mode 100644 index 0000000..e0e83ae --- /dev/null +++ b/src/plex_api_client/models/operations/getfile.py @@ -0,0 +1,264 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetFileGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetFileGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetFileRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + url: NotRequired[str] + r"""The bundle url, typically starting with `metadata://` or `media://`""" + + +class GetFileRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + url: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The bundle url, typically starting with `metadata://` or `media://`""" + + +class GetFileResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + two_hundred_audio_mpeg3_response_stream: NotRequired[httpx.Response] + r"""OK""" + two_hundred_image_jpeg_response_stream: NotRequired[httpx.Response] + r"""OK""" + + +class GetFileResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + two_hundred_audio_mpeg3_response_stream: Optional[httpx.Response] = None + r"""OK""" + + two_hundred_image_jpeg_response_stream: Optional[httpx.Response] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getfilehash.py b/src/plex_api_client/models/operations/getfilehash.py deleted file mode 100644 index 541e90f..0000000 --- a/src/plex_api_client/models/operations/getfilehash.py +++ /dev/null @@ -1,48 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetFileHashRequestTypedDict(TypedDict): - url: str - r"""This is the path to the local file, must be prefixed by `file://`""" - type: NotRequired[float] - r"""Item type""" - - -class GetFileHashRequest(BaseModel): - url: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""This is the path to the local file, must be prefixed by `file://`""" - - type: Annotated[ - Optional[float], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Item type""" - - -class GetFileHashResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class GetFileHashResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/getfirstcharacters.py b/src/plex_api_client/models/operations/getfirstcharacters.py new file mode 100644 index 0000000..358ffd2 --- /dev/null +++ b/src/plex_api_client/models/operations/getfirstcharacters.py @@ -0,0 +1,360 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediaquery as components_mediaquery, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetFirstCharactersGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetFirstCharactersGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetFirstCharactersRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + type: NotRequired[int] + r"""The metadata type to filter on""" + sort: NotRequired[int] + r"""The metadata type to filter on""" + media_query: NotRequired[components_mediaquery.MediaQueryTypedDict] + r"""This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries""" + + +class GetFirstCharactersRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + type: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The metadata type to filter on""" + + sort: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The metadata type to filter on""" + + media_query: Annotated[ + Optional[components_mediaquery.MediaQuery], + pydantic.Field(alias="mediaQuery"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries""" + + +class GetFirstCharactersDirectoryTypedDict(TypedDict): + key: NotRequired[str] + size: NotRequired[int] + r"""The number of items starting with this character""" + title: NotRequired[str] + + +class GetFirstCharactersDirectory(BaseModel): + key: Optional[str] = None + + size: Optional[int] = None + r"""The number of items starting with this character""" + + title: Optional[str] = None + + +class GetFirstCharactersMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + directory: NotRequired[List[GetFirstCharactersDirectoryTypedDict]] + + +class GetFirstCharactersMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + directory: Annotated[ + Optional[List[GetFirstCharactersDirectory]], pydantic.Field(alias="Directory") + ] = None + + +class GetFirstCharactersResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetFirstCharactersMediaContainerTypedDict] + + +class GetFirstCharactersResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetFirstCharactersMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetFirstCharactersResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetFirstCharactersResponseBodyTypedDict] + r"""OK""" + + +class GetFirstCharactersResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetFirstCharactersResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getfolders.py b/src/plex_api_client/models/operations/getfolders.py new file mode 100644 index 0000000..f75a38a --- /dev/null +++ b/src/plex_api_client/models/operations/getfolders.py @@ -0,0 +1,324 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetFoldersGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetFoldersGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetFoldersRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetFoldersRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetFoldersDirectoryTypedDict(TypedDict): + fast_key: NotRequired[str] + key: NotRequired[str] + title: NotRequired[str] + + +class GetFoldersDirectory(BaseModel): + fast_key: Annotated[Optional[str], pydantic.Field(alias="fastKey")] = None + + key: Optional[str] = None + + title: Optional[str] = None + + +class GetFoldersMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + directory: NotRequired[List[GetFoldersDirectoryTypedDict]] + + +class GetFoldersMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + directory: Annotated[ + Optional[List[GetFoldersDirectory]], pydantic.Field(alias="Directory") + ] = None + + +class GetFoldersResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetFoldersMediaContainerTypedDict] + + +class GetFoldersResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetFoldersMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetFoldersResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetFoldersResponseBodyTypedDict] + r"""OK""" + + +class GetFoldersResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetFoldersResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getgeodata.py b/src/plex_api_client/models/operations/getgeodata.py deleted file mode 100644 index 0119fb1..0000000 --- a/src/plex_api_client/models/operations/getgeodata.py +++ /dev/null @@ -1,101 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from typing import Optional -from typing_extensions import NotRequired, TypedDict - - -GET_GEO_DATA_SERVERS = [ - "https://plex.tv/api/v2", -] - - -class GetGeoDataGeoDataTypedDict(TypedDict): - r"""Geo location data""" - - code: str - r"""The ISO 3166-1 alpha-2 code of the country.""" - continent_code: str - r"""The continent code where the country is located.""" - country: str - r"""The official name of the country.""" - city: str - r"""The name of the city.""" - time_zone: str - r"""The time zone of the country.""" - postal_code: str - r"""The postal code of the location.""" - subdivisions: str - r"""The name of the primary administrative subdivision.""" - coordinates: str - r"""The geographical coordinates (latitude, longitude) of the location.""" - european_union_member: NotRequired[bool] - r"""Indicates if the country is a member of the European Union.""" - in_privacy_restricted_country: NotRequired[bool] - r"""Indicates if the country has privacy restrictions.""" - in_privacy_restricted_region: NotRequired[bool] - r"""Indicates if the region has privacy restrictions.""" - - -class GetGeoDataGeoData(BaseModel): - r"""Geo location data""" - - code: str - r"""The ISO 3166-1 alpha-2 code of the country.""" - - continent_code: str - r"""The continent code where the country is located.""" - - country: str - r"""The official name of the country.""" - - city: str - r"""The name of the city.""" - - time_zone: str - r"""The time zone of the country.""" - - postal_code: str - r"""The postal code of the location.""" - - subdivisions: str - r"""The name of the primary administrative subdivision.""" - - coordinates: str - r"""The geographical coordinates (latitude, longitude) of the location.""" - - european_union_member: Optional[bool] = False - r"""Indicates if the country is a member of the European Union.""" - - in_privacy_restricted_country: Optional[bool] = False - r"""Indicates if the country has privacy restrictions.""" - - in_privacy_restricted_region: Optional[bool] = False - r"""Indicates if the region has privacy restrictions.""" - - -class GetGeoDataResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - geo_data: NotRequired[GetGeoDataGeoDataTypedDict] - r"""Gets the geo location data of the user""" - - -class GetGeoDataResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - geo_data: Optional[GetGeoDataGeoData] = None - r"""Gets the geo location data of the user""" diff --git a/src/plex_api_client/models/operations/getglobalhubs.py b/src/plex_api_client/models/operations/getglobalhubs.py deleted file mode 100644 index 250336a..0000000 --- a/src/plex_api_client/models/operations/getglobalhubs.py +++ /dev/null @@ -1,195 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class OnlyTransient(int, Enum): - r"""Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added).""" - - ZERO = 0 - ONE = 1 - - -class GetGlobalHubsRequestTypedDict(TypedDict): - count: NotRequired[float] - r"""The number of items to return with each hub.""" - only_transient: NotRequired[OnlyTransient] - r"""Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added).""" - - -class GetGlobalHubsRequest(BaseModel): - count: Annotated[ - Optional[float], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The number of items to return with each hub.""" - - only_transient: Annotated[ - Optional[OnlyTransient], - pydantic.Field(alias="onlyTransient"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added).""" - - -class GetGlobalHubsMetadataTypedDict(TypedDict): - rating_key: NotRequired[str] - key: NotRequired[str] - guid: NotRequired[str] - type: NotRequired[str] - title: NotRequired[str] - title_sort: NotRequired[str] - summary: NotRequired[str] - smart: NotRequired[bool] - playlist_type: NotRequired[str] - composite: NotRequired[str] - icon: NotRequired[str] - view_count: NotRequired[int] - last_viewed_at: NotRequired[int] - duration: NotRequired[int] - leaf_count: NotRequired[int] - added_at: NotRequired[int] - updated_at: NotRequired[int] - - -class GetGlobalHubsMetadata(BaseModel): - rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None - - key: Optional[str] = None - - guid: Optional[str] = None - - type: Optional[str] = None - - title: Optional[str] = None - - title_sort: Annotated[Optional[str], pydantic.Field(alias="titleSort")] = None - - summary: Optional[str] = None - - smart: Optional[bool] = None - - playlist_type: Annotated[Optional[str], pydantic.Field(alias="playlistType")] = None - - composite: Optional[str] = None - - icon: Optional[str] = None - - view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None - - last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( - None - ) - - duration: Optional[int] = None - - leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None - - added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - - -class HubTypedDict(TypedDict): - hub_key: NotRequired[str] - key: NotRequired[str] - title: NotRequired[str] - type: NotRequired[str] - hub_identifier: NotRequired[str] - context: NotRequired[str] - size: NotRequired[int] - more: NotRequired[bool] - style: NotRequired[str] - promoted: NotRequired[bool] - metadata: NotRequired[List[GetGlobalHubsMetadataTypedDict]] - - -class Hub(BaseModel): - hub_key: Annotated[Optional[str], pydantic.Field(alias="hubKey")] = None - - key: Optional[str] = None - - title: Optional[str] = None - - type: Optional[str] = None - - hub_identifier: Annotated[Optional[str], pydantic.Field(alias="hubIdentifier")] = ( - None - ) - - context: Optional[str] = None - - size: Optional[int] = None - - more: Optional[bool] = None - - style: Optional[str] = None - - promoted: Optional[bool] = None - - metadata: Annotated[ - Optional[List[GetGlobalHubsMetadata]], pydantic.Field(alias="Metadata") - ] = None - - -class GetGlobalHubsMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - allow_sync: NotRequired[bool] - identifier: NotRequired[str] - hub: NotRequired[List[HubTypedDict]] - - -class GetGlobalHubsMediaContainer(BaseModel): - size: Optional[int] = None - - allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None - - identifier: Optional[str] = None - - hub: Annotated[Optional[List[Hub]], pydantic.Field(alias="Hub")] = None - - -class GetGlobalHubsResponseBodyTypedDict(TypedDict): - r"""returns global hubs""" - - media_container: NotRequired[GetGlobalHubsMediaContainerTypedDict] - - -class GetGlobalHubsResponseBody(BaseModel): - r"""returns global hubs""" - - media_container: Annotated[ - Optional[GetGlobalHubsMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetGlobalHubsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetGlobalHubsResponseBodyTypedDict] - r"""returns global hubs""" - - -class GetGlobalHubsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetGlobalHubsResponseBody] = None - r"""returns global hubs""" diff --git a/src/plex_api_client/models/operations/gethistoryitem.py b/src/plex_api_client/models/operations/gethistoryitem.py new file mode 100644 index 0000000..f412f42 --- /dev/null +++ b/src/plex_api_client/models/operations/gethistoryitem.py @@ -0,0 +1,260 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + historyall_get_responses_200 as components_historyall_get_responses_200, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetHistoryItemGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetHistoryItemGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetHistoryItemRequestTypedDict(TypedDict): + history_id: int + r"""The id of the history item (the `historyKey` from above)""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetHistoryItemRequest(BaseModel): + history_id: Annotated[ + int, + pydantic.Field(alias="historyId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The id of the history item (the `historyKey` from above)""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetHistoryItemResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + history_all_get_responses_200: NotRequired[ + components_historyall_get_responses_200.HistoryAllGetResponses200TypedDict + ] + r"""OK""" + + +class GetHistoryItemResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + history_all_get_responses_200: Optional[ + components_historyall_get_responses_200.HistoryAllGetResponses200 + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/gethomedata.py b/src/plex_api_client/models/operations/gethomedata.py deleted file mode 100644 index 37679c6..0000000 --- a/src/plex_api_client/models/operations/gethomedata.py +++ /dev/null @@ -1,66 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -import pydantic -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetHomeDataResponseBodyTypedDict(TypedDict): - r"""Home Data""" - - id: NotRequired[float] - name: NotRequired[str] - guest_user_id: NotRequired[float] - guest_user_uuid: NotRequired[str] - guest_enabled: NotRequired[bool] - subscription: NotRequired[bool] - - -class GetHomeDataResponseBody(BaseModel): - r"""Home Data""" - - id: Optional[float] = None - - name: Optional[str] = None - - guest_user_id: Annotated[Optional[float], pydantic.Field(alias="guestUserID")] = ( - None - ) - - guest_user_uuid: Annotated[Optional[str], pydantic.Field(alias="guestUserUUID")] = ( - None - ) - - guest_enabled: Annotated[Optional[bool], pydantic.Field(alias="guestEnabled")] = ( - None - ) - - subscription: Optional[bool] = None - - -class GetHomeDataResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetHomeDataResponseBodyTypedDict] - r"""Home Data""" - - -class GetHomeDataResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetHomeDataResponseBody] = None - r"""Home Data""" diff --git a/src/plex_api_client/models/operations/gethubitems.py b/src/plex_api_client/models/operations/gethubitems.py new file mode 100644 index 0000000..c6517dc --- /dev/null +++ b/src/plex_api_client/models/operations/gethubitems.py @@ -0,0 +1,287 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainer as components_mediacontainer, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetHubItemsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetHubItemsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetHubItemsRequestTypedDict(TypedDict): + identifier: List[str] + r"""If provided, limit to only specified hubs""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + count: NotRequired[int] + r"""Limit results to count items""" + + +class GetHubItemsRequest(BaseModel): + identifier: Annotated[ + List[str], FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""If provided, limit to only specified hubs""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + count: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Limit results to count items""" + + +class GetHubItemsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[components_mediacontainer.MediaContainerTypedDict] + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + +class GetHubItemsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[components_mediacontainer.MediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + +class GetHubItemsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[GetHubItemsResponseBodyTypedDict] + r"""OK""" + + +class GetHubItemsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[GetHubItemsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getidentity.py b/src/plex_api_client/models/operations/getidentity.py new file mode 100644 index 0000000..9d9474e --- /dev/null +++ b/src/plex_api_client/models/operations/getidentity.py @@ -0,0 +1,72 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.types import BaseModel +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetIdentityMediaContainerTypedDict(TypedDict): + claimed: NotRequired[bool] + r"""Indicates whether this server has been claimed by a user""" + machine_identifier: NotRequired[str] + r"""A unique identifier of the computer""" + size: NotRequired[int] + version: NotRequired[str] + r"""The full version string of the PMS""" + + +class GetIdentityMediaContainer(BaseModel): + claimed: Optional[bool] = None + r"""Indicates whether this server has been claimed by a user""" + + machine_identifier: Annotated[ + Optional[str], pydantic.Field(alias="machineIdentifier") + ] = None + r"""A unique identifier of the computer""" + + size: Optional[int] = None + + version: Optional[str] = None + r"""The full version string of the PMS""" + + +class GetIdentityResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetIdentityMediaContainerTypedDict] + + +class GetIdentityResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetIdentityMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetIdentityResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetIdentityResponseBodyTypedDict] + r"""OK""" + + +class GetIdentityResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetIdentityResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getimage.py b/src/plex_api_client/models/operations/getimage.py new file mode 100644 index 0000000..f270f51 --- /dev/null +++ b/src/plex_api_client/models/operations/getimage.py @@ -0,0 +1,304 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetImageGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetImageGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetImageRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + top_left: NotRequired[str] + r"""The base color (hex) for the top left quadrant.""" + top_right: NotRequired[str] + r"""The base color (hex) for the top right quadrant.""" + bottom_right: NotRequired[str] + r"""The base color (hex) for the bottom right quadrant.""" + bottom_left: NotRequired[str] + r"""The base color (hex) for the bottom left quadrant.""" + width: NotRequired[int] + r"""Width in pixels for the image.""" + height: NotRequired[int] + r"""Height in pixels for the image.""" + noise: NotRequired[components_boolint.BoolInt] + r"""Whether to add noise to the ouput image. Noise can reduce color banding with the gradients. Image sizes with noise will be larger.""" + + +class GetImageRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + top_left: Annotated[ + Optional[str], + pydantic.Field(alias="topLeft"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The base color (hex) for the top left quadrant.""" + + top_right: Annotated[ + Optional[str], + pydantic.Field(alias="topRight"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The base color (hex) for the top right quadrant.""" + + bottom_right: Annotated[ + Optional[str], + pydantic.Field(alias="bottomRight"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The base color (hex) for the bottom right quadrant.""" + + bottom_left: Annotated[ + Optional[str], + pydantic.Field(alias="bottomLeft"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The base color (hex) for the bottom left quadrant.""" + + width: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Width in pixels for the image.""" + + height: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Height in pixels for the image.""" + + noise: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether to add noise to the ouput image. Noise can reduce color banding with the gradients. Image sizes with noise will be larger.""" + + +class GetImageResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + response_stream: NotRequired[httpx.Response] + r"""OK""" + + +class GetImageResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + response_stream: Optional[httpx.Response] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getimagefrombif.py b/src/plex_api_client/models/operations/getimagefrombif.py new file mode 100644 index 0000000..82480ab --- /dev/null +++ b/src/plex_api_client/models/operations/getimagefrombif.py @@ -0,0 +1,272 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetImageFromBifGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetImageFromBifGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class PathParamIndex(str, Enum): + r"""The type of index to grab.""" + + SD = "sd" + + +class GetImageFromBifRequestTypedDict(TypedDict): + part_id: int + r"""The part id who's index is to be fetched""" + index: PathParamIndex + r"""The type of index to grab.""" + offset: int + r"""The offset to seek in ms.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetImageFromBifRequest(BaseModel): + part_id: Annotated[ + int, + pydantic.Field(alias="partId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The part id who's index is to be fetched""" + + index: Annotated[ + PathParamIndex, + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The type of index to grab.""" + + offset: Annotated[ + int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The offset to seek in ms.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetImageFromBifResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + response_stream: NotRequired[httpx.Response] + r"""OK""" + + +class GetImageFromBifResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + response_stream: Optional[httpx.Response] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getitemartwork.py b/src/plex_api_client/models/operations/getitemartwork.py new file mode 100644 index 0000000..2435542 --- /dev/null +++ b/src/plex_api_client/models/operations/getitemartwork.py @@ -0,0 +1,274 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetItemArtworkGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetItemArtworkGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetItemArtworkPathParamElement(str, Enum): + THUMB = "thumb" + ART = "art" + CLEAR_LOGO = "clearLogo" + BANNER = "banner" + POSTER = "poster" + THEME = "theme" + + +class GetItemArtworkRequestTypedDict(TypedDict): + ids: str + element: GetItemArtworkPathParamElement + timestamp: int + r"""A timestamp on the element used for cache management in the client""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetItemArtworkRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + element: Annotated[ + GetItemArtworkPathParamElement, + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + + timestamp: Annotated[ + int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""A timestamp on the element used for cache management in the client""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetItemArtworkResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + two_hundred_audio_mpeg3_response_stream: NotRequired[httpx.Response] + r"""OK""" + two_hundred_image_jpeg_response_stream: NotRequired[httpx.Response] + r"""OK""" + + +class GetItemArtworkResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + two_hundred_audio_mpeg3_response_stream: Optional[httpx.Response] = None + r"""OK""" + + two_hundred_image_jpeg_response_stream: Optional[httpx.Response] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getitemdecision.py b/src/plex_api_client/models/operations/getitemdecision.py new file mode 100644 index 0000000..2434015 --- /dev/null +++ b/src/plex_api_client/models/operations/getitemdecision.py @@ -0,0 +1,266 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithdecision as components_mediacontainerwithdecision, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetItemDecisionGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetItemDecisionGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetItemDecisionRequestTypedDict(TypedDict): + queue_id: int + r"""The queue id""" + item_id: int + r"""The item ids""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetItemDecisionRequest(BaseModel): + queue_id: Annotated[ + int, + pydantic.Field(alias="queueId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The queue id""" + + item_id: Annotated[ + int, + pydantic.Field(alias="itemId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The item ids""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetItemDecisionResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_decision: NotRequired[ + components_mediacontainerwithdecision.MediaContainerWithDecisionTypedDict + ] + r"""OK""" + + +class GetItemDecisionResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_decision: Optional[ + components_mediacontainerwithdecision.MediaContainerWithDecision + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getitemtree.py b/src/plex_api_client/models/operations/getitemtree.py new file mode 100644 index 0000000..9ac012d --- /dev/null +++ b/src/plex_api_client/models/operations/getitemtree.py @@ -0,0 +1,253 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithnestedmetadata as components_mediacontainerwithnestedmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetItemTreeGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetItemTreeGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetItemTreeRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetItemTreeRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetItemTreeResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_nested_metadata: NotRequired[ + components_mediacontainerwithnestedmetadata.MediaContainerWithNestedMetadataTypedDict + ] + r"""OK""" + + +class GetItemTreeResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_nested_metadata: Optional[ + components_mediacontainerwithnestedmetadata.MediaContainerWithNestedMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getlibrarydetails.py b/src/plex_api_client/models/operations/getlibrarydetails.py new file mode 100644 index 0000000..a98aa6b --- /dev/null +++ b/src/plex_api_client/models/operations/getlibrarydetails.py @@ -0,0 +1,348 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, + metadata as components_metadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetLibraryDetailsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetLibraryDetailsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetLibraryDetailsRequestTypedDict(TypedDict): + section_id: str + r"""The section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + include_details: NotRequired[components_boolint.BoolInt] + r"""Whether or not to include details for a section (types, filters, and sorts). Only exists for backwards compatibility, media providers other than the server libraries have it on always.""" + + +class GetLibraryDetailsRequest(BaseModel): + section_id: Annotated[ + str, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + include_details: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="includeDetails"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether or not to include details for a section (types, filters, and sorts). Only exists for backwards compatibility, media providers other than the server libraries have it on always.""" + + +class GetLibraryDetailsMediaContainerTypedDict(TypedDict): + content: NotRequired[str] + r"""The flavors of directory found here: + - Primary: (e.g. all, On Deck) These are still used in some clients to provide \"shortcuts\" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users. + - Secondary: These are marked with `\"secondary\": true` and were used by old clients to provide nested menus allowing for primative (but structured) navigation. + - Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `\"search\": true` which used to be used to allow clients to build search dialogs on the fly. + """ + allow_sync: NotRequired[bool] + art: NotRequired[str] + directory: NotRequired[List[components_metadata.MetadataTypedDict]] + identifier: NotRequired[str] + library_section_id: NotRequired[int] + media_tag_prefix: NotRequired[str] + media_tag_version: NotRequired[int] + size: NotRequired[int] + sort_asc: NotRequired[bool] + thumb: NotRequired[str] + title1: NotRequired[str] + view_group: NotRequired[str] + view_mode: NotRequired[int] + + +class GetLibraryDetailsMediaContainer(BaseModel): + content: Optional[str] = None + r"""The flavors of directory found here: + - Primary: (e.g. all, On Deck) These are still used in some clients to provide \"shortcuts\" to subsets of media. However, with the exception of On Deck, all of them can be created by media queries, and the desire is to allow these to be customized by users. + - Secondary: These are marked with `\"secondary\": true` and were used by old clients to provide nested menus allowing for primative (but structured) navigation. + - Special: There is a By Folder entry which allows browsing the media by the underlying filesystem structure, and there's a completely obsolete entry marked `\"search\": true` which used to be used to allow clients to build search dialogs on the fly. + """ + + allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None + + art: Optional[str] = None + + directory: Annotated[ + Optional[List[components_metadata.Metadata]], pydantic.Field(alias="Directory") + ] = None + + identifier: Optional[str] = None + + library_section_id: Annotated[ + Optional[int], pydantic.Field(alias="librarySectionID") + ] = None + + media_tag_prefix: Annotated[ + Optional[str], pydantic.Field(alias="mediaTagPrefix") + ] = None + + media_tag_version: Annotated[ + Optional[int], pydantic.Field(alias="mediaTagVersion") + ] = None + + size: Optional[int] = None + + sort_asc: Annotated[Optional[bool], pydantic.Field(alias="sortAsc")] = None + + thumb: Optional[str] = None + + title1: Optional[str] = None + + view_group: Annotated[Optional[str], pydantic.Field(alias="viewGroup")] = None + + view_mode: Annotated[Optional[int], pydantic.Field(alias="viewMode")] = None + + +class GetLibraryDetailsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetLibraryDetailsMediaContainerTypedDict] + + +class GetLibraryDetailsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetLibraryDetailsMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetLibraryDetailsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetLibraryDetailsResponseBodyTypedDict] + r"""OK""" + + +class GetLibraryDetailsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetLibraryDetailsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getlibraryhubs.py b/src/plex_api_client/models/operations/getlibraryhubs.py deleted file mode 100644 index 06e1eb7..0000000 --- a/src/plex_api_client/models/operations/getlibraryhubs.py +++ /dev/null @@ -1,453 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import date -from enum import Enum -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class QueryParamOnlyTransient(int, Enum): - r"""Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added).""" - - ZERO = 0 - ONE = 1 - - -class GetLibraryHubsRequestTypedDict(TypedDict): - section_id: float - r"""the Id of the library to query""" - count: NotRequired[float] - r"""The number of items to return with each hub.""" - only_transient: NotRequired[QueryParamOnlyTransient] - r"""Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added).""" - - -class GetLibraryHubsRequest(BaseModel): - section_id: Annotated[ - float, - pydantic.Field(alias="sectionId"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""the Id of the library to query""" - - count: Annotated[ - Optional[float], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The number of items to return with each hub.""" - - only_transient: Annotated[ - Optional[QueryParamOnlyTransient], - pydantic.Field(alias="onlyTransient"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added).""" - - -class GetLibraryHubsPartTypedDict(TypedDict): - id: NotRequired[int] - key: NotRequired[str] - duration: NotRequired[int] - file: NotRequired[str] - size: NotRequired[int] - audio_profile: NotRequired[str] - container: NotRequired[str] - has64bit_offsets: NotRequired[bool] - optimized_for_streaming: NotRequired[bool] - video_profile: NotRequired[str] - - -class GetLibraryHubsPart(BaseModel): - id: Optional[int] = None - - key: Optional[str] = None - - duration: Optional[int] = None - - file: Optional[str] = None - - size: Optional[int] = None - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - - container: Optional[str] = None - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - optimized_for_streaming: Annotated[ - Optional[bool], pydantic.Field(alias="optimizedForStreaming") - ] = None - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - - -class GetLibraryHubsMediaTypedDict(TypedDict): - id: NotRequired[int] - duration: NotRequired[int] - bitrate: NotRequired[int] - width: NotRequired[int] - height: NotRequired[int] - aspect_ratio: NotRequired[float] - audio_channels: NotRequired[int] - audio_codec: NotRequired[str] - video_codec: NotRequired[str] - video_resolution: NotRequired[str] - container: NotRequired[str] - video_frame_rate: NotRequired[str] - optimized_for_streaming: NotRequired[int] - audio_profile: NotRequired[str] - has64bit_offsets: NotRequired[bool] - video_profile: NotRequired[str] - part: NotRequired[List[GetLibraryHubsPartTypedDict]] - - -class GetLibraryHubsMedia(BaseModel): - id: Optional[int] = None - - duration: Optional[int] = None - - bitrate: Optional[int] = None - - width: Optional[int] = None - - height: Optional[int] = None - - aspect_ratio: Annotated[Optional[float], pydantic.Field(alias="aspectRatio")] = None - - audio_channels: Annotated[Optional[int], pydantic.Field(alias="audioChannels")] = ( - None - ) - - audio_codec: Annotated[Optional[str], pydantic.Field(alias="audioCodec")] = None - - video_codec: Annotated[Optional[str], pydantic.Field(alias="videoCodec")] = None - - video_resolution: Annotated[ - Optional[str], pydantic.Field(alias="videoResolution") - ] = None - - container: Optional[str] = None - - video_frame_rate: Annotated[ - Optional[str], pydantic.Field(alias="videoFrameRate") - ] = None - - optimized_for_streaming: Annotated[ - Optional[int], pydantic.Field(alias="optimizedForStreaming") - ] = None - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - - part: Annotated[ - Optional[List[GetLibraryHubsPart]], pydantic.Field(alias="Part") - ] = None - - -class GetLibraryHubsGenreTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetLibraryHubsGenre(BaseModel): - tag: Optional[str] = None - - -class GetLibraryHubsCountryTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetLibraryHubsCountry(BaseModel): - tag: Optional[str] = None - - -class GetLibraryHubsDirectorTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetLibraryHubsDirector(BaseModel): - tag: Optional[str] = None - - -class GetLibraryHubsRoleTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetLibraryHubsRole(BaseModel): - tag: Optional[str] = None - - -class GetLibraryHubsWriterTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetLibraryHubsWriter(BaseModel): - tag: Optional[str] = None - - -class GetLibraryHubsMetadataTypedDict(TypedDict): - rating_key: NotRequired[str] - key: NotRequired[str] - guid: NotRequired[str] - studio: NotRequired[str] - type: NotRequired[str] - title: NotRequired[str] - library_section_title: NotRequired[str] - library_section_id: NotRequired[int] - library_section_key: NotRequired[str] - content_rating: NotRequired[str] - summary: NotRequired[str] - rating: NotRequired[float] - audience_rating: NotRequired[float] - view_count: NotRequired[int] - last_viewed_at: NotRequired[int] - year: NotRequired[int] - tagline: NotRequired[str] - thumb: NotRequired[str] - art: NotRequired[str] - duration: NotRequired[int] - originally_available_at: NotRequired[date] - added_at: NotRequired[int] - updated_at: NotRequired[int] - audience_rating_image: NotRequired[str] - primary_extra_key: NotRequired[str] - rating_image: NotRequired[str] - media: NotRequired[List[GetLibraryHubsMediaTypedDict]] - genre: NotRequired[List[GetLibraryHubsGenreTypedDict]] - country: NotRequired[List[GetLibraryHubsCountryTypedDict]] - director: NotRequired[List[GetLibraryHubsDirectorTypedDict]] - role: NotRequired[List[GetLibraryHubsRoleTypedDict]] - writer: NotRequired[List[GetLibraryHubsWriterTypedDict]] - skip_count: NotRequired[int] - chapter_source: NotRequired[str] - - -class GetLibraryHubsMetadata(BaseModel): - rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None - - key: Optional[str] = None - - guid: Optional[str] = None - - studio: Optional[str] = None - - type: Optional[str] = None - - title: Optional[str] = None - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - - library_section_id: Annotated[ - Optional[int], pydantic.Field(alias="librarySectionID") - ] = None - - library_section_key: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionKey") - ] = None - - content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( - None - ) - - summary: Optional[str] = None - - rating: Optional[float] = None - - audience_rating: Annotated[ - Optional[float], pydantic.Field(alias="audienceRating") - ] = None - - view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None - - last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( - None - ) - - year: Optional[int] = None - - tagline: Optional[str] = None - - thumb: Optional[str] = None - - art: Optional[str] = None - - duration: Optional[int] = None - - originally_available_at: Annotated[ - Optional[date], pydantic.Field(alias="originallyAvailableAt") - ] = None - - added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - - audience_rating_image: Annotated[ - Optional[str], pydantic.Field(alias="audienceRatingImage") - ] = None - - primary_extra_key: Annotated[ - Optional[str], pydantic.Field(alias="primaryExtraKey") - ] = None - - rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None - - media: Annotated[ - Optional[List[GetLibraryHubsMedia]], pydantic.Field(alias="Media") - ] = None - - genre: Annotated[ - Optional[List[GetLibraryHubsGenre]], pydantic.Field(alias="Genre") - ] = None - - country: Annotated[ - Optional[List[GetLibraryHubsCountry]], pydantic.Field(alias="Country") - ] = None - - director: Annotated[ - Optional[List[GetLibraryHubsDirector]], pydantic.Field(alias="Director") - ] = None - - role: Annotated[ - Optional[List[GetLibraryHubsRole]], pydantic.Field(alias="Role") - ] = None - - writer: Annotated[ - Optional[List[GetLibraryHubsWriter]], pydantic.Field(alias="Writer") - ] = None - - skip_count: Annotated[Optional[int], pydantic.Field(alias="skipCount")] = None - - chapter_source: Annotated[Optional[str], pydantic.Field(alias="chapterSource")] = ( - None - ) - - -class GetLibraryHubsHubTypedDict(TypedDict): - key: NotRequired[str] - title: NotRequired[str] - type: NotRequired[str] - hub_identifier: NotRequired[str] - context: NotRequired[str] - size: NotRequired[int] - more: NotRequired[bool] - style: NotRequired[str] - hub_key: NotRequired[str] - metadata: NotRequired[List[GetLibraryHubsMetadataTypedDict]] - promoted: NotRequired[bool] - random: NotRequired[bool] - - -class GetLibraryHubsHub(BaseModel): - key: Optional[str] = None - - title: Optional[str] = None - - type: Optional[str] = None - - hub_identifier: Annotated[Optional[str], pydantic.Field(alias="hubIdentifier")] = ( - None - ) - - context: Optional[str] = None - - size: Optional[int] = None - - more: Optional[bool] = None - - style: Optional[str] = None - - hub_key: Annotated[Optional[str], pydantic.Field(alias="hubKey")] = None - - metadata: Annotated[ - Optional[List[GetLibraryHubsMetadata]], pydantic.Field(alias="Metadata") - ] = None - - promoted: Optional[bool] = None - - random: Optional[bool] = None - - -class GetLibraryHubsMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - allow_sync: NotRequired[bool] - identifier: NotRequired[str] - library_section_id: NotRequired[int] - library_section_title: NotRequired[str] - library_section_uuid: NotRequired[str] - hub: NotRequired[List[GetLibraryHubsHubTypedDict]] - - -class GetLibraryHubsMediaContainer(BaseModel): - size: Optional[int] = None - - allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None - - identifier: Optional[str] = None - - library_section_id: Annotated[ - Optional[int], pydantic.Field(alias="librarySectionID") - ] = None - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - - library_section_uuid: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionUUID") - ] = None - - hub: Annotated[Optional[List[GetLibraryHubsHub]], pydantic.Field(alias="Hub")] = ( - None - ) - - -class GetLibraryHubsResponseBodyTypedDict(TypedDict): - r"""The hubs specific to the library""" - - media_container: NotRequired[GetLibraryHubsMediaContainerTypedDict] - - -class GetLibraryHubsResponseBody(BaseModel): - r"""The hubs specific to the library""" - - media_container: Annotated[ - Optional[GetLibraryHubsMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetLibraryHubsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetLibraryHubsResponseBodyTypedDict] - r"""The hubs specific to the library""" - - -class GetLibraryHubsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetLibraryHubsResponseBody] = None - r"""The hubs specific to the library""" diff --git a/src/plex_api_client/models/operations/getlibraryitems.py b/src/plex_api_client/models/operations/getlibraryitems.py new file mode 100644 index 0000000..bc8b972 --- /dev/null +++ b/src/plex_api_client/models/operations/getlibraryitems.py @@ -0,0 +1,261 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, + mediaquery as components_mediaquery, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetLibraryItemsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetLibraryItemsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetLibraryItemsRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + media_query: NotRequired[components_mediaquery.MediaQueryTypedDict] + r"""This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries""" + + +class GetLibraryItemsRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + media_query: Annotated[ + Optional[components_mediaquery.MediaQuery], + pydantic.Field(alias="mediaQuery"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries""" + + +class GetLibraryItemsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class GetLibraryItemsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getlibrarymatches.py b/src/plex_api_client/models/operations/getlibrarymatches.py new file mode 100644 index 0000000..3ce48da --- /dev/null +++ b/src/plex_api_client/models/operations/getlibrarymatches.py @@ -0,0 +1,366 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetLibraryMatchesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetLibraryMatchesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetLibraryMatchesRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + type: NotRequired[int] + r"""The metadata type to filter by""" + include_full_metadata: NotRequired[components_boolint.BoolInt] + include_ancestor_metadata: NotRequired[components_boolint.BoolInt] + include_alternate_metadata_sources: NotRequired[components_boolint.BoolInt] + guid: NotRequired[str] + r"""Used for movies, shows, artists, albums, and tracks. Allowed for various URI schemes, to be defined.""" + title: NotRequired[str] + r"""The title to filter by or assign""" + year: NotRequired[int] + r"""Used for movies shows, and albums. Optional.""" + path: NotRequired[str] + r"""Used for movies, episodes, and tracks. The full path to the media file, used for \"cloud-scanning\" an item.""" + grandparent_title: NotRequired[str] + r"""Used for episodes and tracks. The title of the show/artist. Required if `path` isn't passed.""" + grandparent_year: NotRequired[int] + r"""Used for episodes. The year of the show.""" + parent_index: NotRequired[int] + r"""Used for episodes and tracks. The season/album number.""" + index: NotRequired[int] + r"""Used for episodes and tracks. The episode/tracks number in the season/album.""" + originally_available_at: NotRequired[str] + r"""Used for episodes. In the format `YYYY-MM-DD`.""" + parent_title: NotRequired[str] + r"""Used for albums and tracks. The artist name for albums or the album name for tracks.""" + + +class GetLibraryMatchesRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + type: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The metadata type to filter by""" + + include_full_metadata: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="includeFullMetadata"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + include_ancestor_metadata: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="includeAncestorMetadata"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + include_alternate_metadata_sources: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="includeAlternateMetadataSources"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + guid: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Used for movies, shows, artists, albums, and tracks. Allowed for various URI schemes, to be defined.""" + + title: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The title to filter by or assign""" + + year: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Used for movies shows, and albums. Optional.""" + + path: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Used for movies, episodes, and tracks. The full path to the media file, used for \"cloud-scanning\" an item.""" + + grandparent_title: Annotated[ + Optional[str], + pydantic.Field(alias="grandparentTitle"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Used for episodes and tracks. The title of the show/artist. Required if `path` isn't passed.""" + + grandparent_year: Annotated[ + Optional[int], + pydantic.Field(alias="grandparentYear"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Used for episodes. The year of the show.""" + + parent_index: Annotated[ + Optional[int], + pydantic.Field(alias="parentIndex"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Used for episodes and tracks. The season/album number.""" + + index: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Used for episodes and tracks. The episode/tracks number in the season/album.""" + + originally_available_at: Annotated[ + Optional[str], + pydantic.Field(alias="originallyAvailableAt"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Used for episodes. In the format `YYYY-MM-DD`.""" + + parent_title: Annotated[ + Optional[str], + pydantic.Field(alias="parentTitle"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Used for albums and tracks. The artist name for albums or the album name for tracks.""" + + +class GetLibraryMatchesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class GetLibraryMatchesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getlineup.py b/src/plex_api_client/models/operations/getlineup.py new file mode 100644 index 0000000..2c30771 --- /dev/null +++ b/src/plex_api_client/models/operations/getlineup.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetLineupGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetLineupGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetLineupRequestTypedDict(TypedDict): + device_query_parameter: str + r"""The URI describing the device""" + lineup_group: str + r"""The URI describing the lineupGroup""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetLineupRequest(BaseModel): + device_query_parameter: Annotated[ + str, + pydantic.Field(alias="device"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] + r"""The URI describing the device""" + + lineup_group: Annotated[ + str, + pydantic.Field(alias="lineupGroup"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] + r"""The URI describing the lineupGroup""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetLineupResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + + +class GetLineupResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] diff --git a/src/plex_api_client/models/operations/getlineupchannels.py b/src/plex_api_client/models/operations/getlineupchannels.py new file mode 100644 index 0000000..7efb5f9 --- /dev/null +++ b/src/plex_api_client/models/operations/getlineupchannels.py @@ -0,0 +1,376 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + channel as components_channel, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetLineupChannelsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetLineupChannelsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetLineupChannelsRequestTypedDict(TypedDict): + lineup: List[str] + r"""The URIs describing the lineups""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetLineupChannelsRequest(BaseModel): + lineup: Annotated[ + List[str], FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The URIs describing the lineups""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class LineupType(int, Enum): + r"""- `-1`: N/A + - `0`: Over the air + - `1`: Cable + - `2`: Satellite + - `3`: IPTV + - `4`: Virtual + + """ + + MINUS_1 = -1 + ZERO = 0 + ONE = 1 + TWO = 2 + THREE = 3 + FOUR = 4 + + +class LineupTypedDict(TypedDict): + title: NotRequired[str] + type: NotRequired[str] + r"""The type of this object (`lineup` in this case)""" + lineup_type: NotRequired[LineupType] + r"""- `-1`: N/A + - `0`: Over the air + - `1`: Cable + - `2`: Satellite + - `3`: IPTV + - `4`: Virtual + + """ + location: NotRequired[str] + uuid: NotRequired[str] + r"""The uuid of this lineup""" + channel: NotRequired[List[components_channel.ChannelTypedDict]] + + +class Lineup(BaseModel): + title: Optional[str] = None + + type: Optional[str] = None + r"""The type of this object (`lineup` in this case)""" + + lineup_type: Annotated[Optional[LineupType], pydantic.Field(alias="lineupType")] = ( + None + ) + r"""- `-1`: N/A + - `0`: Over the air + - `1`: Cable + - `2`: Satellite + - `3`: IPTV + - `4`: Virtual + + """ + + location: Optional[str] = None + + uuid: Optional[str] = None + r"""The uuid of this lineup""" + + channel: Annotated[ + Optional[List[components_channel.Channel]], pydantic.Field(alias="Channel") + ] = None + + +class GetLineupChannelsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + lineup: NotRequired[List[LineupTypedDict]] + + +class GetLineupChannelsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + lineup: Annotated[Optional[List[Lineup]], pydantic.Field(alias="Lineup")] = None + + +class GetLineupChannelsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetLineupChannelsMediaContainerTypedDict] + + +class GetLineupChannelsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetLineupChannelsMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetLineupChannelsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetLineupChannelsResponseBodyTypedDict] + r"""OK""" + + +class GetLineupChannelsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetLineupChannelsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getlivetvsession.py b/src/plex_api_client/models/operations/getlivetvsession.py new file mode 100644 index 0000000..5c8c9ce --- /dev/null +++ b/src/plex_api_client/models/operations/getlivetvsession.py @@ -0,0 +1,260 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetLiveTVSessionGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetLiveTVSessionGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetLiveTVSessionRequestTypedDict(TypedDict): + session_id: str + r"""The session id""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetLiveTVSessionRequest(BaseModel): + session_id: Annotated[ + str, + pydantic.Field(alias="sessionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The session id""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetLiveTVSessionResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class GetLiveTVSessionResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getmediapart.py b/src/plex_api_client/models/operations/getmediapart.py new file mode 100644 index 0000000..5b12d2d --- /dev/null +++ b/src/plex_api_client/models/operations/getmediapart.py @@ -0,0 +1,278 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetMediaPartGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetMediaPartGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetMediaPartRequestTypedDict(TypedDict): + part_id: int + r"""The part id who's index is to be fetched""" + changestamp: int + r"""The changestamp of the part; used for busting potential caches. Provided in the `key` for the part""" + filename: str + r"""A generic filename used for a client media stack which relies on the extension in the request. Provided in the `key` for the part""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + download: NotRequired[components_boolint.BoolInt] + r"""Whether this is a file download""" + + +class GetMediaPartRequest(BaseModel): + part_id: Annotated[ + int, + pydantic.Field(alias="partId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The part id who's index is to be fetched""" + + changestamp: Annotated[ + int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The changestamp of the part; used for busting potential caches. Provided in the `key` for the part""" + + filename: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""A generic filename used for a client media stack which relies on the extension in the request. Provided in the `key` for the part""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + download: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether this is a file download""" + + +class GetMediaPartResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + + +class GetMediaPartResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] diff --git a/src/plex_api_client/models/operations/getmetadatachildren.py b/src/plex_api_client/models/operations/getmetadatachildren.py deleted file mode 100644 index 5703483..0000000 --- a/src/plex_api_client/models/operations/getmetadatachildren.py +++ /dev/null @@ -1,278 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetMetadataChildrenRequestTypedDict(TypedDict): - rating_key: float - r"""the id of the library item to return the children of.""" - include_elements: NotRequired[str] - r"""Adds additional elements to the response. Supported types are (Stream) - - """ - - -class GetMetadataChildrenRequest(BaseModel): - rating_key: Annotated[ - float, - pydantic.Field(alias="ratingKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""the id of the library item to return the children of.""" - - include_elements: Annotated[ - Optional[str], - pydantic.Field(alias="includeElements"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Adds additional elements to the response. Supported types are (Stream) - - """ - - -class GetMetadataChildrenDirectoryTypedDict(TypedDict): - leaf_count: NotRequired[int] - thumb: NotRequired[str] - viewed_leaf_count: NotRequired[int] - key: NotRequired[str] - title: NotRequired[str] - - -class GetMetadataChildrenDirectory(BaseModel): - leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None - - thumb: Optional[str] = None - - viewed_leaf_count: Annotated[ - Optional[int], pydantic.Field(alias="viewedLeafCount") - ] = None - - key: Optional[str] = None - - title: Optional[str] = None - - -class GetMetadataChildrenMetadataTypedDict(TypedDict): - rating_key: NotRequired[str] - key: NotRequired[str] - parent_rating_key: NotRequired[str] - guid: NotRequired[str] - parent_guid: NotRequired[str] - parent_studio: NotRequired[str] - type: NotRequired[str] - title: NotRequired[str] - parent_key: NotRequired[str] - parent_title: NotRequired[str] - summary: NotRequired[str] - index: NotRequired[int] - parent_index: NotRequired[int] - view_count: NotRequired[int] - last_viewed_at: NotRequired[int] - parent_year: NotRequired[int] - thumb: NotRequired[str] - art: NotRequired[str] - parent_thumb: NotRequired[str] - parent_theme: NotRequired[str] - leaf_count: NotRequired[int] - viewed_leaf_count: NotRequired[int] - added_at: NotRequired[int] - updated_at: NotRequired[int] - user_rating: NotRequired[int] - skip_count: NotRequired[int] - last_rated_at: NotRequired[int] - - -class GetMetadataChildrenMetadata(BaseModel): - rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None - - key: Optional[str] = None - - parent_rating_key: Annotated[ - Optional[str], pydantic.Field(alias="parentRatingKey") - ] = None - - guid: Optional[str] = None - - parent_guid: Annotated[Optional[str], pydantic.Field(alias="parentGuid")] = None - - parent_studio: Annotated[Optional[str], pydantic.Field(alias="parentStudio")] = None - - type: Optional[str] = None - - title: Optional[str] = None - - parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None - - parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None - - summary: Optional[str] = None - - index: Optional[int] = None - - parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None - - view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None - - last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( - None - ) - - parent_year: Annotated[Optional[int], pydantic.Field(alias="parentYear")] = None - - thumb: Optional[str] = None - - art: Optional[str] = None - - parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None - - parent_theme: Annotated[Optional[str], pydantic.Field(alias="parentTheme")] = None - - leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None - - viewed_leaf_count: Annotated[ - Optional[int], pydantic.Field(alias="viewedLeafCount") - ] = None - - added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - - user_rating: Annotated[Optional[int], pydantic.Field(alias="userRating")] = None - - skip_count: Annotated[Optional[int], pydantic.Field(alias="skipCount")] = None - - last_rated_at: Annotated[Optional[int], pydantic.Field(alias="lastRatedAt")] = None - - -class GetMetadataChildrenMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - allow_sync: NotRequired[bool] - art: NotRequired[str] - identifier: NotRequired[str] - key: NotRequired[str] - library_section_id: NotRequired[int] - library_section_title: NotRequired[str] - library_section_uuid: NotRequired[str] - media_tag_prefix: NotRequired[str] - media_tag_version: NotRequired[int] - nocache: NotRequired[bool] - parent_index: NotRequired[int] - parent_title: NotRequired[str] - parent_year: NotRequired[int] - summary: NotRequired[str] - theme: NotRequired[str] - thumb: NotRequired[str] - title1: NotRequired[str] - title2: NotRequired[str] - view_group: NotRequired[str] - view_mode: NotRequired[int] - directory: NotRequired[List[GetMetadataChildrenDirectoryTypedDict]] - metadata: NotRequired[List[GetMetadataChildrenMetadataTypedDict]] - - -class GetMetadataChildrenMediaContainer(BaseModel): - size: Optional[int] = None - - allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None - - art: Optional[str] = None - - identifier: Optional[str] = None - - key: Optional[str] = None - - library_section_id: Annotated[ - Optional[int], pydantic.Field(alias="librarySectionID") - ] = None - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - - library_section_uuid: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionUUID") - ] = None - - media_tag_prefix: Annotated[ - Optional[str], pydantic.Field(alias="mediaTagPrefix") - ] = None - - media_tag_version: Annotated[ - Optional[int], pydantic.Field(alias="mediaTagVersion") - ] = None - - nocache: Optional[bool] = None - - parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None - - parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None - - parent_year: Annotated[Optional[int], pydantic.Field(alias="parentYear")] = None - - summary: Optional[str] = None - - theme: Optional[str] = None - - thumb: Optional[str] = None - - title1: Optional[str] = None - - title2: Optional[str] = None - - view_group: Annotated[Optional[str], pydantic.Field(alias="viewGroup")] = None - - view_mode: Annotated[Optional[int], pydantic.Field(alias="viewMode")] = None - - directory: Annotated[ - Optional[List[GetMetadataChildrenDirectory]], pydantic.Field(alias="Directory") - ] = None - - metadata: Annotated[ - Optional[List[GetMetadataChildrenMetadata]], pydantic.Field(alias="Metadata") - ] = None - - -class GetMetadataChildrenResponseBodyTypedDict(TypedDict): - r"""The children of the library item.""" - - media_container: NotRequired[GetMetadataChildrenMediaContainerTypedDict] - - -class GetMetadataChildrenResponseBody(BaseModel): - r"""The children of the library item.""" - - media_container: Annotated[ - Optional[GetMetadataChildrenMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class GetMetadataChildrenResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetMetadataChildrenResponseBodyTypedDict] - r"""The children of the library item.""" - - -class GetMetadataChildrenResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetMetadataChildrenResponseBody] = None - r"""The children of the library item.""" diff --git a/src/plex_api_client/models/operations/getmetadatahubs.py b/src/plex_api_client/models/operations/getmetadatahubs.py new file mode 100644 index 0000000..9834f9f --- /dev/null +++ b/src/plex_api_client/models/operations/getmetadatahubs.py @@ -0,0 +1,283 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, + mediacontainerwithhubs as components_mediacontainerwithhubs, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetMetadataHubsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetMetadataHubsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetMetadataHubsRequestTypedDict(TypedDict): + metadata_id: int + r"""The metadata ID for the hubs to fetch""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + count: NotRequired[int] + r"""Limit results to count items""" + only_transient: NotRequired[components_boolint.BoolInt] + r"""Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)""" + + +class GetMetadataHubsRequest(BaseModel): + metadata_id: Annotated[ + int, + pydantic.Field(alias="metadataId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The metadata ID for the hubs to fetch""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + count: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Limit results to count items""" + + only_transient: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="onlyTransient"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)""" + + +class GetMetadataHubsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_hubs: NotRequired[ + components_mediacontainerwithhubs.MediaContainerWithHubsTypedDict + ] + r"""OK""" + + +class GetMetadataHubsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_hubs: Optional[ + components_mediacontainerwithhubs.MediaContainerWithHubs + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getmetadataitem.py b/src/plex_api_client/models/operations/getmetadataitem.py new file mode 100644 index 0000000..0cfd17a --- /dev/null +++ b/src/plex_api_client/models/operations/getmetadataitem.py @@ -0,0 +1,334 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetMetadataItemGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetMetadataItemGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetMetadataItemRequestTypedDict(TypedDict): + ids: List[str] + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + async_check_files: NotRequired[components_boolint.BoolInt] + r"""Determines if file check should be performed asynchronously. An activity is created to indicate progress. Default is false.""" + async_refresh_local_media_agent: NotRequired[components_boolint.BoolInt] + r"""Determines if local media agent refresh should be performed asynchronously. An activity is created to indicate progress. Default is false.""" + async_refresh_analysis: NotRequired[components_boolint.BoolInt] + r"""Determines if analysis refresh should be performed asynchronously. An activity is created to indicate progress. Default is false.""" + check_files: NotRequired[components_boolint.BoolInt] + r"""Determines if file check should be performed synchronously. Specifying `asyncCheckFiles` will cause this option to be ignored. Default is false.""" + skip_refresh: NotRequired[components_boolint.BoolInt] + r"""Determines if synchronous local media agent and analysis refresh should be skipped. Specifying async versions will cause synchronous versions to be skipped. Default is false.""" + check_file_availability: NotRequired[components_boolint.BoolInt] + r"""Determines if file existence check should be performed synchronously. Specifying `checkFiles` will imply this option. Default is false.""" + async_augment_metadata: NotRequired[components_boolint.BoolInt] + r"""Add metadata augmentations. An activity is created to indicate progress. Option will be ignored if specified by non-admin or if multiple metadata items are requested. Default is false.""" + augment_count: NotRequired[components_boolint.BoolInt] + r"""Number of augmentations to add. Requires `asyncAugmentMetadata` to be specified.""" + + +class GetMetadataItemRequest(BaseModel): + ids: Annotated[ + List[str], FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + async_check_files: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="asyncCheckFiles"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Determines if file check should be performed asynchronously. An activity is created to indicate progress. Default is false.""" + + async_refresh_local_media_agent: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="asyncRefreshLocalMediaAgent"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Determines if local media agent refresh should be performed asynchronously. An activity is created to indicate progress. Default is false.""" + + async_refresh_analysis: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="asyncRefreshAnalysis"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Determines if analysis refresh should be performed asynchronously. An activity is created to indicate progress. Default is false.""" + + check_files: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="checkFiles"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Determines if file check should be performed synchronously. Specifying `asyncCheckFiles` will cause this option to be ignored. Default is false.""" + + skip_refresh: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="skipRefresh"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Determines if synchronous local media agent and analysis refresh should be skipped. Specifying async versions will cause synchronous versions to be skipped. Default is false.""" + + check_file_availability: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="checkFileAvailability"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Determines if file existence check should be performed synchronously. Specifying `checkFiles` will imply this option. Default is false.""" + + async_augment_metadata: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="asyncAugmentMetadata"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Add metadata augmentations. An activity is created to indicate progress. Option will be ignored if specified by non-admin or if multiple metadata items are requested. Default is false.""" + + augment_count: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="augmentCount"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Number of augmentations to add. Requires `asyncAugmentMetadata` to be specified.""" + + +class GetMetadataItemResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class GetMetadataItemResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getmyplexaccount.py b/src/plex_api_client/models/operations/getmyplexaccount.py deleted file mode 100644 index e31e53a..0000000 --- a/src/plex_api_client/models/operations/getmyplexaccount.py +++ /dev/null @@ -1,96 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -import pydantic -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class MyPlexTypedDict(TypedDict): - auth_token: NotRequired[str] - username: NotRequired[str] - mapping_state: NotRequired[str] - mapping_error: NotRequired[str] - sign_in_state: NotRequired[str] - public_address: NotRequired[str] - public_port: NotRequired[float] - private_address: NotRequired[str] - private_port: NotRequired[float] - subscription_features: NotRequired[str] - subscription_active: NotRequired[bool] - subscription_state: NotRequired[str] - - -class MyPlex(BaseModel): - auth_token: Annotated[Optional[str], pydantic.Field(alias="authToken")] = None - - username: Optional[str] = None - - mapping_state: Annotated[Optional[str], pydantic.Field(alias="mappingState")] = None - - mapping_error: Annotated[Optional[str], pydantic.Field(alias="mappingError")] = None - - sign_in_state: Annotated[Optional[str], pydantic.Field(alias="signInState")] = None - - public_address: Annotated[Optional[str], pydantic.Field(alias="publicAddress")] = ( - None - ) - - public_port: Annotated[Optional[float], pydantic.Field(alias="publicPort")] = None - - private_address: Annotated[ - Optional[str], pydantic.Field(alias="privateAddress") - ] = None - - private_port: Annotated[Optional[float], pydantic.Field(alias="privatePort")] = None - - subscription_features: Annotated[ - Optional[str], pydantic.Field(alias="subscriptionFeatures") - ] = None - - subscription_active: Annotated[ - Optional[bool], pydantic.Field(alias="subscriptionActive") - ] = None - - subscription_state: Annotated[ - Optional[str], pydantic.Field(alias="subscriptionState") - ] = None - - -class GetMyPlexAccountResponseBodyTypedDict(TypedDict): - r"""MyPlex Account""" - - my_plex: NotRequired[MyPlexTypedDict] - - -class GetMyPlexAccountResponseBody(BaseModel): - r"""MyPlex Account""" - - my_plex: Annotated[Optional[MyPlex], pydantic.Field(alias="MyPlex")] = None - - -class GetMyPlexAccountResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetMyPlexAccountResponseBodyTypedDict] - r"""MyPlex Account""" - - -class GetMyPlexAccountResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetMyPlexAccountResponseBody] = None - r"""MyPlex Account""" diff --git a/src/plex_api_client/models/operations/getnotifications.py b/src/plex_api_client/models/operations/getnotifications.py new file mode 100644 index 0000000..52e55a3 --- /dev/null +++ b/src/plex_api_client/models/operations/getnotifications.py @@ -0,0 +1,264 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetNotificationsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetNotificationsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetNotificationsRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + filter_: NotRequired[List[str]] + r"""By default, all events except logs are sent. A rich filtering mechanism is provided to allow clients to opt into or out of each event type using the `filters` parameter. For example: + + - `filters=-log`: All event types except logs (the default). + - `filters=foo,bar`: Only the foo and bar event types. + - `filters=`: All events types. + - `filters=-foo,bar`: All event types except foo and bar. + + """ + + +class GetNotificationsRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + filter_: Annotated[ + Optional[List[str]], + pydantic.Field(alias="filter"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""By default, all events except logs are sent. A rich filtering mechanism is provided to allow clients to opt into or out of each event type using the `filters` parameter. For example: + + - `filters=-log`: All event types except logs (the default). + - `filters=foo,bar`: Only the foo and bar event types. + - `filters=`: All events types. + - `filters=-foo,bar`: All event types except foo and bar. + + """ + + +class GetNotificationsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + response_stream: NotRequired[httpx.Response] + r"""OK""" + + +class GetNotificationsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + response_stream: Optional[httpx.Response] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getpartindex.py b/src/plex_api_client/models/operations/getpartindex.py new file mode 100644 index 0000000..36ddf43 --- /dev/null +++ b/src/plex_api_client/models/operations/getpartindex.py @@ -0,0 +1,277 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetPartIndexGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetPartIndexGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class Index(str, Enum): + r"""The type of index to grab.""" + + SD = "sd" + + +class GetPartIndexRequestTypedDict(TypedDict): + part_id: int + r"""The part id who's index is to be fetched""" + index: Index + r"""The type of index to grab.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + interval: NotRequired[int] + r"""The interval between images to return in ms.""" + + +class GetPartIndexRequest(BaseModel): + part_id: Annotated[ + int, + pydantic.Field(alias="partId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The part id who's index is to be fetched""" + + index: Annotated[ + Index, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The type of index to grab.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + interval: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The interval between images to return in ms.""" + + +class GetPartIndexResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + response_stream: NotRequired[httpx.Response] + r"""OK""" + + +class GetPartIndexResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + response_stream: Optional[httpx.Response] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getperson.py b/src/plex_api_client/models/operations/getperson.py new file mode 100644 index 0000000..4a7cbab --- /dev/null +++ b/src/plex_api_client/models/operations/getperson.py @@ -0,0 +1,313 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + tag as components_tag, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetPersonGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetPersonGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetPersonRequestTypedDict(TypedDict): + person_id: str + r"""Either the PMS tag `id` of the person or `tagKey` of the actor. Note the `tagKey` is the hex portion of the plex guid for the actor""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetPersonRequest(BaseModel): + person_id: Annotated[ + str, + pydantic.Field(alias="personId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Either the PMS tag `id` of the person or `tagKey` of the actor. Note the `tagKey` is the hex portion of the plex guid for the actor""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetPersonMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + directory: NotRequired[List[components_tag.TagTypedDict]] + + +class GetPersonMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + directory: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Directory") + ] = None + + +class GetPersonResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetPersonMediaContainerTypedDict] + + +class GetPersonResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetPersonMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetPersonResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetPersonResponseBodyTypedDict] + r"""OK""" + + +class GetPersonResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetPersonResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getpin.py b/src/plex_api_client/models/operations/getpin.py deleted file mode 100644 index e55bb06..0000000 --- a/src/plex_api_client/models/operations/getpin.py +++ /dev/null @@ -1,262 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import datetime -import httpx -from plex_api_client.types import ( - BaseModel, - Nullable, - OptionalNullable, - UNSET, - UNSET_SENTINEL, -) -from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata -import pydantic -from pydantic import model_serializer -from typing import Any, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -GET_PIN_SERVERS = [ - "https://plex.tv/api/v2", -] - - -class GetPinRequestTypedDict(TypedDict): - client_id: str - r"""An opaque identifier unique to the client (UUID, serial number, or other unique device ID)""" - strong: NotRequired[bool] - r"""Determines the kind of code returned by the API call - Strong codes are used for Pin authentication flows - Non-Strong codes are used for `Plex.tv/link` - - """ - client_name: NotRequired[str] - r"""The name of the client application. (Plex Web, Plex Media Server, etc.)""" - device_nickname: NotRequired[str] - r"""A relatively friendly name for the client device""" - client_version: NotRequired[str] - r"""The version of the client application.""" - platform: NotRequired[str] - r"""The platform of the client application.""" - - -class GetPinRequest(BaseModel): - client_id: Annotated[ - str, - pydantic.Field(alias="X-Plex-Client-Identifier"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] - r"""An opaque identifier unique to the client (UUID, serial number, or other unique device ID)""" - - strong: Annotated[ - Optional[bool], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = False - r"""Determines the kind of code returned by the API call - Strong codes are used for Pin authentication flows - Non-Strong codes are used for `Plex.tv/link` - - """ - - client_name: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Product"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The name of the client application. (Plex Web, Plex Media Server, etc.)""" - - device_nickname: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Device"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""A relatively friendly name for the client device""" - - client_version: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Version"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The version of the client application.""" - - platform: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Platform"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The platform of the client application.""" - - -class GeoDataTypedDict(TypedDict): - r"""Geo location data""" - - code: str - r"""The ISO 3166-1 alpha-2 code of the country.""" - continent_code: str - r"""The continent code where the country is located.""" - country: str - r"""The official name of the country.""" - city: str - r"""The name of the city.""" - time_zone: str - r"""The time zone of the country.""" - postal_code: str - r"""The postal code of the location.""" - subdivisions: str - r"""The name of the primary administrative subdivision.""" - coordinates: str - r"""The geographical coordinates (latitude, longitude) of the location.""" - european_union_member: NotRequired[bool] - r"""Indicates if the country is a member of the European Union.""" - in_privacy_restricted_country: NotRequired[bool] - r"""Indicates if the country has privacy restrictions.""" - in_privacy_restricted_region: NotRequired[bool] - r"""Indicates if the region has privacy restrictions.""" - - -class GeoData(BaseModel): - r"""Geo location data""" - - code: str - r"""The ISO 3166-1 alpha-2 code of the country.""" - - continent_code: str - r"""The continent code where the country is located.""" - - country: str - r"""The official name of the country.""" - - city: str - r"""The name of the city.""" - - time_zone: str - r"""The time zone of the country.""" - - postal_code: str - r"""The postal code of the location.""" - - subdivisions: str - r"""The name of the primary administrative subdivision.""" - - coordinates: str - r"""The geographical coordinates (latitude, longitude) of the location.""" - - european_union_member: Optional[bool] = False - r"""Indicates if the country is a member of the European Union.""" - - in_privacy_restricted_country: Optional[bool] = False - r"""Indicates if the country has privacy restrictions.""" - - in_privacy_restricted_region: Optional[bool] = False - r"""Indicates if the region has privacy restrictions.""" - - -class GetPinAuthPinContainerTypedDict(TypedDict): - r"""Requests a new pin id used in the authentication flow""" - - id: int - code: str - product: str - qr: str - client_identifier: str - r"""The X-Client-Identifier used in the request""" - location: GeoDataTypedDict - r"""Geo location data""" - created_at: datetime - expires_at: datetime - trusted: NotRequired[bool] - expires_in: NotRequired[int] - r"""The number of seconds this pin expires, by default 900 seconds""" - auth_token: NotRequired[Nullable[str]] - new_registration: NotRequired[Nullable[Any]] - - -class GetPinAuthPinContainer(BaseModel): - r"""Requests a new pin id used in the authentication flow""" - - id: int - - code: str - - product: str - - qr: str - - client_identifier: Annotated[str, pydantic.Field(alias="clientIdentifier")] - r"""The X-Client-Identifier used in the request""" - - location: GeoData - r"""Geo location data""" - - created_at: Annotated[datetime, pydantic.Field(alias="createdAt")] - - expires_at: Annotated[datetime, pydantic.Field(alias="expiresAt")] - - trusted: Optional[bool] = False - - expires_in: Annotated[Optional[int], pydantic.Field(alias="expiresIn")] = 900 - r"""The number of seconds this pin expires, by default 900 seconds""" - - auth_token: Annotated[OptionalNullable[str], pydantic.Field(alias="authToken")] = ( - UNSET - ) - - new_registration: Annotated[ - OptionalNullable[Any], pydantic.Field(alias="newRegistration") - ] = UNSET - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = ["trusted", "expiresIn", "authToken", "newRegistration"] - nullable_fields = ["authToken", "newRegistration"] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class GetPinResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - auth_pin_container: NotRequired[GetPinAuthPinContainerTypedDict] - r"""Requests a new pin id used in the authentication flow""" - - -class GetPinResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - auth_pin_container: Optional[GetPinAuthPinContainer] = None - r"""Requests a new pin id used in the authentication flow""" diff --git a/src/plex_api_client/models/operations/getplaylist.py b/src/plex_api_client/models/operations/getplaylist.py index 69265af..18ff0a0 100644 --- a/src/plex_api_client/models/operations/getplaylist.py +++ b/src/plex_api_client/models/operations/getplaylist.py @@ -2,102 +2,230 @@ from __future__ import annotations import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithplaylistmetadata as components_mediacontainerwithplaylistmetadata, +) from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, PathParamMetadata +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic -from typing import List, Optional +from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict +class GetPlaylistGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetPlaylistGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + class GetPlaylistRequestTypedDict(TypedDict): - playlist_id: float - r"""the ID of the playlist""" + playlist_id: int + r"""The ID of the playlist""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" class GetPlaylistRequest(BaseModel): playlist_id: Annotated[ - float, - pydantic.Field(alias="playlistID"), + int, + pydantic.Field(alias="playlistId"), FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] - r"""the ID of the playlist""" + r"""The ID of the playlist""" + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" -class GetPlaylistMetadataTypedDict(TypedDict): - content: NotRequired[str] - rating_key: NotRequired[str] - key: NotRequired[str] - guid: NotRequired[str] - type: NotRequired[str] - title: NotRequired[str] - summary: NotRequired[str] - smart: NotRequired[bool] - playlist_type: NotRequired[str] - composite: NotRequired[str] - icon: NotRequired[str] - duration: NotRequired[int] - leaf_count: NotRequired[int] - added_at: NotRequired[int] - updated_at: NotRequired[int] - - -class GetPlaylistMetadata(BaseModel): - content: Optional[str] = None - - rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None - - key: Optional[str] = None - - guid: Optional[str] = None - - type: Optional[str] = None - - title: Optional[str] = None - - summary: Optional[str] = None - - smart: Optional[bool] = None - - playlist_type: Annotated[Optional[str], pydantic.Field(alias="playlistType")] = None - - composite: Optional[str] = None - - icon: Optional[str] = None - - duration: Optional[int] = None - - leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None - - added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - - -class GetPlaylistMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - metadata: NotRequired[List[GetPlaylistMetadataTypedDict]] - - -class GetPlaylistMediaContainer(BaseModel): - size: Optional[int] = None - - metadata: Annotated[ - Optional[List[GetPlaylistMetadata]], pydantic.Field(alias="Metadata") + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None + r"""An opaque identifier unique to the client""" - -class GetPlaylistResponseBodyTypedDict(TypedDict): - r"""The playlist""" - - media_container: NotRequired[GetPlaylistMediaContainerTypedDict] - - -class GetPlaylistResponseBody(BaseModel): - r"""The playlist""" - - media_container: Annotated[ - Optional[GetPlaylistMediaContainer], pydantic.Field(alias="MediaContainer") + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" class GetPlaylistResponseTypedDict(TypedDict): @@ -107,8 +235,10 @@ class GetPlaylistResponseTypedDict(TypedDict): r"""HTTP response status code for this operation""" raw_response: httpx.Response r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetPlaylistResponseBodyTypedDict] - r"""The playlist""" + media_container_with_playlist_metadata: NotRequired[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadataTypedDict + ] + r"""OK""" class GetPlaylistResponse(BaseModel): @@ -121,5 +251,7 @@ class GetPlaylistResponse(BaseModel): raw_response: httpx.Response r"""Raw HTTP response; suitable for custom response parsing""" - object: Optional[GetPlaylistResponseBody] = None - r"""The playlist""" + media_container_with_playlist_metadata: Optional[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getplaylistcontents.py b/src/plex_api_client/models/operations/getplaylistcontents.py deleted file mode 100644 index 9f3b010..0000000 --- a/src/plex_api_client/models/operations/getplaylistcontents.py +++ /dev/null @@ -1,429 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import date -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import ( - FieldMetadata, - PathParamMetadata, - QueryParamMetadata, - validate_open_enum, -) -import pydantic -from pydantic.functional_validators import PlainValidator -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetPlaylistContentsQueryParamType(int, Enum, metaclass=utils.OpenEnumMeta): - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - MOVIE = 1 - TV_SHOW = 2 - SEASON = 3 - EPISODE = 4 - ARTIST = 5 - ALBUM = 6 - TRACK = 7 - PHOTO_ALBUM = 8 - PHOTO = 9 - - -class GetPlaylistContentsRequestTypedDict(TypedDict): - playlist_id: float - r"""the ID of the playlist""" - type: GetPlaylistContentsQueryParamType - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - -class GetPlaylistContentsRequest(BaseModel): - playlist_id: Annotated[ - float, - pydantic.Field(alias="playlistID"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""the ID of the playlist""" - - type: Annotated[ - Annotated[ - GetPlaylistContentsQueryParamType, PlainValidator(validate_open_enum(True)) - ], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - -class GetPlaylistContentsPartTypedDict(TypedDict): - id: NotRequired[int] - key: NotRequired[str] - duration: NotRequired[int] - file: NotRequired[str] - size: NotRequired[int] - audio_profile: NotRequired[str] - container: NotRequired[str] - has64bit_offsets: NotRequired[bool] - optimized_for_streaming: NotRequired[bool] - video_profile: NotRequired[str] - - -class GetPlaylistContentsPart(BaseModel): - id: Optional[int] = None - - key: Optional[str] = None - - duration: Optional[int] = None - - file: Optional[str] = None - - size: Optional[int] = None - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - - container: Optional[str] = None - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - optimized_for_streaming: Annotated[ - Optional[bool], pydantic.Field(alias="optimizedForStreaming") - ] = None - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - - -class GetPlaylistContentsMediaTypedDict(TypedDict): - id: NotRequired[int] - duration: NotRequired[int] - bitrate: NotRequired[int] - width: NotRequired[int] - height: NotRequired[int] - aspect_ratio: NotRequired[float] - audio_channels: NotRequired[int] - audio_codec: NotRequired[str] - video_codec: NotRequired[str] - video_resolution: NotRequired[str] - container: NotRequired[str] - video_frame_rate: NotRequired[str] - optimized_for_streaming: NotRequired[int] - audio_profile: NotRequired[str] - has64bit_offsets: NotRequired[bool] - video_profile: NotRequired[str] - part: NotRequired[List[GetPlaylistContentsPartTypedDict]] - - -class GetPlaylistContentsMedia(BaseModel): - id: Optional[int] = None - - duration: Optional[int] = None - - bitrate: Optional[int] = None - - width: Optional[int] = None - - height: Optional[int] = None - - aspect_ratio: Annotated[Optional[float], pydantic.Field(alias="aspectRatio")] = None - - audio_channels: Annotated[Optional[int], pydantic.Field(alias="audioChannels")] = ( - None - ) - - audio_codec: Annotated[Optional[str], pydantic.Field(alias="audioCodec")] = None - - video_codec: Annotated[Optional[str], pydantic.Field(alias="videoCodec")] = None - - video_resolution: Annotated[ - Optional[str], pydantic.Field(alias="videoResolution") - ] = None - - container: Optional[str] = None - - video_frame_rate: Annotated[ - Optional[str], pydantic.Field(alias="videoFrameRate") - ] = None - - optimized_for_streaming: Annotated[ - Optional[int], pydantic.Field(alias="optimizedForStreaming") - ] = None - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - - has64bit_offsets: Annotated[ - Optional[bool], pydantic.Field(alias="has64bitOffsets") - ] = None - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - - part: Annotated[ - Optional[List[GetPlaylistContentsPart]], pydantic.Field(alias="Part") - ] = None - - -class GetPlaylistContentsGenreTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetPlaylistContentsGenre(BaseModel): - tag: Optional[str] = None - - -class GetPlaylistContentsCountryTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetPlaylistContentsCountry(BaseModel): - tag: Optional[str] = None - - -class GetPlaylistContentsDirectorTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetPlaylistContentsDirector(BaseModel): - tag: Optional[str] = None - - -class GetPlaylistContentsWriterTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetPlaylistContentsWriter(BaseModel): - tag: Optional[str] = None - - -class GetPlaylistContentsRoleTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetPlaylistContentsRole(BaseModel): - tag: Optional[str] = None - - -class GetPlaylistContentsMetadataTypedDict(TypedDict): - rating_key: NotRequired[str] - key: NotRequired[str] - guid: NotRequired[str] - studio: NotRequired[str] - type: NotRequired[str] - title: NotRequired[str] - title_sort: NotRequired[str] - library_section_title: NotRequired[str] - library_section_id: NotRequired[int] - library_section_key: NotRequired[str] - content_rating: NotRequired[str] - summary: NotRequired[str] - rating: NotRequired[float] - audience_rating: NotRequired[float] - year: NotRequired[int] - tagline: NotRequired[str] - thumb: NotRequired[str] - art: NotRequired[str] - duration: NotRequired[int] - originally_available_at: NotRequired[date] - added_at: NotRequired[int] - updated_at: NotRequired[int] - audience_rating_image: NotRequired[str] - has_premium_extras: NotRequired[str] - has_premium_primary_extra: NotRequired[str] - rating_image: NotRequired[str] - media: NotRequired[List[GetPlaylistContentsMediaTypedDict]] - genre: NotRequired[List[GetPlaylistContentsGenreTypedDict]] - country: NotRequired[List[GetPlaylistContentsCountryTypedDict]] - director: NotRequired[List[GetPlaylistContentsDirectorTypedDict]] - writer: NotRequired[List[GetPlaylistContentsWriterTypedDict]] - role: NotRequired[List[GetPlaylistContentsRoleTypedDict]] - - -class GetPlaylistContentsMetadata(BaseModel): - rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None - - key: Optional[str] = None - - guid: Optional[str] = None - - studio: Optional[str] = None - - type: Optional[str] = None - - title: Optional[str] = None - - title_sort: Annotated[Optional[str], pydantic.Field(alias="titleSort")] = None - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - - library_section_id: Annotated[ - Optional[int], pydantic.Field(alias="librarySectionID") - ] = None - - library_section_key: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionKey") - ] = None - - content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( - None - ) - - summary: Optional[str] = None - - rating: Optional[float] = None - - audience_rating: Annotated[ - Optional[float], pydantic.Field(alias="audienceRating") - ] = None - - year: Optional[int] = None - - tagline: Optional[str] = None - - thumb: Optional[str] = None - - art: Optional[str] = None - - duration: Optional[int] = None - - originally_available_at: Annotated[ - Optional[date], pydantic.Field(alias="originallyAvailableAt") - ] = None - - added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - - audience_rating_image: Annotated[ - Optional[str], pydantic.Field(alias="audienceRatingImage") - ] = None - - has_premium_extras: Annotated[ - Optional[str], pydantic.Field(alias="hasPremiumExtras") - ] = None - - has_premium_primary_extra: Annotated[ - Optional[str], pydantic.Field(alias="hasPremiumPrimaryExtra") - ] = None - - rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None - - media: Annotated[ - Optional[List[GetPlaylistContentsMedia]], pydantic.Field(alias="Media") - ] = None - - genre: Annotated[ - Optional[List[GetPlaylistContentsGenre]], pydantic.Field(alias="Genre") - ] = None - - country: Annotated[ - Optional[List[GetPlaylistContentsCountry]], pydantic.Field(alias="Country") - ] = None - - director: Annotated[ - Optional[List[GetPlaylistContentsDirector]], pydantic.Field(alias="Director") - ] = None - - writer: Annotated[ - Optional[List[GetPlaylistContentsWriter]], pydantic.Field(alias="Writer") - ] = None - - role: Annotated[ - Optional[List[GetPlaylistContentsRole]], pydantic.Field(alias="Role") - ] = None - - -class GetPlaylistContentsMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - composite: NotRequired[str] - duration: NotRequired[int] - leaf_count: NotRequired[int] - playlist_type: NotRequired[str] - rating_key: NotRequired[str] - smart: NotRequired[bool] - title: NotRequired[str] - metadata: NotRequired[List[GetPlaylistContentsMetadataTypedDict]] - - -class GetPlaylistContentsMediaContainer(BaseModel): - size: Optional[int] = None - - composite: Optional[str] = None - - duration: Optional[int] = None - - leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None - - playlist_type: Annotated[Optional[str], pydantic.Field(alias="playlistType")] = None - - rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None - - smart: Optional[bool] = None - - title: Optional[str] = None - - metadata: Annotated[ - Optional[List[GetPlaylistContentsMetadata]], pydantic.Field(alias="Metadata") - ] = None - - -class GetPlaylistContentsResponseBodyTypedDict(TypedDict): - r"""The playlist contents""" - - media_container: NotRequired[GetPlaylistContentsMediaContainerTypedDict] - - -class GetPlaylistContentsResponseBody(BaseModel): - r"""The playlist contents""" - - media_container: Annotated[ - Optional[GetPlaylistContentsMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class GetPlaylistContentsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetPlaylistContentsResponseBodyTypedDict] - r"""The playlist contents""" - - -class GetPlaylistContentsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetPlaylistContentsResponseBody] = None - r"""The playlist contents""" diff --git a/src/plex_api_client/models/operations/getplaylistgenerator.py b/src/plex_api_client/models/operations/getplaylistgenerator.py new file mode 100644 index 0000000..aa0d9c6 --- /dev/null +++ b/src/plex_api_client/models/operations/getplaylistgenerator.py @@ -0,0 +1,561 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetPlaylistGeneratorGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetPlaylistGeneratorGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetPlaylistGeneratorRequestTypedDict(TypedDict): + playlist_id: int + r"""The ID of the playlist""" + generator_id: int + r"""The generator item ID to delete.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetPlaylistGeneratorRequest(BaseModel): + playlist_id: Annotated[ + int, + pydantic.Field(alias="playlistId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the playlist""" + + generator_id: Annotated[ + int, + pydantic.Field(alias="generatorId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The generator item ID to delete.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetPlaylistGeneratorDeviceTypedDict(TypedDict): + profile: NotRequired[str] + + +class GetPlaylistGeneratorDevice(BaseModel): + profile: Optional[str] = None + + +class GetPlaylistGeneratorLocationTypedDict(TypedDict): + library_section_id: NotRequired[int] + uri: NotRequired[str] + + +class GetPlaylistGeneratorLocation(BaseModel): + library_section_id: Annotated[ + Optional[int], pydantic.Field(alias="librarySectionID") + ] = None + + uri: Optional[str] = None + + +class AdvancedSubtitles(str, Enum): + AUTO = "auto" + BURN = "burn" + NONE = "none" + SIDECAR = "sidecar" + EMBEDDED = "embedded" + SEGMENTED = "segmented" + + +class GetPlaylistGeneratorSubtitles(str, Enum): + AUTO = "auto" + BURN = "burn" + NONE = "none" + SIDECAR = "sidecar" + EMBEDDED = "embedded" + SEGMENTED = "segmented" + + +class MediaSettingsTypedDict(TypedDict): + advanced_subtitles: NotRequired[AdvancedSubtitles] + audio_boost: NotRequired[int] + audio_channel_count: NotRequired[int] + auto_adjust_quality: NotRequired[bool] + auto_adjust_subtitle: NotRequired[bool] + direct_play: NotRequired[bool] + direct_stream: NotRequired[bool] + direct_stream_audio: NotRequired[bool] + disable_resolution_rotation: NotRequired[bool] + max_video_bitrate: NotRequired[int] + music_bitrate: NotRequired[int] + peak_bitrate: NotRequired[int] + photo_quality: NotRequired[int] + photo_resolution: NotRequired[str] + seconds_per_segment: NotRequired[int] + subtitles: NotRequired[GetPlaylistGeneratorSubtitles] + subtitle_size: NotRequired[int] + video_bitrate: NotRequired[int] + video_quality: NotRequired[int] + video_resolution: NotRequired[str] + + +class MediaSettings(BaseModel): + advanced_subtitles: Annotated[ + Optional[AdvancedSubtitles], pydantic.Field(alias="advancedSubtitles") + ] = None + + audio_boost: Annotated[Optional[int], pydantic.Field(alias="audioBoost")] = None + + audio_channel_count: Annotated[ + Optional[int], pydantic.Field(alias="audioChannelCount") + ] = None + + auto_adjust_quality: Annotated[ + Optional[bool], pydantic.Field(alias="autoAdjustQuality") + ] = None + + auto_adjust_subtitle: Annotated[ + Optional[bool], pydantic.Field(alias="autoAdjustSubtitle") + ] = None + + direct_play: Annotated[Optional[bool], pydantic.Field(alias="directPlay")] = None + + direct_stream: Annotated[Optional[bool], pydantic.Field(alias="directStream")] = ( + None + ) + + direct_stream_audio: Annotated[ + Optional[bool], pydantic.Field(alias="directStreamAudio") + ] = None + + disable_resolution_rotation: Annotated[ + Optional[bool], pydantic.Field(alias="disableResolutionRotation") + ] = None + + max_video_bitrate: Annotated[ + Optional[int], pydantic.Field(alias="maxVideoBitrate") + ] = None + + music_bitrate: Annotated[Optional[int], pydantic.Field(alias="musicBitrate")] = None + + peak_bitrate: Annotated[Optional[int], pydantic.Field(alias="peakBitrate")] = None + + photo_quality: Annotated[Optional[int], pydantic.Field(alias="photoQuality")] = None + + photo_resolution: Annotated[ + Optional[str], pydantic.Field(alias="photoResolution") + ] = None + + seconds_per_segment: Annotated[ + Optional[int], pydantic.Field(alias="secondsPerSegment") + ] = None + + subtitles: Optional[GetPlaylistGeneratorSubtitles] = None + + subtitle_size: Annotated[Optional[int], pydantic.Field(alias="subtitleSize")] = None + + video_bitrate: Annotated[Optional[int], pydantic.Field(alias="videoBitrate")] = None + + video_quality: Annotated[Optional[int], pydantic.Field(alias="videoQuality")] = None + + video_resolution: Annotated[ + Optional[str], pydantic.Field(alias="videoResolution") + ] = None + + +class GetPlaylistGeneratorScope(str, Enum): + ALL = "all" + COUNT = "count" + + +class GetPlaylistGeneratorPolicyTypedDict(TypedDict): + scope: NotRequired[GetPlaylistGeneratorScope] + unwatched: NotRequired[bool] + r"""True if only unwatched items are optimized""" + value: NotRequired[int] + r"""If the scope is count, the number of items to optimize""" + + +class GetPlaylistGeneratorPolicy(BaseModel): + scope: Optional[GetPlaylistGeneratorScope] = None + + unwatched: Optional[bool] = None + r"""True if only unwatched items are optimized""" + + value: Optional[int] = None + r"""If the scope is count, the number of items to optimize""" + + +class GetPlaylistGeneratorState(str, Enum): + PENDING = "pending" + COMPLETE = "complete" + FAILED = "failed" + + +class GetPlaylistGeneratorStatusTypedDict(TypedDict): + items_complete_count: NotRequired[int] + items_count: NotRequired[int] + items_successful_count: NotRequired[int] + state: NotRequired[GetPlaylistGeneratorState] + total_size: NotRequired[int] + + +class GetPlaylistGeneratorStatus(BaseModel): + items_complete_count: Annotated[ + Optional[int], pydantic.Field(alias="itemsCompleteCount") + ] = None + + items_count: Annotated[Optional[int], pydantic.Field(alias="itemsCount")] = None + + items_successful_count: Annotated[ + Optional[int], pydantic.Field(alias="itemsSuccessfulCount") + ] = None + + state: Optional[GetPlaylistGeneratorState] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + + +class GetPlaylistGeneratorType(int, Enum): + r"""The type of this generator""" + + MINUS_1 = -1 + FORTY_TWO = 42 + + +class GetPlaylistGeneratorItemTypedDict(TypedDict): + composite: NotRequired[str] + r"""The composite thumbnail image path""" + device: NotRequired[GetPlaylistGeneratorDeviceTypedDict] + id: NotRequired[int] + location: NotRequired[GetPlaylistGeneratorLocationTypedDict] + media_settings: NotRequired[MediaSettingsTypedDict] + policy: NotRequired[GetPlaylistGeneratorPolicyTypedDict] + status: NotRequired[GetPlaylistGeneratorStatusTypedDict] + target: NotRequired[str] + target_tag_id: NotRequired[int] + r"""The tag of this generator's settings""" + title: NotRequired[str] + type: NotRequired[GetPlaylistGeneratorType] + r"""The type of this generator""" + + +class GetPlaylistGeneratorItem(BaseModel): + composite: Optional[str] = None + r"""The composite thumbnail image path""" + + device: Annotated[ + Optional[GetPlaylistGeneratorDevice], pydantic.Field(alias="Device") + ] = None + + id: Optional[int] = None + + location: Annotated[ + Optional[GetPlaylistGeneratorLocation], pydantic.Field(alias="Location") + ] = None + + media_settings: Annotated[ + Optional[MediaSettings], pydantic.Field(alias="MediaSettings") + ] = None + + policy: Annotated[ + Optional[GetPlaylistGeneratorPolicy], pydantic.Field(alias="Policy") + ] = None + + status: Annotated[ + Optional[GetPlaylistGeneratorStatus], pydantic.Field(alias="Status") + ] = None + + target: Optional[str] = None + + target_tag_id: Annotated[Optional[int], pydantic.Field(alias="targetTagID")] = None + r"""The tag of this generator's settings""" + + title: Optional[str] = None + + type: Optional[GetPlaylistGeneratorType] = None + r"""The type of this generator""" + + +class GetPlaylistGeneratorMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + item: NotRequired[List[GetPlaylistGeneratorItemTypedDict]] + + +class GetPlaylistGeneratorMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + item: Annotated[ + Optional[List[GetPlaylistGeneratorItem]], pydantic.Field(alias="Item") + ] = None + + +class GetPlaylistGeneratorResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetPlaylistGeneratorMediaContainerTypedDict] + + +class GetPlaylistGeneratorResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetPlaylistGeneratorMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetPlaylistGeneratorResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetPlaylistGeneratorResponseBodyTypedDict] + r"""OK""" + + +class GetPlaylistGeneratorResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetPlaylistGeneratorResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getplaylistgeneratoritems.py b/src/plex_api_client/models/operations/getplaylistgeneratoritems.py new file mode 100644 index 0000000..fe4d470 --- /dev/null +++ b/src/plex_api_client/models/operations/getplaylistgeneratoritems.py @@ -0,0 +1,782 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + filter_ as components_filter_, + image as components_image, + media as components_media, + sort as components_sort, + tag as components_tag, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetPlaylistGeneratorItemsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetPlaylistGeneratorItemsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetPlaylistGeneratorItemsRequestTypedDict(TypedDict): + playlist_id: int + r"""The ID of the playlist""" + generator_id: int + r"""The generator item ID to delete.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetPlaylistGeneratorItemsRequest(BaseModel): + playlist_id: Annotated[ + int, + pydantic.Field(alias="playlistId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the playlist""" + + generator_id: Annotated[ + int, + pydantic.Field(alias="generatorId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The generator item ID to delete.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ProcessingState(str, Enum): + r"""The state of processing if this generator is part of an optimizer playlist""" + + PROCESSED = "processed" + COMPLETED = "completed" + TOMBSTONED = "tombstoned" + DISABLED = "disabled" + ERROR = "error" + PENDING = "pending" + + +class ProcessingStateContext(str, Enum): + r"""The error which could have occurred (or `good`)""" + + GOOD = "good" + SOURCE_FILE_UNAVAILABLE = "sourceFileUnavailable" + SOURCE_FILE_METADATA_ERROR = "sourceFileMetadataError" + CLIENT_PROFILE_ERROR = "clientProfileError" + IO_ERROR = "ioError" + TRANSCODER_ERROR = "transcoderError" + UNKNOWN_ERROR = "unknownError" + MEDIA_ANALYSIS_ERROR = "mediaAnalysisError" + DOWNLOAD_FAILED = "downloadFailed" + ACCESS_DENIED = "accessDenied" + CANNOT_TRANSCODE = "cannotTranscode" + CODEC_INSTALL_ERROR = "codecInstallError" + + +class GetPlaylistGeneratorItemsMetadataTypedDict(TypedDict): + r"""Items in a library are referred to as \"metadata items.\" These metadata items are distinct from \"media items\" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a \"media item\" will have one or more \"media parts\" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + + Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + + Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, \"leaves\" refer to metadata items which has associated media (there is no media for a season nor show). A show will have \"children\" in the form of seasons and a season will have \"children\" in the form of episodes and episodes have \"parent\" in the form of a season which has a \"parent\" in the form of a show. Similarly, a show has \"grandchildren\" in the form of episodse and an episode has a \"grandparent\" in the form of a show. + + """ + + title: NotRequired[Any] + r"""The title of the item (e.g. “300” or “The Simpsons”)""" + type: NotRequired[Any] + r"""The type of the video item, such as `movie`, `episode`, or `clip`.""" + absolute_index: NotRequired[int] + r"""When present, contains the disc number for a track on multi-disc albums.""" + added_at: NotRequired[int] + r"""In units of seconds since the epoch, returns the time at which the item was added to the library.""" + art: NotRequired[Any] + r"""When present, the URL for the background artwork for the item.""" + audience_rating: NotRequired[float] + r"""Some rating systems separate reviewer ratings from audience ratings""" + audience_rating_image: NotRequired[Any] + r"""A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).""" + autotag: NotRequired[List[components_tag.TagTypedDict]] + banner: NotRequired[Any] + r"""When present, the URL for a banner graphic for the item.""" + chapter_source: NotRequired[Any] + r"""When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).""" + composite: NotRequired[Any] + r"""When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).""" + content_rating: NotRequired[Any] + r"""If known, the content rating (e.g. MPAA) for an item.""" + country: NotRequired[List[components_tag.TagTypedDict]] + director: NotRequired[List[components_tag.TagTypedDict]] + duration: NotRequired[int] + r"""When present, the duration for the item, in units of milliseconds.""" + filter_: NotRequired[List[components_filter_.FilterTypedDict]] + r"""Typically only seen in metadata at a library's top level""" + genre: NotRequired[List[components_tag.TagTypedDict]] + grandparent_art: NotRequired[str] + r"""The `art` of the grandparent""" + grandparent_hero: NotRequired[str] + r"""The `hero` of the grandparent""" + grandparent_key: NotRequired[str] + r"""The `key` of the grandparent""" + grandparent_rating_key: NotRequired[str] + r"""The `ratingKey` of the grandparent""" + grandparent_theme: NotRequired[str] + r"""The `theme` of the grandparent""" + grandparent_thumb: NotRequired[str] + r"""The `thumb` of the grandparent""" + grandparent_title: NotRequired[str] + r"""The `title` of the grandparent""" + guid: NotRequired[List[components_tag.TagTypedDict]] + hero: NotRequired[Any] + r"""When present, the URL for a hero image for the item.""" + image: NotRequired[List[components_image.ImageTypedDict]] + index: NotRequired[int] + r"""When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.""" + key: NotRequired[Any] + r"""The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.""" + last_viewed_at: NotRequired[int] + r"""When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.""" + leaf_count: NotRequired[int] + r"""For shows and seasons, contains the number of total episodes.""" + media: NotRequired[List[components_media.MediaTypedDict]] + originally_available_at: NotRequired[Any] + r"""When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.""" + original_title: NotRequired[Any] + r"""When present, used to indicate an item's original title, e.g. a movie's foreign title.""" + parent_hero: NotRequired[str] + r"""The `hero` of the parent""" + parent_index: NotRequired[int] + r"""The `index` of the parent""" + parent_key: NotRequired[str] + r"""The `key` of the parent""" + parent_rating_key: NotRequired[str] + r"""The `ratingKey` of the parent""" + parent_thumb: NotRequired[str] + r"""The `thumb` of the parent""" + parent_title: NotRequired[str] + r"""The `title` of the parent""" + primary_extra_key: NotRequired[Any] + r"""Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.""" + prompt: NotRequired[str] + r"""Prompt to give the user for this directory (such as `Search Movies`)""" + rating: NotRequired[float] + r"""When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.""" + rating_array: NotRequired[List[components_tag.TagTypedDict]] + rating_count: NotRequired[int] + r"""Number of ratings under this metadata""" + rating_image: NotRequired[Any] + r"""When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.""" + rating_key: NotRequired[Any] + r"""This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.""" + role: NotRequired[List[components_tag.TagTypedDict]] + search: NotRequired[bool] + r"""Indicates this is a search directory""" + secondary: NotRequired[bool] + r"""Used by old clients to provide nested menus allowing for primative (but structured) navigation.""" + skip_children: NotRequired[bool] + r"""When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc.""" + skip_parent: NotRequired[bool] + r"""When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show).""" + sort: NotRequired[List[components_sort.SortTypedDict]] + r"""Typically only seen in metadata at a library's top level""" + studio: NotRequired[Any] + r"""When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).""" + subtype: NotRequired[Any] + r"""The subtype of the video item, such as `photo` when the video item is in a photo library""" + summary: NotRequired[Any] + r"""When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).""" + tagline: NotRequired[Any] + r"""When present, a pithy one-liner about the item (usually only seen for movies).""" + theme: NotRequired[Any] + r"""When present, the URL for theme music for the item (usually only for TV shows).""" + thumb: NotRequired[Any] + r"""When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.""" + title_sort: NotRequired[Any] + r"""Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”).""" + updated_at: NotRequired[int] + r"""In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).""" + user_rating: NotRequired[float] + r"""When the user has rated an item, this contains the user rating""" + view_count: NotRequired[int] + r"""When a users has completed watched or listened to an item, this attribute contains the number of consumptions.""" + viewed_leaf_count: NotRequired[int] + r"""For shows and seasons, contains the number of viewed episodes.""" + view_offset: NotRequired[int] + r"""When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.""" + writer: NotRequired[List[components_tag.TagTypedDict]] + year: NotRequired[int] + r"""When present, the year associated with the item's release (e.g. release year for a movie).""" + processing_state: NotRequired[ProcessingState] + r"""The state of processing if this generator is part of an optimizer playlist""" + processing_state_context: NotRequired[ProcessingStateContext] + r"""The error which could have occurred (or `good`)""" + + +class GetPlaylistGeneratorItemsMetadata(BaseModel): + r"""Items in a library are referred to as \"metadata items.\" These metadata items are distinct from \"media items\" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a \"media item\" will have one or more \"media parts\" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + + Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + + Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, \"leaves\" refer to metadata items which has associated media (there is no media for a season nor show). A show will have \"children\" in the form of seasons and a season will have \"children\" in the form of episodes and episodes have \"parent\" in the form of a season which has a \"parent\" in the form of a show. Similarly, a show has \"grandchildren\" in the form of episodse and an episode has a \"grandparent\" in the form of a show. + + """ + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + title: Optional[Any] = None + r"""The title of the item (e.g. “300” or “The Simpsons”)""" + + type: Optional[Any] = None + r"""The type of the video item, such as `movie`, `episode`, or `clip`.""" + + absolute_index: Annotated[Optional[int], pydantic.Field(alias="absoluteIndex")] = ( + None + ) + r"""When present, contains the disc number for a track on multi-disc albums.""" + + added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None + r"""In units of seconds since the epoch, returns the time at which the item was added to the library.""" + + art: Optional[Any] = None + r"""When present, the URL for the background artwork for the item.""" + + audience_rating: Annotated[ + Optional[float], pydantic.Field(alias="audienceRating") + ] = None + r"""Some rating systems separate reviewer ratings from audience ratings""" + + audience_rating_image: Annotated[ + Optional[Any], pydantic.Field(alias="audienceRatingImage") + ] = None + r"""A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).""" + + autotag: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Autotag") + ] = None + + banner: Optional[Any] = None + r"""When present, the URL for a banner graphic for the item.""" + + chapter_source: Annotated[Optional[Any], pydantic.Field(alias="chapterSource")] = ( + None + ) + r"""When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).""" + + composite: Optional[Any] = None + r"""When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).""" + + content_rating: Annotated[Optional[Any], pydantic.Field(alias="contentRating")] = ( + None + ) + r"""If known, the content rating (e.g. MPAA) for an item.""" + + country: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Country") + ] = None + + director: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Director") + ] = None + + duration: Optional[int] = None + r"""When present, the duration for the item, in units of milliseconds.""" + + filter_: Annotated[ + Optional[List[components_filter_.Filter]], pydantic.Field(alias="Filter") + ] = None + r"""Typically only seen in metadata at a library's top level""" + + genre: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Genre") + ] = None + + grandparent_art: Annotated[ + Optional[str], pydantic.Field(alias="grandparentArt") + ] = None + r"""The `art` of the grandparent""" + + grandparent_hero: Annotated[ + Optional[str], pydantic.Field(alias="grandparentHero") + ] = None + r"""The `hero` of the grandparent""" + + grandparent_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentKey") + ] = None + r"""The `key` of the grandparent""" + + grandparent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentRatingKey") + ] = None + r"""The `ratingKey` of the grandparent""" + + grandparent_theme: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTheme") + ] = None + r"""The `theme` of the grandparent""" + + grandparent_thumb: Annotated[ + Optional[str], pydantic.Field(alias="grandparentThumb") + ] = None + r"""The `thumb` of the grandparent""" + + grandparent_title: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTitle") + ] = None + r"""The `title` of the grandparent""" + + guid: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Guid") + ] = None + + hero: Optional[Any] = None + r"""When present, the URL for a hero image for the item.""" + + image: Annotated[ + Optional[List[components_image.Image]], pydantic.Field(alias="Image") + ] = None + + index: Optional[int] = None + r"""When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.""" + + key: Optional[Any] = None + r"""The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.""" + + last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( + None + ) + r"""When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.""" + + leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None + r"""For shows and seasons, contains the number of total episodes.""" + + media: Annotated[ + Optional[List[components_media.Media]], pydantic.Field(alias="Media") + ] = None + + originally_available_at: Annotated[ + Optional[Any], pydantic.Field(alias="originallyAvailableAt") + ] = None + r"""When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.""" + + original_title: Annotated[Optional[Any], pydantic.Field(alias="originalTitle")] = ( + None + ) + r"""When present, used to indicate an item's original title, e.g. a movie's foreign title.""" + + parent_hero: Annotated[Optional[str], pydantic.Field(alias="parentHero")] = None + r"""The `hero` of the parent""" + + parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None + r"""The `index` of the parent""" + + parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None + r"""The `key` of the parent""" + + parent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="parentRatingKey") + ] = None + r"""The `ratingKey` of the parent""" + + parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None + r"""The `thumb` of the parent""" + + parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None + r"""The `title` of the parent""" + + primary_extra_key: Annotated[ + Optional[Any], pydantic.Field(alias="primaryExtraKey") + ] = None + r"""Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.""" + + prompt: Optional[str] = None + r"""Prompt to give the user for this directory (such as `Search Movies`)""" + + rating: Optional[float] = None + r"""When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.""" + + rating_array: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Rating") + ] = None + + rating_count: Annotated[Optional[int], pydantic.Field(alias="ratingCount")] = None + r"""Number of ratings under this metadata""" + + rating_image: Annotated[Optional[Any], pydantic.Field(alias="ratingImage")] = None + r"""When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.""" + + rating_key: Annotated[Optional[Any], pydantic.Field(alias="ratingKey")] = None + r"""This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.""" + + role: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Role") + ] = None + + search: Optional[bool] = None + r"""Indicates this is a search directory""" + + secondary: Optional[bool] = None + r"""Used by old clients to provide nested menus allowing for primative (but structured) navigation.""" + + skip_children: Annotated[Optional[bool], pydantic.Field(alias="skipChildren")] = ( + None + ) + r"""When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc.""" + + skip_parent: Annotated[Optional[bool], pydantic.Field(alias="skipParent")] = None + r"""When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show).""" + + sort: Annotated[ + Optional[List[components_sort.Sort]], pydantic.Field(alias="Sort") + ] = None + r"""Typically only seen in metadata at a library's top level""" + + studio: Optional[Any] = None + r"""When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).""" + + subtype: Optional[Any] = None + r"""The subtype of the video item, such as `photo` when the video item is in a photo library""" + + summary: Optional[Any] = None + r"""When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).""" + + tagline: Optional[Any] = None + r"""When present, a pithy one-liner about the item (usually only seen for movies).""" + + theme: Optional[Any] = None + r"""When present, the URL for theme music for the item (usually only for TV shows).""" + + thumb: Optional[Any] = None + r"""When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.""" + + title_sort: Annotated[Optional[Any], pydantic.Field(alias="titleSort")] = None + r"""Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”).""" + + updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None + r"""In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).""" + + user_rating: Annotated[Optional[float], pydantic.Field(alias="userRating")] = None + r"""When the user has rated an item, this contains the user rating""" + + view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None + r"""When a users has completed watched or listened to an item, this attribute contains the number of consumptions.""" + + viewed_leaf_count: Annotated[ + Optional[int], pydantic.Field(alias="viewedLeafCount") + ] = None + r"""For shows and seasons, contains the number of viewed episodes.""" + + view_offset: Annotated[Optional[int], pydantic.Field(alias="viewOffset")] = None + r"""When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.""" + + writer: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Writer") + ] = None + + year: Optional[int] = None + r"""When present, the year associated with the item's release (e.g. release year for a movie).""" + + processing_state: Annotated[ + Optional[ProcessingState], pydantic.Field(alias="processingState") + ] = None + r"""The state of processing if this generator is part of an optimizer playlist""" + + processing_state_context: Annotated[ + Optional[ProcessingStateContext], pydantic.Field(alias="processingStateContext") + ] = None + r"""The error which could have occurred (or `good`)""" + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + +class GetPlaylistGeneratorItemsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + metadata: NotRequired[GetPlaylistGeneratorItemsMetadataTypedDict] + + +class GetPlaylistGeneratorItemsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + metadata: Annotated[ + Optional[GetPlaylistGeneratorItemsMetadata], pydantic.Field(alias="Metadata") + ] = None + + +class GetPlaylistGeneratorItemsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetPlaylistGeneratorItemsMediaContainerTypedDict] + + +class GetPlaylistGeneratorItemsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetPlaylistGeneratorItemsMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetPlaylistGeneratorItemsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetPlaylistGeneratorItemsResponseBodyTypedDict] + r"""OK""" + + +class GetPlaylistGeneratorItemsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetPlaylistGeneratorItemsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getplaylistgenerators.py b/src/plex_api_client/models/operations/getplaylistgenerators.py new file mode 100644 index 0000000..e537b52 --- /dev/null +++ b/src/plex_api_client/models/operations/getplaylistgenerators.py @@ -0,0 +1,364 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetPlaylistGeneratorsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetPlaylistGeneratorsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetPlaylistGeneratorsRequestTypedDict(TypedDict): + playlist_id: int + r"""The ID of the playlist""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetPlaylistGeneratorsRequest(BaseModel): + playlist_id: Annotated[ + int, + pydantic.Field(alias="playlistId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the playlist""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetPlaylistGeneratorsType(int, Enum): + r"""The type of playlist generator. + + - -1: A smart playlist generator + - 42: A optimized version generator + + """ + + MINUS_1 = -1 + FORTY_TWO = 42 + + +class PlayQueueGeneratorTypedDict(TypedDict): + changed_at: NotRequired[int] + created_at: NotRequired[int] + id: NotRequired[int] + playlist_id: NotRequired[int] + type: NotRequired[GetPlaylistGeneratorsType] + r"""The type of playlist generator. + + - -1: A smart playlist generator + - 42: A optimized version generator + + """ + updated_at: NotRequired[int] + uri: NotRequired[str] + r"""The URI indicating the search for this generator""" + + +class PlayQueueGenerator(BaseModel): + changed_at: Annotated[Optional[int], pydantic.Field(alias="changedAt")] = None + + created_at: Annotated[Optional[int], pydantic.Field(alias="createdAt")] = None + + id: Optional[int] = None + + playlist_id: Annotated[Optional[int], pydantic.Field(alias="playlistID")] = None + + type: Optional[GetPlaylistGeneratorsType] = None + r"""The type of playlist generator. + + - -1: A smart playlist generator + - 42: A optimized version generator + + """ + + updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None + + uri: Optional[str] = None + r"""The URI indicating the search for this generator""" + + +class GetPlaylistGeneratorsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + play_queue_generator: NotRequired[List[PlayQueueGeneratorTypedDict]] + + +class GetPlaylistGeneratorsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + play_queue_generator: Annotated[ + Optional[List[PlayQueueGenerator]], pydantic.Field(alias="PlayQueueGenerator") + ] = None + + +class GetPlaylistGeneratorsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetPlaylistGeneratorsMediaContainerTypedDict] + + +class GetPlaylistGeneratorsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetPlaylistGeneratorsMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetPlaylistGeneratorsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetPlaylistGeneratorsResponseBodyTypedDict] + r"""OK""" + + +class GetPlaylistGeneratorsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetPlaylistGeneratorsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getplaylistitems.py b/src/plex_api_client/models/operations/getplaylistitems.py new file mode 100644 index 0000000..337c8b4 --- /dev/null +++ b/src/plex_api_client/models/operations/getplaylistitems.py @@ -0,0 +1,273 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetPlaylistItemsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetPlaylistItemsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetPlaylistItemsRequestTypedDict(TypedDict): + playlist_id: int + r"""The ID of the playlist""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + type: NotRequired[List[int]] + r"""The metadata types of the item to return. Values past the first are only used in fetching items from the background processing playlist.""" + + +class GetPlaylistItemsRequest(BaseModel): + playlist_id: Annotated[ + int, + pydantic.Field(alias="playlistId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the playlist""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + type: Annotated[ + Optional[List[int]], + FieldMetadata(query=QueryParamMetadata(style="form", explode=False)), + ] = None + r"""The metadata types of the item to return. Values past the first are only used in fetching items from the background processing playlist.""" + + +class GetPlaylistItemsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class GetPlaylistItemsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getplaylists.py b/src/plex_api_client/models/operations/getplaylists.py deleted file mode 100644 index 51bff06..0000000 --- a/src/plex_api_client/models/operations/getplaylists.py +++ /dev/null @@ -1,156 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata, validate_open_enum -import pydantic -from pydantic.functional_validators import PlainValidator -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class PlaylistType(str, Enum, metaclass=utils.OpenEnumMeta): - r"""limit to a type of playlist.""" - - AUDIO = "audio" - VIDEO = "video" - PHOTO = "photo" - - -class QueryParamSmart(int, Enum, metaclass=utils.OpenEnumMeta): - r"""type of playlists to return (default is all).""" - - ZERO = 0 - ONE = 1 - - -class GetPlaylistsRequestTypedDict(TypedDict): - playlist_type: NotRequired[PlaylistType] - r"""limit to a type of playlist.""" - smart: NotRequired[QueryParamSmart] - r"""type of playlists to return (default is all).""" - - -class GetPlaylistsRequest(BaseModel): - playlist_type: Annotated[ - Annotated[Optional[PlaylistType], PlainValidator(validate_open_enum(False))], - pydantic.Field(alias="playlistType"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""limit to a type of playlist.""" - - smart: Annotated[ - Annotated[Optional[QueryParamSmart], PlainValidator(validate_open_enum(True))], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""type of playlists to return (default is all).""" - - -class GetPlaylistsMetadataTypedDict(TypedDict): - rating_key: NotRequired[str] - key: NotRequired[str] - guid: NotRequired[str] - type: NotRequired[str] - title: NotRequired[str] - summary: NotRequired[str] - smart: NotRequired[bool] - playlist_type: NotRequired[str] - composite: NotRequired[str] - icon: NotRequired[str] - view_count: NotRequired[int] - last_viewed_at: NotRequired[int] - duration: NotRequired[int] - leaf_count: NotRequired[int] - added_at: NotRequired[int] - updated_at: NotRequired[int] - - -class GetPlaylistsMetadata(BaseModel): - rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None - - key: Optional[str] = None - - guid: Optional[str] = None - - type: Optional[str] = None - - title: Optional[str] = None - - summary: Optional[str] = None - - smart: Optional[bool] = None - - playlist_type: Annotated[Optional[str], pydantic.Field(alias="playlistType")] = None - - composite: Optional[str] = None - - icon: Optional[str] = None - - view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None - - last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( - None - ) - - duration: Optional[int] = None - - leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None - - added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - - -class GetPlaylistsMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - metadata: NotRequired[List[GetPlaylistsMetadataTypedDict]] - - -class GetPlaylistsMediaContainer(BaseModel): - size: Optional[int] = None - - metadata: Annotated[ - Optional[List[GetPlaylistsMetadata]], pydantic.Field(alias="Metadata") - ] = None - - -class GetPlaylistsResponseBodyTypedDict(TypedDict): - r"""returns all playlists""" - - media_container: NotRequired[GetPlaylistsMediaContainerTypedDict] - - -class GetPlaylistsResponseBody(BaseModel): - r"""returns all playlists""" - - media_container: Annotated[ - Optional[GetPlaylistsMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetPlaylistsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetPlaylistsResponseBodyTypedDict] - r"""returns all playlists""" - - -class GetPlaylistsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetPlaylistsResponseBody] = None - r"""returns all playlists""" diff --git a/src/plex_api_client/models/operations/getplayqueue.py b/src/plex_api_client/models/operations/getplayqueue.py new file mode 100644 index 0000000..bcb67ed --- /dev/null +++ b/src/plex_api_client/models/operations/getplayqueue.py @@ -0,0 +1,305 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, + mediacontainerwithplaylistmetadata as components_mediacontainerwithplaylistmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetPlayQueueGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetPlayQueueGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetPlayQueueRequestTypedDict(TypedDict): + play_queue_id: int + r"""The ID of the play queue.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + own: NotRequired[components_boolint.BoolInt] + r"""If the server should transfer ownership to the requesting client (used in remote control scenarios).""" + center: NotRequired[str] + r"""The play queue item ID for the center of the window - this doesn't change the current selected item.""" + window: NotRequired[int] + r"""How many items on each side of the center of the window""" + include_before: NotRequired[components_boolint.BoolInt] + r"""Whether to include the items before the center (if 0, center is not included either), defaults to 1.""" + include_after: NotRequired[components_boolint.BoolInt] + r"""Whether to include the items after the center (if 0, center is not included either), defaults to 1.""" + + +class GetPlayQueueRequest(BaseModel): + play_queue_id: Annotated[ + int, + pydantic.Field(alias="playQueueId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the play queue.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + own: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""If the server should transfer ownership to the requesting client (used in remote control scenarios).""" + + center: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The play queue item ID for the center of the window - this doesn't change the current selected item.""" + + window: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""How many items on each side of the center of the window""" + + include_before: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="includeBefore"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether to include the items before the center (if 0, center is not included either), defaults to 1.""" + + include_after: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="includeAfter"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether to include the items after the center (if 0, center is not included either), defaults to 1.""" + + +class GetPlayQueueResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_playlist_metadata: NotRequired[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadataTypedDict + ] + r"""OK""" + + +class GetPlayQueueResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_playlist_metadata: Optional[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getpostplayhubs.py b/src/plex_api_client/models/operations/getpostplayhubs.py new file mode 100644 index 0000000..84f7842 --- /dev/null +++ b/src/plex_api_client/models/operations/getpostplayhubs.py @@ -0,0 +1,283 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, + mediacontainerwithhubs as components_mediacontainerwithhubs, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetPostplayHubsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetPostplayHubsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetPostplayHubsRequestTypedDict(TypedDict): + metadata_id: int + r"""The metadata ID for the hubs to fetch""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + count: NotRequired[int] + r"""Limit results to count items""" + only_transient: NotRequired[components_boolint.BoolInt] + r"""Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)""" + + +class GetPostplayHubsRequest(BaseModel): + metadata_id: Annotated[ + int, + pydantic.Field(alias="metadataId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The metadata ID for the hubs to fetch""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + count: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Limit results to count items""" + + only_transient: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="onlyTransient"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)""" + + +class GetPostplayHubsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_hubs: NotRequired[ + components_mediacontainerwithhubs.MediaContainerWithHubsTypedDict + ] + r"""OK""" + + +class GetPostplayHubsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_hubs: Optional[ + components_mediacontainerwithhubs.MediaContainerWithHubs + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getpreference.py b/src/plex_api_client/models/operations/getpreference.py new file mode 100644 index 0000000..fb7bfb6 --- /dev/null +++ b/src/plex_api_client/models/operations/getpreference.py @@ -0,0 +1,256 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithsettings as components_mediacontainerwithsettings, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetPreferenceGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetPreferenceGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetPreferenceRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + id: NotRequired[str] + r"""The preference to fetch""" + + +class GetPreferenceRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + id: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The preference to fetch""" + + +class GetPreferenceResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_settings: NotRequired[ + components_mediacontainerwithsettings.MediaContainerWithSettingsTypedDict + ] + r"""OK""" + + +class GetPreferenceResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_settings: Optional[ + components_mediacontainerwithsettings.MediaContainerWithSettings + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getpromotedhubs.py b/src/plex_api_client/models/operations/getpromotedhubs.py new file mode 100644 index 0000000..3f9f23b --- /dev/null +++ b/src/plex_api_client/models/operations/getpromotedhubs.py @@ -0,0 +1,315 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + hub as components_hub, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetPromotedHubsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetPromotedHubsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetPromotedHubsRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + count: NotRequired[int] + r"""Limit results to count items""" + + +class GetPromotedHubsRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + count: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Limit results to count items""" + + +class GetPromotedHubsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + hub: NotRequired[List[components_hub.HubTypedDict]] + + +class GetPromotedHubsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + hub: Annotated[Optional[List[components_hub.Hub]], pydantic.Field(alias="Hub")] = ( + None + ) + + +class GetPromotedHubsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetPromotedHubsMediaContainerTypedDict] + + +class GetPromotedHubsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetPromotedHubsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetPromotedHubsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[GetPromotedHubsResponseBodyTypedDict] + r"""OK""" + + +class GetPromotedHubsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[GetPromotedHubsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getrandomartwork.py b/src/plex_api_client/models/operations/getrandomartwork.py new file mode 100644 index 0000000..7a9da9b --- /dev/null +++ b/src/plex_api_client/models/operations/getrandomartwork.py @@ -0,0 +1,256 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithartwork as components_mediacontainerwithartwork, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetRandomArtworkGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetRandomArtworkGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetRandomArtworkRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + sections: NotRequired[List[int]] + r"""The sections for which to fetch artwork.""" + + +class GetRandomArtworkRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + sections: Annotated[ + Optional[List[int]], + FieldMetadata(query=QueryParamMetadata(style="form", explode=False)), + ] = None + r"""The sections for which to fetch artwork.""" + + +class GetRandomArtworkResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_artwork: NotRequired[ + components_mediacontainerwithartwork.MediaContainerWithArtworkTypedDict + ] + r"""OK""" + + +class GetRandomArtworkResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_artwork: Optional[ + components_mediacontainerwithartwork.MediaContainerWithArtwork + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getrelatedhubs.py b/src/plex_api_client/models/operations/getrelatedhubs.py new file mode 100644 index 0000000..9080b6b --- /dev/null +++ b/src/plex_api_client/models/operations/getrelatedhubs.py @@ -0,0 +1,283 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, + mediacontainerwithhubs as components_mediacontainerwithhubs, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetRelatedHubsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetRelatedHubsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetRelatedHubsRequestTypedDict(TypedDict): + metadata_id: int + r"""The metadata ID for the hubs to fetch""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + count: NotRequired[int] + r"""Limit results to count items""" + only_transient: NotRequired[components_boolint.BoolInt] + r"""Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)""" + + +class GetRelatedHubsRequest(BaseModel): + metadata_id: Annotated[ + int, + pydantic.Field(alias="metadataId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The metadata ID for the hubs to fetch""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + count: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Limit results to count items""" + + only_transient: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="onlyTransient"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)""" + + +class GetRelatedHubsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_hubs: NotRequired[ + components_mediacontainerwithhubs.MediaContainerWithHubsTypedDict + ] + r"""OK""" + + +class GetRelatedHubsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_hubs: Optional[ + components_mediacontainerwithhubs.MediaContainerWithHubs + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getrelateditems.py b/src/plex_api_client/models/operations/getrelateditems.py new file mode 100644 index 0000000..65ef7ae --- /dev/null +++ b/src/plex_api_client/models/operations/getrelateditems.py @@ -0,0 +1,309 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + hub as components_hub, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetRelatedItemsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetRelatedItemsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetRelatedItemsRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetRelatedItemsRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetRelatedItemsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + hub: NotRequired[List[components_hub.HubTypedDict]] + + +class GetRelatedItemsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + hub: Annotated[Optional[List[components_hub.Hub]], pydantic.Field(alias="Hub")] = ( + None + ) + + +class GetRelatedItemsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetRelatedItemsMediaContainerTypedDict] + + +class GetRelatedItemsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetRelatedItemsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetRelatedItemsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetRelatedItemsResponseBodyTypedDict] + r"""OK""" + + +class GetRelatedItemsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetRelatedItemsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getresizedphoto.py b/src/plex_api_client/models/operations/getresizedphoto.py deleted file mode 100644 index 6a1ef69..0000000 --- a/src/plex_api_client/models/operations/getresizedphoto.py +++ /dev/null @@ -1,99 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -import pydantic -from typing_extensions import Annotated, TypedDict - - -class MinSize(int, Enum): - r"""images are always scaled proportionally. A value of '1' in minSize will make the smaller native dimension the dimension resized against.""" - - ZERO = 0 - ONE = 1 - - -class Upscale(int, Enum): - r"""allow images to be resized beyond native dimensions.""" - - ZERO = 0 - ONE = 1 - - -class GetResizedPhotoRequestTypedDict(TypedDict): - width: float - r"""The width for the resized photo""" - height: float - r"""The height for the resized photo""" - blur: float - r"""The width for the resized photo""" - min_size: MinSize - r"""images are always scaled proportionally. A value of '1' in minSize will make the smaller native dimension the dimension resized against.""" - upscale: Upscale - r"""allow images to be resized beyond native dimensions.""" - url: str - r"""path to image within Plex""" - opacity: int - r"""The opacity for the resized photo""" - - -class GetResizedPhotoRequest(BaseModel): - width: Annotated[ - float, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The width for the resized photo""" - - height: Annotated[ - float, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The height for the resized photo""" - - blur: Annotated[ - float, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The width for the resized photo""" - - min_size: Annotated[ - MinSize, - pydantic.Field(alias="minSize"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""images are always scaled proportionally. A value of '1' in minSize will make the smaller native dimension the dimension resized against.""" - - upscale: Annotated[ - Upscale, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""allow images to be resized beyond native dimensions.""" - - url: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""path to image within Plex""" - - opacity: Annotated[ - int, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] = 100 - r"""The opacity for the resized photo""" - - -class GetResizedPhotoResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class GetResizedPhotoResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/getresourcesstatistics.py b/src/plex_api_client/models/operations/getresourcesstatistics.py deleted file mode 100644 index 6ca4378..0000000 --- a/src/plex_api_client/models/operations/getresourcesstatistics.py +++ /dev/null @@ -1,112 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetResourcesStatisticsRequestTypedDict(TypedDict): - timespan: NotRequired[int] - r"""The timespan to retrieve statistics for - the exact meaning of this parameter is not known - - """ - - -class GetResourcesStatisticsRequest(BaseModel): - timespan: Annotated[ - Optional[int], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The timespan to retrieve statistics for - the exact meaning of this parameter is not known - - """ - - -class StatisticsResourcesTypedDict(TypedDict): - timespan: NotRequired[int] - at: NotRequired[int] - host_cpu_utilization: NotRequired[float] - process_cpu_utilization: NotRequired[float] - host_memory_utilization: NotRequired[float] - process_memory_utilization: NotRequired[float] - - -class StatisticsResources(BaseModel): - timespan: Optional[int] = None - - at: Optional[int] = None - - host_cpu_utilization: Annotated[ - Optional[float], pydantic.Field(alias="hostCpuUtilization") - ] = None - - process_cpu_utilization: Annotated[ - Optional[float], pydantic.Field(alias="processCpuUtilization") - ] = None - - host_memory_utilization: Annotated[ - Optional[float], pydantic.Field(alias="hostMemoryUtilization") - ] = None - - process_memory_utilization: Annotated[ - Optional[float], pydantic.Field(alias="processMemoryUtilization") - ] = None - - -class GetResourcesStatisticsMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - statistics_resources: NotRequired[List[StatisticsResourcesTypedDict]] - - -class GetResourcesStatisticsMediaContainer(BaseModel): - size: Optional[int] = None - - statistics_resources: Annotated[ - Optional[List[StatisticsResources]], pydantic.Field(alias="StatisticsResources") - ] = None - - -class GetResourcesStatisticsResponseBodyTypedDict(TypedDict): - r"""Resource Statistics""" - - media_container: NotRequired[GetResourcesStatisticsMediaContainerTypedDict] - - -class GetResourcesStatisticsResponseBody(BaseModel): - r"""Resource Statistics""" - - media_container: Annotated[ - Optional[GetResourcesStatisticsMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class GetResourcesStatisticsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetResourcesStatisticsResponseBodyTypedDict] - r"""Resource Statistics""" - - -class GetResourcesStatisticsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetResourcesStatisticsResponseBody] = None - r"""Resource Statistics""" diff --git a/src/plex_api_client/models/operations/getscheduledrecordings.py b/src/plex_api_client/models/operations/getscheduledrecordings.py new file mode 100644 index 0000000..2f5b755 --- /dev/null +++ b/src/plex_api_client/models/operations/getscheduledrecordings.py @@ -0,0 +1,103 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + mediagraboperation as components_mediagraboperation, +) +from plex_api_client.types import BaseModel +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetScheduledRecordingsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + media_grab_operation: NotRequired[ + List[components_mediagraboperation.MediaGrabOperationTypedDict] + ] + + +class GetScheduledRecordingsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + media_grab_operation: Annotated[ + Optional[List[components_mediagraboperation.MediaGrabOperation]], + pydantic.Field(alias="MediaGrabOperation"), + ] = None + + +class GetScheduledRecordingsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetScheduledRecordingsMediaContainerTypedDict] + + +class GetScheduledRecordingsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetScheduledRecordingsMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetScheduledRecordingsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[GetScheduledRecordingsResponseBodyTypedDict] + r"""OK""" + + +class GetScheduledRecordingsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[GetScheduledRecordingsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getsearchresults.py b/src/plex_api_client/models/operations/getsearchresults.py deleted file mode 100644 index abc8dcc..0000000 --- a/src/plex_api_client/models/operations/getsearchresults.py +++ /dev/null @@ -1,370 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import datetime -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetSearchResultsRequestTypedDict(TypedDict): - query: str - r"""The search query string to use""" - - -class GetSearchResultsRequest(BaseModel): - query: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The search query string to use""" - - -class GetSearchResultsPartTypedDict(TypedDict): - id: NotRequired[float] - key: NotRequired[str] - duration: NotRequired[float] - file: NotRequired[str] - size: NotRequired[float] - audio_profile: NotRequired[str] - container: NotRequired[str] - video_profile: NotRequired[str] - - -class GetSearchResultsPart(BaseModel): - id: Optional[float] = None - - key: Optional[str] = None - - duration: Optional[float] = None - - file: Optional[str] = None - - size: Optional[float] = None - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - - container: Optional[str] = None - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - - -class GetSearchResultsMediaTypedDict(TypedDict): - id: NotRequired[float] - duration: NotRequired[float] - bitrate: NotRequired[float] - width: NotRequired[float] - height: NotRequired[float] - aspect_ratio: NotRequired[float] - audio_channels: NotRequired[float] - audio_codec: NotRequired[str] - video_codec: NotRequired[str] - video_resolution: NotRequired[float] - container: NotRequired[str] - video_frame_rate: NotRequired[str] - audio_profile: NotRequired[str] - video_profile: NotRequired[str] - part: NotRequired[List[GetSearchResultsPartTypedDict]] - - -class GetSearchResultsMedia(BaseModel): - id: Optional[float] = None - - duration: Optional[float] = None - - bitrate: Optional[float] = None - - width: Optional[float] = None - - height: Optional[float] = None - - aspect_ratio: Annotated[Optional[float], pydantic.Field(alias="aspectRatio")] = None - - audio_channels: Annotated[ - Optional[float], pydantic.Field(alias="audioChannels") - ] = None - - audio_codec: Annotated[Optional[str], pydantic.Field(alias="audioCodec")] = None - - video_codec: Annotated[Optional[str], pydantic.Field(alias="videoCodec")] = None - - video_resolution: Annotated[ - Optional[float], pydantic.Field(alias="videoResolution") - ] = None - - container: Optional[str] = None - - video_frame_rate: Annotated[ - Optional[str], pydantic.Field(alias="videoFrameRate") - ] = None - - audio_profile: Annotated[Optional[str], pydantic.Field(alias="audioProfile")] = None - - video_profile: Annotated[Optional[str], pydantic.Field(alias="videoProfile")] = None - - part: Annotated[ - Optional[List[GetSearchResultsPart]], pydantic.Field(alias="Part") - ] = None - - -class GetSearchResultsGenreTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetSearchResultsGenre(BaseModel): - tag: Optional[str] = None - - -class GetSearchResultsDirectorTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetSearchResultsDirector(BaseModel): - tag: Optional[str] = None - - -class GetSearchResultsWriterTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetSearchResultsWriter(BaseModel): - tag: Optional[str] = None - - -class GetSearchResultsCountryTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetSearchResultsCountry(BaseModel): - tag: Optional[str] = None - - -class GetSearchResultsRoleTypedDict(TypedDict): - tag: NotRequired[str] - - -class GetSearchResultsRole(BaseModel): - tag: Optional[str] = None - - -class GetSearchResultsMetadataTypedDict(TypedDict): - allow_sync: NotRequired[bool] - library_section_id: NotRequired[float] - library_section_title: NotRequired[str] - library_section_uuid: NotRequired[str] - personal: NotRequired[bool] - source_title: NotRequired[str] - rating_key: NotRequired[float] - key: NotRequired[str] - guid: NotRequired[str] - studio: NotRequired[str] - type: NotRequired[str] - title: NotRequired[str] - content_rating: NotRequired[str] - summary: NotRequired[str] - rating: NotRequired[float] - audience_rating: NotRequired[float] - year: NotRequired[float] - tagline: NotRequired[str] - thumb: NotRequired[str] - art: NotRequired[str] - duration: NotRequired[float] - originally_available_at: NotRequired[datetime] - added_at: NotRequired[float] - updated_at: NotRequired[float] - audience_rating_image: NotRequired[str] - chapter_source: NotRequired[str] - primary_extra_key: NotRequired[str] - rating_image: NotRequired[str] - media: NotRequired[List[GetSearchResultsMediaTypedDict]] - genre: NotRequired[List[GetSearchResultsGenreTypedDict]] - director: NotRequired[List[GetSearchResultsDirectorTypedDict]] - writer: NotRequired[List[GetSearchResultsWriterTypedDict]] - country: NotRequired[List[GetSearchResultsCountryTypedDict]] - role: NotRequired[List[GetSearchResultsRoleTypedDict]] - - -class GetSearchResultsMetadata(BaseModel): - allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None - - library_section_id: Annotated[ - Optional[float], pydantic.Field(alias="librarySectionID") - ] = None - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - - library_section_uuid: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionUUID") - ] = None - - personal: Optional[bool] = None - - source_title: Annotated[Optional[str], pydantic.Field(alias="sourceTitle")] = None - - rating_key: Annotated[Optional[float], pydantic.Field(alias="ratingKey")] = None - - key: Optional[str] = None - - guid: Optional[str] = None - - studio: Optional[str] = None - - type: Optional[str] = None - - title: Optional[str] = None - - content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( - None - ) - - summary: Optional[str] = None - - rating: Optional[float] = None - - audience_rating: Annotated[ - Optional[float], pydantic.Field(alias="audienceRating") - ] = None - - year: Optional[float] = None - - tagline: Optional[str] = None - - thumb: Optional[str] = None - - art: Optional[str] = None - - duration: Optional[float] = None - - originally_available_at: Annotated[ - Optional[datetime], pydantic.Field(alias="originallyAvailableAt") - ] = None - - added_at: Annotated[Optional[float], pydantic.Field(alias="addedAt")] = None - - updated_at: Annotated[Optional[float], pydantic.Field(alias="updatedAt")] = None - - audience_rating_image: Annotated[ - Optional[str], pydantic.Field(alias="audienceRatingImage") - ] = None - - chapter_source: Annotated[Optional[str], pydantic.Field(alias="chapterSource")] = ( - None - ) - - primary_extra_key: Annotated[ - Optional[str], pydantic.Field(alias="primaryExtraKey") - ] = None - - rating_image: Annotated[Optional[str], pydantic.Field(alias="ratingImage")] = None - - media: Annotated[ - Optional[List[GetSearchResultsMedia]], pydantic.Field(alias="Media") - ] = None - - genre: Annotated[ - Optional[List[GetSearchResultsGenre]], pydantic.Field(alias="Genre") - ] = None - - director: Annotated[ - Optional[List[GetSearchResultsDirector]], pydantic.Field(alias="Director") - ] = None - - writer: Annotated[ - Optional[List[GetSearchResultsWriter]], pydantic.Field(alias="Writer") - ] = None - - country: Annotated[ - Optional[List[GetSearchResultsCountry]], pydantic.Field(alias="Country") - ] = None - - role: Annotated[ - Optional[List[GetSearchResultsRole]], pydantic.Field(alias="Role") - ] = None - - -class ProviderTypedDict(TypedDict): - key: NotRequired[str] - title: NotRequired[str] - type: NotRequired[str] - - -class Provider(BaseModel): - key: Optional[str] = None - - title: Optional[str] = None - - type: Optional[str] = None - - -class GetSearchResultsMediaContainerTypedDict(TypedDict): - size: NotRequired[float] - identifier: NotRequired[str] - media_tag_prefix: NotRequired[str] - media_tag_version: NotRequired[float] - metadata: NotRequired[List[GetSearchResultsMetadataTypedDict]] - provider: NotRequired[List[ProviderTypedDict]] - - -class GetSearchResultsMediaContainer(BaseModel): - size: Optional[float] = None - - identifier: Optional[str] = None - - media_tag_prefix: Annotated[ - Optional[str], pydantic.Field(alias="mediaTagPrefix") - ] = None - - media_tag_version: Annotated[ - Optional[float], pydantic.Field(alias="mediaTagVersion") - ] = None - - metadata: Annotated[ - Optional[List[GetSearchResultsMetadata]], pydantic.Field(alias="Metadata") - ] = None - - provider: Annotated[Optional[List[Provider]], pydantic.Field(alias="Provider")] = ( - None - ) - - -class GetSearchResultsResponseBodyTypedDict(TypedDict): - r"""Search Results""" - - media_container: NotRequired[GetSearchResultsMediaContainerTypedDict] - - -class GetSearchResultsResponseBody(BaseModel): - r"""Search Results""" - - media_container: Annotated[ - Optional[GetSearchResultsMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetSearchResultsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetSearchResultsResponseBodyTypedDict] - r"""Search Results""" - - -class GetSearchResultsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetSearchResultsResponseBody] = None - r"""Search Results""" diff --git a/src/plex_api_client/models/operations/getsectionfilters.py b/src/plex_api_client/models/operations/getsectionfilters.py new file mode 100644 index 0000000..460ce4b --- /dev/null +++ b/src/plex_api_client/models/operations/getsectionfilters.py @@ -0,0 +1,315 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + directory as components_directory, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetSectionFiltersGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetSectionFiltersGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetSectionFiltersRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetSectionFiltersRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetSectionFiltersMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + directory: NotRequired[List[components_directory.DirectoryTypedDict]] + + +class GetSectionFiltersMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + directory: Annotated[ + Optional[List[components_directory.Directory]], + pydantic.Field(alias="Directory"), + ] = None + + +class GetSectionFiltersResponseBodyTypedDict(TypedDict): + r"""The filters on the section""" + + media_container: NotRequired[GetSectionFiltersMediaContainerTypedDict] + + +class GetSectionFiltersResponseBody(BaseModel): + r"""The filters on the section""" + + media_container: Annotated[ + Optional[GetSectionFiltersMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class GetSectionFiltersResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetSectionFiltersResponseBodyTypedDict] + r"""The filters on the section""" + + +class GetSectionFiltersResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetSectionFiltersResponseBody] = None + r"""The filters on the section""" diff --git a/src/plex_api_client/models/operations/getsectionhubs.py b/src/plex_api_client/models/operations/getsectionhubs.py new file mode 100644 index 0000000..012344f --- /dev/null +++ b/src/plex_api_client/models/operations/getsectionhubs.py @@ -0,0 +1,339 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, + hub as components_hub, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetSectionHubsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetSectionHubsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetSectionHubsRequestTypedDict(TypedDict): + section_id: int + r"""The section ID for the hubs to fetch""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + count: NotRequired[int] + r"""Limit results to count items""" + only_transient: NotRequired[components_boolint.BoolInt] + r"""Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)""" + + +class GetSectionHubsRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The section ID for the hubs to fetch""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + count: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Limit results to count items""" + + only_transient: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="onlyTransient"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Only return hubs which are \"transient\", meaning those which are prone to changing after media playback or addition (e.g. On Deck, or Recently Added)""" + + +class GetSectionHubsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + hub: NotRequired[List[components_hub.HubTypedDict]] + + +class GetSectionHubsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + hub: Annotated[Optional[List[components_hub.Hub]], pydantic.Field(alias="Hub")] = ( + None + ) + + +class GetSectionHubsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetSectionHubsMediaContainerTypedDict] + + +class GetSectionHubsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetSectionHubsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetSectionHubsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[GetSectionHubsResponseBodyTypedDict] + r"""OK""" + + +class GetSectionHubsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[GetSectionHubsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getsectionimage.py b/src/plex_api_client/models/operations/getsectionimage.py new file mode 100644 index 0000000..d1fc10c --- /dev/null +++ b/src/plex_api_client/models/operations/getsectionimage.py @@ -0,0 +1,278 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + composite as components_composite, + mediaquery as components_mediaquery, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetSectionImageGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetSectionImageGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetSectionImageRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + updated_at: int + r"""The update time of the image. Used for busting cache.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + media_query: NotRequired[components_mediaquery.MediaQueryTypedDict] + r"""This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries""" + composite: NotRequired[components_composite.CompositeTypedDict] + + +class GetSectionImageRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + updated_at: Annotated[ + int, + pydantic.Field(alias="updatedAt"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The update time of the image. Used for busting cache.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + media_query: Annotated[ + Optional[components_mediaquery.MediaQuery], + pydantic.Field(alias="mediaQuery"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries""" + + composite: Annotated[ + Optional[components_composite.Composite], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + +class GetSectionImageResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class GetSectionImageResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/getsectionpreferences.py b/src/plex_api_client/models/operations/getsectionpreferences.py new file mode 100644 index 0000000..6313c9c --- /dev/null +++ b/src/plex_api_client/models/operations/getsectionpreferences.py @@ -0,0 +1,268 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithsettings as components_mediacontainerwithsettings, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetSectionPreferencesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetSectionPreferencesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetSectionPreferencesRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + agent: NotRequired[str] + + +class GetSectionPreferencesRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + agent: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + +class GetSectionPreferencesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_settings: NotRequired[ + components_mediacontainerwithsettings.MediaContainerWithSettingsTypedDict + ] + r"""OK""" + + +class GetSectionPreferencesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_settings: Optional[ + components_mediacontainerwithsettings.MediaContainerWithSettings + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getsections.py b/src/plex_api_client/models/operations/getsections.py new file mode 100644 index 0000000..46baaab --- /dev/null +++ b/src/plex_api_client/models/operations/getsections.py @@ -0,0 +1,108 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + librarysection as components_librarysection, +) +from plex_api_client.types import BaseModel +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetSectionsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + allow_sync: NotRequired[bool] + directory: NotRequired[List[components_librarysection.LibrarySectionTypedDict]] + title1: NotRequired[str] + r"""Typically just \"Plex Library\" """ + + +class GetSectionsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None + + directory: Annotated[ + Optional[List[components_librarysection.LibrarySection]], + pydantic.Field(alias="Directory"), + ] = None + + title1: Optional[str] = None + r"""Typically just \"Plex Library\" """ + + +class GetSectionsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetSectionsMediaContainerTypedDict] + + +class GetSectionsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetSectionsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetSectionsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[GetSectionsResponseBodyTypedDict] + r"""OK""" + + +class GetSectionsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[GetSectionsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getsectionsprefs.py b/src/plex_api_client/models/operations/getsectionsprefs.py new file mode 100644 index 0000000..a121a9f --- /dev/null +++ b/src/plex_api_client/models/operations/getsectionsprefs.py @@ -0,0 +1,263 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + requesthandler_slash_get_responses_200 as components_requesthandler_slash_get_responses_200, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetSectionsPrefsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetSectionsPrefsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetSectionsPrefsRequestTypedDict(TypedDict): + type: int + r"""The metadata type""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + agent: NotRequired[str] + r"""The metadata agent in use""" + + +class GetSectionsPrefsRequest(BaseModel): + type: Annotated[ + int, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The metadata type""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + agent: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The metadata agent in use""" + + +class GetSectionsPrefsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + request_handler_slash_get_responses_200: NotRequired[ + components_requesthandler_slash_get_responses_200.RequestHandlerSlashGetResponses200TypedDict + ] + r"""OK""" + + +class GetSectionsPrefsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + request_handler_slash_get_responses_200: Optional[ + components_requesthandler_slash_get_responses_200.RequestHandlerSlashGetResponses200 + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getserveractivities.py b/src/plex_api_client/models/operations/getserveractivities.py deleted file mode 100644 index c063e57..0000000 --- a/src/plex_api_client/models/operations/getserveractivities.py +++ /dev/null @@ -1,100 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class ContextTypedDict(TypedDict): - library_section_id: NotRequired[str] - - -class Context(BaseModel): - library_section_id: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionID") - ] = None - - -class ActivityTypedDict(TypedDict): - uuid: NotRequired[str] - type: NotRequired[str] - cancellable: NotRequired[bool] - user_id: NotRequired[float] - title: NotRequired[str] - subtitle: NotRequired[str] - progress: NotRequired[float] - context: NotRequired[ContextTypedDict] - - -class Activity(BaseModel): - uuid: Optional[str] = None - - type: Optional[str] = None - - cancellable: Optional[bool] = None - - user_id: Annotated[Optional[float], pydantic.Field(alias="userID")] = None - - title: Optional[str] = None - - subtitle: Optional[str] = None - - progress: Optional[float] = None - - context: Annotated[Optional[Context], pydantic.Field(alias="Context")] = None - - -class GetServerActivitiesMediaContainerTypedDict(TypedDict): - size: NotRequired[float] - activity: NotRequired[List[ActivityTypedDict]] - - -class GetServerActivitiesMediaContainer(BaseModel): - size: Optional[float] = None - - activity: Annotated[Optional[List[Activity]], pydantic.Field(alias="Activity")] = ( - None - ) - - -class GetServerActivitiesResponseBodyTypedDict(TypedDict): - r"""The Server Activities""" - - media_container: NotRequired[GetServerActivitiesMediaContainerTypedDict] - - -class GetServerActivitiesResponseBody(BaseModel): - r"""The Server Activities""" - - media_container: Annotated[ - Optional[GetServerActivitiesMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class GetServerActivitiesResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetServerActivitiesResponseBodyTypedDict] - r"""The Server Activities""" - - -class GetServerActivitiesResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetServerActivitiesResponseBody] = None - r"""The Server Activities""" diff --git a/src/plex_api_client/models/operations/getservercapabilities.py b/src/plex_api_client/models/operations/getservercapabilities.py deleted file mode 100644 index 11d8b15..0000000 --- a/src/plex_api_client/models/operations/getservercapabilities.py +++ /dev/null @@ -1,283 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class DirectoryTypedDict(TypedDict): - count: NotRequired[float] - key: NotRequired[str] - title: NotRequired[str] - - -class Directory(BaseModel): - count: Optional[float] = None - - key: Optional[str] = None - - title: Optional[str] = None - - -class MediaContainerTypedDict(TypedDict): - size: NotRequired[float] - allow_camera_upload: NotRequired[bool] - allow_channel_access: NotRequired[bool] - allow_media_deletion: NotRequired[bool] - allow_sharing: NotRequired[bool] - allow_sync: NotRequired[bool] - allow_tuners: NotRequired[bool] - background_processing: NotRequired[bool] - certificate: NotRequired[bool] - companion_proxy: NotRequired[bool] - country_code: NotRequired[str] - diagnostics: NotRequired[str] - event_stream: NotRequired[bool] - friendly_name: NotRequired[str] - hub_search: NotRequired[bool] - item_clusters: NotRequired[bool] - livetv: NotRequired[float] - machine_identifier: NotRequired[str] - media_providers: NotRequired[bool] - multiuser: NotRequired[bool] - music_analysis: NotRequired[float] - my_plex: NotRequired[bool] - my_plex_mapping_state: NotRequired[str] - my_plex_signin_state: NotRequired[str] - my_plex_subscription: NotRequired[bool] - my_plex_username: NotRequired[str] - offline_transcode: NotRequired[float] - owner_features: NotRequired[str] - photo_auto_tag: NotRequired[bool] - platform: NotRequired[str] - platform_version: NotRequired[str] - plugin_host: NotRequired[bool] - push_notifications: NotRequired[bool] - read_only_libraries: NotRequired[bool] - streaming_brain_abr_version: NotRequired[float] - streaming_brain_version: NotRequired[float] - sync: NotRequired[bool] - transcoder_active_video_sessions: NotRequired[float] - transcoder_audio: NotRequired[bool] - transcoder_lyrics: NotRequired[bool] - transcoder_photo: NotRequired[bool] - transcoder_subtitles: NotRequired[bool] - transcoder_video: NotRequired[bool] - transcoder_video_bitrates: NotRequired[str] - transcoder_video_qualities: NotRequired[str] - transcoder_video_resolutions: NotRequired[str] - updated_at: NotRequired[float] - updater: NotRequired[bool] - version: NotRequired[str] - voice_search: NotRequired[bool] - directory: NotRequired[List[DirectoryTypedDict]] - - -class MediaContainer(BaseModel): - size: Optional[float] = None - - allow_camera_upload: Annotated[ - Optional[bool], pydantic.Field(alias="allowCameraUpload") - ] = None - - allow_channel_access: Annotated[ - Optional[bool], pydantic.Field(alias="allowChannelAccess") - ] = None - - allow_media_deletion: Annotated[ - Optional[bool], pydantic.Field(alias="allowMediaDeletion") - ] = None - - allow_sharing: Annotated[Optional[bool], pydantic.Field(alias="allowSharing")] = ( - None - ) - - allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None - - allow_tuners: Annotated[Optional[bool], pydantic.Field(alias="allowTuners")] = None - - background_processing: Annotated[ - Optional[bool], pydantic.Field(alias="backgroundProcessing") - ] = None - - certificate: Optional[bool] = None - - companion_proxy: Annotated[ - Optional[bool], pydantic.Field(alias="companionProxy") - ] = None - - country_code: Annotated[Optional[str], pydantic.Field(alias="countryCode")] = None - - diagnostics: Optional[str] = None - - event_stream: Annotated[Optional[bool], pydantic.Field(alias="eventStream")] = None - - friendly_name: Annotated[Optional[str], pydantic.Field(alias="friendlyName")] = None - - hub_search: Annotated[Optional[bool], pydantic.Field(alias="hubSearch")] = None - - item_clusters: Annotated[Optional[bool], pydantic.Field(alias="itemClusters")] = ( - None - ) - - livetv: Optional[float] = None - - machine_identifier: Annotated[ - Optional[str], pydantic.Field(alias="machineIdentifier") - ] = None - - media_providers: Annotated[ - Optional[bool], pydantic.Field(alias="mediaProviders") - ] = None - - multiuser: Optional[bool] = None - - music_analysis: Annotated[ - Optional[float], pydantic.Field(alias="musicAnalysis") - ] = None - - my_plex: Annotated[Optional[bool], pydantic.Field(alias="myPlex")] = None - - my_plex_mapping_state: Annotated[ - Optional[str], pydantic.Field(alias="myPlexMappingState") - ] = None - - my_plex_signin_state: Annotated[ - Optional[str], pydantic.Field(alias="myPlexSigninState") - ] = None - - my_plex_subscription: Annotated[ - Optional[bool], pydantic.Field(alias="myPlexSubscription") - ] = None - - my_plex_username: Annotated[ - Optional[str], pydantic.Field(alias="myPlexUsername") - ] = None - - offline_transcode: Annotated[ - Optional[float], pydantic.Field(alias="offlineTranscode") - ] = None - - owner_features: Annotated[Optional[str], pydantic.Field(alias="ownerFeatures")] = ( - None - ) - - photo_auto_tag: Annotated[Optional[bool], pydantic.Field(alias="photoAutoTag")] = ( - None - ) - - platform: Optional[str] = None - - platform_version: Annotated[ - Optional[str], pydantic.Field(alias="platformVersion") - ] = None - - plugin_host: Annotated[Optional[bool], pydantic.Field(alias="pluginHost")] = None - - push_notifications: Annotated[ - Optional[bool], pydantic.Field(alias="pushNotifications") - ] = None - - read_only_libraries: Annotated[ - Optional[bool], pydantic.Field(alias="readOnlyLibraries") - ] = None - - streaming_brain_abr_version: Annotated[ - Optional[float], pydantic.Field(alias="streamingBrainABRVersion") - ] = None - - streaming_brain_version: Annotated[ - Optional[float], pydantic.Field(alias="streamingBrainVersion") - ] = None - - sync: Optional[bool] = None - - transcoder_active_video_sessions: Annotated[ - Optional[float], pydantic.Field(alias="transcoderActiveVideoSessions") - ] = None - - transcoder_audio: Annotated[ - Optional[bool], pydantic.Field(alias="transcoderAudio") - ] = None - - transcoder_lyrics: Annotated[ - Optional[bool], pydantic.Field(alias="transcoderLyrics") - ] = None - - transcoder_photo: Annotated[ - Optional[bool], pydantic.Field(alias="transcoderPhoto") - ] = None - - transcoder_subtitles: Annotated[ - Optional[bool], pydantic.Field(alias="transcoderSubtitles") - ] = None - - transcoder_video: Annotated[ - Optional[bool], pydantic.Field(alias="transcoderVideo") - ] = None - - transcoder_video_bitrates: Annotated[ - Optional[str], pydantic.Field(alias="transcoderVideoBitrates") - ] = None - - transcoder_video_qualities: Annotated[ - Optional[str], pydantic.Field(alias="transcoderVideoQualities") - ] = None - - transcoder_video_resolutions: Annotated[ - Optional[str], pydantic.Field(alias="transcoderVideoResolutions") - ] = None - - updated_at: Annotated[Optional[float], pydantic.Field(alias="updatedAt")] = None - - updater: Optional[bool] = None - - version: Optional[str] = None - - voice_search: Annotated[Optional[bool], pydantic.Field(alias="voiceSearch")] = None - - directory: Annotated[ - Optional[List[Directory]], pydantic.Field(alias="Directory") - ] = None - - -class GetServerCapabilitiesResponseBodyTypedDict(TypedDict): - r"""The Server Capabilities""" - - media_container: NotRequired[MediaContainerTypedDict] - - -class GetServerCapabilitiesResponseBody(BaseModel): - r"""The Server Capabilities""" - - media_container: Annotated[ - Optional[MediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetServerCapabilitiesResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetServerCapabilitiesResponseBodyTypedDict] - r"""The Server Capabilities""" - - -class GetServerCapabilitiesResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetServerCapabilitiesResponseBody] = None - r"""The Server Capabilities""" diff --git a/src/plex_api_client/models/operations/getserverinfo.py b/src/plex_api_client/models/operations/getserverinfo.py new file mode 100644 index 0000000..4697c0f --- /dev/null +++ b/src/plex_api_client/models/operations/getserverinfo.py @@ -0,0 +1,248 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithdirectory as components_mediacontainerwithdirectory, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetServerInfoGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetServerInfoGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetServerInfoRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetServerInfoRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetServerInfoResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_directory: NotRequired[ + components_mediacontainerwithdirectory.MediaContainerWithDirectoryTypedDict + ] + r"""OK""" + + +class GetServerInfoResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_directory: Optional[ + components_mediacontainerwithdirectory.MediaContainerWithDirectory + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getserverlist.py b/src/plex_api_client/models/operations/getserverlist.py deleted file mode 100644 index 38542b6..0000000 --- a/src/plex_api_client/models/operations/getserverlist.py +++ /dev/null @@ -1,85 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetServerListServerTypedDict(TypedDict): - name: NotRequired[str] - host: NotRequired[str] - address: NotRequired[str] - port: NotRequired[float] - machine_identifier: NotRequired[str] - version: NotRequired[str] - - -class GetServerListServer(BaseModel): - name: Optional[str] = None - - host: Optional[str] = None - - address: Optional[str] = None - - port: Optional[float] = None - - machine_identifier: Annotated[ - Optional[str], pydantic.Field(alias="machineIdentifier") - ] = None - - version: Optional[str] = None - - -class GetServerListMediaContainerTypedDict(TypedDict): - size: NotRequired[float] - server: NotRequired[List[GetServerListServerTypedDict]] - - -class GetServerListMediaContainer(BaseModel): - size: Optional[float] = None - - server: Annotated[ - Optional[List[GetServerListServer]], pydantic.Field(alias="Server") - ] = None - - -class GetServerListResponseBodyTypedDict(TypedDict): - r"""List of Servers""" - - media_container: NotRequired[GetServerListMediaContainerTypedDict] - - -class GetServerListResponseBody(BaseModel): - r"""List of Servers""" - - media_container: Annotated[ - Optional[GetServerListMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetServerListResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetServerListResponseBodyTypedDict] - r"""List of Servers""" - - -class GetServerListResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetServerListResponseBody] = None - r"""List of Servers""" diff --git a/src/plex_api_client/models/operations/getserverpreferences.py b/src/plex_api_client/models/operations/getserverpreferences.py deleted file mode 100644 index 06d3c21..0000000 --- a/src/plex_api_client/models/operations/getserverpreferences.py +++ /dev/null @@ -1,94 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class SettingTypedDict(TypedDict): - id: NotRequired[str] - label: NotRequired[str] - summary: NotRequired[str] - type: NotRequired[str] - default: NotRequired[bool] - value: NotRequired[bool] - hidden: NotRequired[bool] - advanced: NotRequired[bool] - group: NotRequired[str] - enum_values: NotRequired[str] - - -class Setting(BaseModel): - id: Optional[str] = None - - label: Optional[str] = None - - summary: Optional[str] = None - - type: Optional[str] = None - - default: Optional[bool] = None - - value: Optional[bool] = None - - hidden: Optional[bool] = None - - advanced: Optional[bool] = None - - group: Optional[str] = None - - enum_values: Annotated[Optional[str], pydantic.Field(alias="enumValues")] = None - - -class GetServerPreferencesMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - setting: NotRequired[List[SettingTypedDict]] - - -class GetServerPreferencesMediaContainer(BaseModel): - size: Optional[int] = None - - setting: Annotated[Optional[List[Setting]], pydantic.Field(alias="Setting")] = None - - -class GetServerPreferencesResponseBodyTypedDict(TypedDict): - r"""Server Preferences""" - - media_container: NotRequired[GetServerPreferencesMediaContainerTypedDict] - - -class GetServerPreferencesResponseBody(BaseModel): - r"""Server Preferences""" - - media_container: Annotated[ - Optional[GetServerPreferencesMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class GetServerPreferencesResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetServerPreferencesResponseBodyTypedDict] - r"""Server Preferences""" - - -class GetServerPreferencesResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetServerPreferencesResponseBody] = None - r"""Server Preferences""" diff --git a/src/plex_api_client/models/operations/getsessionhistory.py b/src/plex_api_client/models/operations/getsessionhistory.py deleted file mode 100644 index 2a44423..0000000 --- a/src/plex_api_client/models/operations/getsessionhistory.py +++ /dev/null @@ -1,209 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import date -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class QueryParamFilterTypedDict(TypedDict): - r"""Filters content by field and direction/equality - (Unknown if viewedAt is the only supported column) - - """ - - -class QueryParamFilter(BaseModel): - r"""Filters content by field and direction/equality - (Unknown if viewedAt is the only supported column) - - """ - - -class GetSessionHistoryRequestTypedDict(TypedDict): - sort: NotRequired[str] - r"""Sorts the results by the specified field followed by the direction (asc, desc) - - """ - account_id: NotRequired[int] - r"""Filter results by those that are related to a specific users id - - """ - filter_: NotRequired[QueryParamFilterTypedDict] - r"""Filters content by field and direction/equality - (Unknown if viewedAt is the only supported column) - - """ - library_section_id: NotRequired[int] - r"""Filters the results based on the id of a valid library section - - """ - - -class GetSessionHistoryRequest(BaseModel): - sort: Annotated[ - Optional[str], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Sorts the results by the specified field followed by the direction (asc, desc) - - """ - - account_id: Annotated[ - Optional[int], - pydantic.Field(alias="accountId"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Filter results by those that are related to a specific users id - - """ - - filter_: Annotated[ - Optional[QueryParamFilter], - pydantic.Field(alias="filter"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Filters content by field and direction/equality - (Unknown if viewedAt is the only supported column) - - """ - - library_section_id: Annotated[ - Optional[int], - pydantic.Field(alias="librarySectionID"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Filters the results based on the id of a valid library section - - """ - - -class GetSessionHistoryMetadataTypedDict(TypedDict): - history_key: NotRequired[str] - key: NotRequired[str] - rating_key: NotRequired[str] - library_section_id: NotRequired[str] - parent_key: NotRequired[str] - grandparent_key: NotRequired[str] - title: NotRequired[str] - grandparent_title: NotRequired[str] - type: NotRequired[str] - thumb: NotRequired[str] - parent_thumb: NotRequired[str] - grandparent_thumb: NotRequired[str] - grandparent_art: NotRequired[str] - index: NotRequired[int] - parent_index: NotRequired[int] - originally_available_at: NotRequired[date] - viewed_at: NotRequired[int] - account_id: NotRequired[int] - device_id: NotRequired[int] - - -class GetSessionHistoryMetadata(BaseModel): - history_key: Annotated[Optional[str], pydantic.Field(alias="historyKey")] = None - - key: Optional[str] = None - - rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None - - library_section_id: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionID") - ] = None - - parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None - - grandparent_key: Annotated[ - Optional[str], pydantic.Field(alias="grandparentKey") - ] = None - - title: Optional[str] = None - - grandparent_title: Annotated[ - Optional[str], pydantic.Field(alias="grandparentTitle") - ] = None - - type: Optional[str] = None - - thumb: Optional[str] = None - - parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None - - grandparent_thumb: Annotated[ - Optional[str], pydantic.Field(alias="grandparentThumb") - ] = None - - grandparent_art: Annotated[ - Optional[str], pydantic.Field(alias="grandparentArt") - ] = None - - index: Optional[int] = None - - parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None - - originally_available_at: Annotated[ - Optional[date], pydantic.Field(alias="originallyAvailableAt") - ] = None - - viewed_at: Annotated[Optional[int], pydantic.Field(alias="viewedAt")] = None - - account_id: Annotated[Optional[int], pydantic.Field(alias="accountID")] = None - - device_id: Annotated[Optional[int], pydantic.Field(alias="deviceID")] = None - - -class GetSessionHistoryMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - metadata: NotRequired[List[GetSessionHistoryMetadataTypedDict]] - - -class GetSessionHistoryMediaContainer(BaseModel): - size: Optional[int] = None - - metadata: Annotated[ - Optional[List[GetSessionHistoryMetadata]], pydantic.Field(alias="Metadata") - ] = None - - -class GetSessionHistoryResponseBodyTypedDict(TypedDict): - r"""List of Plex Sessions""" - - media_container: NotRequired[GetSessionHistoryMediaContainerTypedDict] - - -class GetSessionHistoryResponseBody(BaseModel): - r"""List of Plex Sessions""" - - media_container: Annotated[ - Optional[GetSessionHistoryMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class GetSessionHistoryResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetSessionHistoryResponseBodyTypedDict] - r"""List of Plex Sessions""" - - -class GetSessionHistoryResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetSessionHistoryResponseBody] = None - r"""List of Plex Sessions""" diff --git a/src/plex_api_client/models/operations/getsessionplaylistindex.py b/src/plex_api_client/models/operations/getsessionplaylistindex.py new file mode 100644 index 0000000..bdaafc4 --- /dev/null +++ b/src/plex_api_client/models/operations/getsessionplaylistindex.py @@ -0,0 +1,254 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetSessionPlaylistIndexGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetSessionPlaylistIndexGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetSessionPlaylistIndexRequestTypedDict(TypedDict): + session_id: str + r"""The session id""" + consumer_id: str + r"""The consumer id""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetSessionPlaylistIndexRequest(BaseModel): + session_id: Annotated[ + str, + pydantic.Field(alias="sessionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The session id""" + + consumer_id: Annotated[ + str, + pydantic.Field(alias="consumerId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The consumer id""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetSessionPlaylistIndexResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class GetSessionPlaylistIndexResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/getsessions.py b/src/plex_api_client/models/operations/getsessions.py index a3636e8..686b548 100644 --- a/src/plex_api_client/models/operations/getsessions.py +++ b/src/plex_api_client/models/operations/getsessions.py @@ -2,407 +2,12 @@ from __future__ import annotations import httpx +from plex_api_client.models.components import ( + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetSessionsStreamTypedDict(TypedDict): - album_gain: NotRequired[str] - album_peak: NotRequired[str] - album_range: NotRequired[str] - audio_channel_layout: NotRequired[str] - bit_depth: NotRequired[int] - bitrate: NotRequired[int] - channels: NotRequired[int] - codec: NotRequired[str] - display_title: NotRequired[str] - extended_display_title: NotRequired[str] - gain: NotRequired[str] - id: NotRequired[str] - index: NotRequired[int] - loudness: NotRequired[str] - lra: NotRequired[str] - peak: NotRequired[str] - sampling_rate: NotRequired[int] - selected: NotRequired[bool] - stream_type: NotRequired[int] - location: NotRequired[str] - - -class GetSessionsStream(BaseModel): - album_gain: Annotated[Optional[str], pydantic.Field(alias="albumGain")] = None - - album_peak: Annotated[Optional[str], pydantic.Field(alias="albumPeak")] = None - - album_range: Annotated[Optional[str], pydantic.Field(alias="albumRange")] = None - - audio_channel_layout: Annotated[ - Optional[str], pydantic.Field(alias="audioChannelLayout") - ] = None - - bit_depth: Annotated[Optional[int], pydantic.Field(alias="bitDepth")] = None - - bitrate: Optional[int] = None - - channels: Optional[int] = None - - codec: Optional[str] = None - - display_title: Annotated[Optional[str], pydantic.Field(alias="displayTitle")] = None - - extended_display_title: Annotated[ - Optional[str], pydantic.Field(alias="extendedDisplayTitle") - ] = None - - gain: Optional[str] = None - - id: Optional[str] = None - - index: Optional[int] = None - - loudness: Optional[str] = None - - lra: Optional[str] = None - - peak: Optional[str] = None - - sampling_rate: Annotated[Optional[int], pydantic.Field(alias="samplingRate")] = None - - selected: Optional[bool] = None - - stream_type: Annotated[Optional[int], pydantic.Field(alias="streamType")] = None - - location: Optional[str] = None - - -class GetSessionsPartTypedDict(TypedDict): - container: NotRequired[str] - duration: NotRequired[int] - file: NotRequired[str] - has_thumbnail: NotRequired[str] - id: NotRequired[str] - key: NotRequired[str] - size: NotRequired[int] - decision: NotRequired[str] - selected: NotRequired[bool] - stream: NotRequired[List[GetSessionsStreamTypedDict]] - - -class GetSessionsPart(BaseModel): - container: Optional[str] = None - - duration: Optional[int] = None - - file: Optional[str] = None - - has_thumbnail: Annotated[Optional[str], pydantic.Field(alias="hasThumbnail")] = None - - id: Optional[str] = None - - key: Optional[str] = None - - size: Optional[int] = None - - decision: Optional[str] = None - - selected: Optional[bool] = None - - stream: Annotated[ - Optional[List[GetSessionsStream]], pydantic.Field(alias="Stream") - ] = None - - -class GetSessionsMediaTypedDict(TypedDict): - audio_channels: NotRequired[int] - audio_codec: NotRequired[str] - bitrate: NotRequired[int] - container: NotRequired[str] - duration: NotRequired[int] - id: NotRequired[str] - selected: NotRequired[bool] - part: NotRequired[List[GetSessionsPartTypedDict]] - - -class GetSessionsMedia(BaseModel): - audio_channels: Annotated[Optional[int], pydantic.Field(alias="audioChannels")] = ( - None - ) - - audio_codec: Annotated[Optional[str], pydantic.Field(alias="audioCodec")] = None - - bitrate: Optional[int] = None - - container: Optional[str] = None - - duration: Optional[int] = None - - id: Optional[str] = None - - selected: Optional[bool] = None - - part: Annotated[Optional[List[GetSessionsPart]], pydantic.Field(alias="Part")] = ( - None - ) - - -class GetSessionsUserTypedDict(TypedDict): - id: NotRequired[str] - thumb: NotRequired[str] - title: NotRequired[str] - - -class GetSessionsUser(BaseModel): - id: Optional[str] = None - - thumb: Optional[str] = None - - title: Optional[str] = None - - -class PlayerTypedDict(TypedDict): - address: NotRequired[str] - machine_identifier: NotRequired[str] - model: NotRequired[str] - platform: NotRequired[str] - platform_version: NotRequired[str] - product: NotRequired[str] - profile: NotRequired[str] - remote_public_address: NotRequired[str] - state: NotRequired[str] - title: NotRequired[str] - version: NotRequired[str] - local: NotRequired[bool] - relayed: NotRequired[bool] - secure: NotRequired[bool] - user_id: NotRequired[int] - - -class Player(BaseModel): - address: Optional[str] = None - - machine_identifier: Annotated[ - Optional[str], pydantic.Field(alias="machineIdentifier") - ] = None - - model: Optional[str] = None - - platform: Optional[str] = None - - platform_version: Annotated[ - Optional[str], pydantic.Field(alias="platformVersion") - ] = None - - product: Optional[str] = None - - profile: Optional[str] = None - - remote_public_address: Annotated[ - Optional[str], pydantic.Field(alias="remotePublicAddress") - ] = None - - state: Optional[str] = None - - title: Optional[str] = None - - version: Optional[str] = None - - local: Optional[bool] = None - - relayed: Optional[bool] = None - - secure: Optional[bool] = None - - user_id: Annotated[Optional[int], pydantic.Field(alias="userID")] = None - - -class SessionTypedDict(TypedDict): - id: NotRequired[str] - bandwidth: NotRequired[int] - location: NotRequired[str] - - -class Session(BaseModel): - id: Optional[str] = None - - bandwidth: Optional[int] = None - - location: Optional[str] = None - - -class GetSessionsMetadataTypedDict(TypedDict): - added_at: NotRequired[int] - art: NotRequired[str] - duration: NotRequired[int] - grandparent_art: NotRequired[str] - grandparent_guid: NotRequired[str] - grandparent_key: NotRequired[str] - grandparent_rating_key: NotRequired[str] - grandparent_thumb: NotRequired[str] - grandparent_title: NotRequired[str] - guid: NotRequired[str] - index: NotRequired[int] - key: NotRequired[str] - library_section_id: NotRequired[str] - library_section_key: NotRequired[str] - library_section_title: NotRequired[str] - music_analysis_version: NotRequired[str] - original_title: NotRequired[str] - r"""The original untranslated name of the media item when non-english, or the track artist if an audio Item has an album artist""" - parent_guid: NotRequired[str] - parent_index: NotRequired[int] - parent_key: NotRequired[str] - parent_rating_key: NotRequired[str] - parent_studio: NotRequired[str] - parent_thumb: NotRequired[str] - parent_title: NotRequired[str] - parent_year: NotRequired[int] - rating_count: NotRequired[int] - rating_key: NotRequired[str] - session_key: NotRequired[str] - thumb: NotRequired[str] - title: NotRequired[str] - title_sort: NotRequired[str] - type: NotRequired[str] - updated_at: NotRequired[int] - view_offset: NotRequired[int] - media: NotRequired[List[GetSessionsMediaTypedDict]] - user: NotRequired[GetSessionsUserTypedDict] - player: NotRequired[PlayerTypedDict] - session: NotRequired[SessionTypedDict] - - -class GetSessionsMetadata(BaseModel): - added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None - - art: Optional[str] = None - - duration: Optional[int] = None - - grandparent_art: Annotated[ - Optional[str], pydantic.Field(alias="grandparentArt") - ] = None - - grandparent_guid: Annotated[ - Optional[str], pydantic.Field(alias="grandparentGuid") - ] = None - - grandparent_key: Annotated[ - Optional[str], pydantic.Field(alias="grandparentKey") - ] = None - - grandparent_rating_key: Annotated[ - Optional[str], pydantic.Field(alias="grandparentRatingKey") - ] = None - - grandparent_thumb: Annotated[ - Optional[str], pydantic.Field(alias="grandparentThumb") - ] = None - - grandparent_title: Annotated[ - Optional[str], pydantic.Field(alias="grandparentTitle") - ] = None - - guid: Optional[str] = None - - index: Optional[int] = None - - key: Optional[str] = None - - library_section_id: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionID") - ] = None - - library_section_key: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionKey") - ] = None - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - - music_analysis_version: Annotated[ - Optional[str], pydantic.Field(alias="musicAnalysisVersion") - ] = None - - original_title: Annotated[Optional[str], pydantic.Field(alias="originalTitle")] = ( - None - ) - r"""The original untranslated name of the media item when non-english, or the track artist if an audio Item has an album artist""" - - parent_guid: Annotated[Optional[str], pydantic.Field(alias="parentGuid")] = None - - parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None - - parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None - - parent_rating_key: Annotated[ - Optional[str], pydantic.Field(alias="parentRatingKey") - ] = None - - parent_studio: Annotated[Optional[str], pydantic.Field(alias="parentStudio")] = None - - parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None - - parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None - - parent_year: Annotated[Optional[int], pydantic.Field(alias="parentYear")] = None - - rating_count: Annotated[Optional[int], pydantic.Field(alias="ratingCount")] = None - - rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None - - session_key: Annotated[Optional[str], pydantic.Field(alias="sessionKey")] = None - - thumb: Optional[str] = None - - title: Optional[str] = None - - title_sort: Annotated[Optional[str], pydantic.Field(alias="titleSort")] = None - - type: Optional[str] = None - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - - view_offset: Annotated[Optional[int], pydantic.Field(alias="viewOffset")] = None - - media: Annotated[ - Optional[List[GetSessionsMedia]], pydantic.Field(alias="Media") - ] = None - - user: Annotated[Optional[GetSessionsUser], pydantic.Field(alias="User")] = None - - player: Annotated[Optional[Player], pydantic.Field(alias="Player")] = None - - session: Annotated[Optional[Session], pydantic.Field(alias="Session")] = None - - -class GetSessionsMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - metadata: NotRequired[List[GetSessionsMetadataTypedDict]] - - -class GetSessionsMediaContainer(BaseModel): - size: Optional[int] = None - - metadata: Annotated[ - Optional[List[GetSessionsMetadata]], pydantic.Field(alias="Metadata") - ] = None - - -class GetSessionsResponseBodyTypedDict(TypedDict): - r"""List of Active Plex Sessions""" - - media_container: NotRequired[GetSessionsMediaContainerTypedDict] - - -class GetSessionsResponseBody(BaseModel): - r"""List of Active Plex Sessions""" - - media_container: Annotated[ - Optional[GetSessionsMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None +from typing import Dict, List, Optional +from typing_extensions import NotRequired, TypedDict class GetSessionsResponseTypedDict(TypedDict): @@ -412,8 +17,11 @@ class GetSessionsResponseTypedDict(TypedDict): r"""HTTP response status code for this operation""" raw_response: httpx.Response r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetSessionsResponseBodyTypedDict] - r"""List of Active Plex Sessions""" + headers: Dict[str, List[str]] + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" class GetSessionsResponse(BaseModel): @@ -426,5 +34,9 @@ class GetSessionsResponse(BaseModel): raw_response: httpx.Response r"""Raw HTTP response; suitable for custom response parsing""" - object: Optional[GetSessionsResponseBody] = None - r"""List of Active Plex Sessions""" + headers: Dict[str, List[str]] + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getsessionsegment.py b/src/plex_api_client/models/operations/getsessionsegment.py new file mode 100644 index 0000000..aeadcb7 --- /dev/null +++ b/src/plex_api_client/models/operations/getsessionsegment.py @@ -0,0 +1,263 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetSessionSegmentGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetSessionSegmentGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetSessionSegmentRequestTypedDict(TypedDict): + session_id: str + r"""The session id""" + consumer_id: str + r"""The consumer id""" + segment_id: str + r"""The segment id""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetSessionSegmentRequest(BaseModel): + session_id: Annotated[ + str, + pydantic.Field(alias="sessionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The session id""" + + consumer_id: Annotated[ + str, + pydantic.Field(alias="consumerId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The consumer id""" + + segment_id: Annotated[ + str, + pydantic.Field(alias="segmentId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The segment id""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetSessionSegmentResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class GetSessionSegmentResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/getsonicallysimilar.py b/src/plex_api_client/models/operations/getsonicallysimilar.py new file mode 100644 index 0000000..08738fd --- /dev/null +++ b/src/plex_api_client/models/operations/getsonicallysimilar.py @@ -0,0 +1,294 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetSonicallySimilarGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetSonicallySimilarGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetSonicallySimilarRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + values: List[int] + r"""The music analysis to center the search. Typically obtained from the `musicAnalysis` of a track""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + type: NotRequired[int] + r"""The metadata type to fetch (should be 10 for audio track)""" + limit: NotRequired[int] + r"""The limit of the number of items to fetch; defaults to 50""" + max_distance: NotRequired[float] + r"""The maximum distance to search, defaults to 0.25""" + + +class GetSonicallySimilarRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + values: Annotated[ + List[int], FieldMetadata(query=QueryParamMetadata(style="form", explode=False)) + ] + r"""The music analysis to center the search. Typically obtained from the `musicAnalysis` of a track""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + type: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The metadata type to fetch (should be 10 for audio track)""" + + limit: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The limit of the number of items to fetch; defaults to 50""" + + max_distance: Annotated[ + Optional[float], + pydantic.Field(alias="maxDistance"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The maximum distance to search, defaults to 0.25""" + + +class GetSonicallySimilarResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class GetSonicallySimilarResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getsonicpath.py b/src/plex_api_client/models/operations/getsonicpath.py new file mode 100644 index 0000000..c92c7d0 --- /dev/null +++ b/src/plex_api_client/models/operations/getsonicpath.py @@ -0,0 +1,297 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetSonicPathGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetSonicPathGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetSonicPathRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + start_id: int + r"""The starting metadata item id""" + end_id: int + r"""The ending metadata item id""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + count: NotRequired[int] + r"""Limit results to count items""" + max_distance: NotRequired[float] + r"""The maximum distance allowed along the path; defaults to 0.25""" + + +class GetSonicPathRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + start_id: Annotated[ + int, + pydantic.Field(alias="startID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] + r"""The starting metadata item id""" + + end_id: Annotated[ + int, + pydantic.Field(alias="endID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] + r"""The ending metadata item id""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + count: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Limit results to count items""" + + max_distance: Annotated[ + Optional[float], + pydantic.Field(alias="maxDistance"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The maximum distance allowed along the path; defaults to 0.25""" + + +class GetSonicPathResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class GetSonicPathResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getsourceconnectioninformation.py b/src/plex_api_client/models/operations/getsourceconnectioninformation.py index f15f7ff..fa0fd3e 100644 --- a/src/plex_api_client/models/operations/getsourceconnectioninformation.py +++ b/src/plex_api_client/models/operations/getsourceconnectioninformation.py @@ -2,14 +2,147 @@ from __future__ import annotations import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -from typing_extensions import Annotated, TypedDict +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetSourceConnectionInformationGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetSourceConnectionInformationGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" class GetSourceConnectionInformationRequestTypedDict(TypedDict): source: str r"""The source identifier with an included prefix.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + refresh: NotRequired[components_boolint.BoolInt] + r"""Force refresh""" class GetSourceConnectionInformationRequest(BaseModel): @@ -18,6 +151,195 @@ class GetSourceConnectionInformationRequest(BaseModel): ] r"""The source identifier with an included prefix.""" + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + refresh: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Force refresh""" + + +class ConnectionTypedDict(TypedDict): + address: NotRequired[str] + local: NotRequired[bool] + r"""Indicates if the connection is the server's LAN address""" + port: NotRequired[int] + protocol: NotRequired[str] + relay: NotRequired[bool] + r"""Indicates the connection is over a relayed connection""" + uri: NotRequired[str] + + +class Connection(BaseModel): + address: Optional[str] = None + + local: Optional[bool] = None + r"""Indicates if the connection is the server's LAN address""" + + port: Optional[int] = None + + protocol: Optional[str] = None + + relay: Optional[bool] = None + r"""Indicates the connection is over a relayed connection""" + + uri: Optional[str] = None + + +class DeviceTypedDict(TypedDict): + access_token: NotRequired[str] + client_identifier: NotRequired[str] + connection: NotRequired[List[ConnectionTypedDict]] + name: NotRequired[str] + + +class Device(BaseModel): + access_token: Annotated[Optional[str], pydantic.Field(alias="accessToken")] = None + + client_identifier: Annotated[ + Optional[str], pydantic.Field(alias="clientIdentifier") + ] = None + + connection: Annotated[ + Optional[List[Connection]], pydantic.Field(alias="Connection") + ] = None + + name: Optional[str] = None + + +class GetSourceConnectionInformationMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + device: NotRequired[DeviceTypedDict] + + +class GetSourceConnectionInformationMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + device: Annotated[Optional[Device], pydantic.Field(alias="Device")] = None + + +class GetSourceConnectionInformationResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetSourceConnectionInformationMediaContainerTypedDict] + + +class GetSourceConnectionInformationResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetSourceConnectionInformationMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + class GetSourceConnectionInformationResponseTypedDict(TypedDict): content_type: str @@ -26,6 +348,8 @@ class GetSourceConnectionInformationResponseTypedDict(TypedDict): r"""HTTP response status code for this operation""" raw_response: httpx.Response r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetSourceConnectionInformationResponseBodyTypedDict] + r"""OK""" class GetSourceConnectionInformationResponse(BaseModel): @@ -37,3 +361,6 @@ class GetSourceConnectionInformationResponse(BaseModel): raw_response: httpx.Response r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetSourceConnectionInformationResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getstatistics.py b/src/plex_api_client/models/operations/getstatistics.py deleted file mode 100644 index 826b8c8..0000000 --- a/src/plex_api_client/models/operations/getstatistics.py +++ /dev/null @@ -1,171 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetStatisticsRequestTypedDict(TypedDict): - timespan: NotRequired[int] - r"""The timespan to retrieve statistics for - the exact meaning of this parameter is not known - - """ - - -class GetStatisticsRequest(BaseModel): - timespan: Annotated[ - Optional[int], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The timespan to retrieve statistics for - the exact meaning of this parameter is not known - - """ - - -class GetStatisticsDeviceTypedDict(TypedDict): - id: NotRequired[int] - name: NotRequired[str] - platform: NotRequired[str] - client_identifier: NotRequired[str] - created_at: NotRequired[int] - - -class GetStatisticsDevice(BaseModel): - id: Optional[int] = None - - name: Optional[str] = None - - platform: Optional[str] = None - - client_identifier: Annotated[ - Optional[str], pydantic.Field(alias="clientIdentifier") - ] = None - - created_at: Annotated[Optional[int], pydantic.Field(alias="createdAt")] = None - - -class AccountTypedDict(TypedDict): - id: NotRequired[int] - key: NotRequired[str] - name: NotRequired[str] - default_audio_language: NotRequired[str] - auto_select_audio: NotRequired[bool] - default_subtitle_language: NotRequired[str] - subtitle_mode: NotRequired[int] - thumb: NotRequired[str] - - -class Account(BaseModel): - id: Optional[int] = None - - key: Optional[str] = None - - name: Optional[str] = None - - default_audio_language: Annotated[ - Optional[str], pydantic.Field(alias="defaultAudioLanguage") - ] = None - - auto_select_audio: Annotated[ - Optional[bool], pydantic.Field(alias="autoSelectAudio") - ] = None - - default_subtitle_language: Annotated[ - Optional[str], pydantic.Field(alias="defaultSubtitleLanguage") - ] = None - - subtitle_mode: Annotated[Optional[int], pydantic.Field(alias="subtitleMode")] = None - - thumb: Optional[str] = None - - -class StatisticsMediaTypedDict(TypedDict): - account_id: NotRequired[int] - device_id: NotRequired[int] - timespan: NotRequired[int] - at: NotRequired[int] - metadata_type: NotRequired[int] - count: NotRequired[int] - duration: NotRequired[int] - - -class StatisticsMedia(BaseModel): - account_id: Annotated[Optional[int], pydantic.Field(alias="accountID")] = None - - device_id: Annotated[Optional[int], pydantic.Field(alias="deviceID")] = None - - timespan: Optional[int] = None - - at: Optional[int] = None - - metadata_type: Annotated[Optional[int], pydantic.Field(alias="metadataType")] = None - - count: Optional[int] = None - - duration: Optional[int] = None - - -class GetStatisticsMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - device: NotRequired[List[GetStatisticsDeviceTypedDict]] - account: NotRequired[List[AccountTypedDict]] - statistics_media: NotRequired[List[StatisticsMediaTypedDict]] - - -class GetStatisticsMediaContainer(BaseModel): - size: Optional[int] = None - - device: Annotated[ - Optional[List[GetStatisticsDevice]], pydantic.Field(alias="Device") - ] = None - - account: Annotated[Optional[List[Account]], pydantic.Field(alias="Account")] = None - - statistics_media: Annotated[ - Optional[List[StatisticsMedia]], pydantic.Field(alias="StatisticsMedia") - ] = None - - -class GetStatisticsResponseBodyTypedDict(TypedDict): - r"""Media Statistics""" - - media_container: NotRequired[GetStatisticsMediaContainerTypedDict] - - -class GetStatisticsResponseBody(BaseModel): - r"""Media Statistics""" - - media_container: Annotated[ - Optional[GetStatisticsMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetStatisticsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetStatisticsResponseBodyTypedDict] - r"""Media Statistics""" - - -class GetStatisticsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetStatisticsResponseBody] = None - r"""Media Statistics""" diff --git a/src/plex_api_client/models/operations/getstream.py b/src/plex_api_client/models/operations/getstream.py new file mode 100644 index 0000000..6b98c8a --- /dev/null +++ b/src/plex_api_client/models/operations/getstream.py @@ -0,0 +1,286 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetStreamGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetStreamGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetStreamRequestTypedDict(TypedDict): + stream_id: int + r"""The id of the stream""" + ext: str + r"""The extension of the stream. Required to fetch the `sub` portion of `idx`/`sub` subtitles""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + encoding: NotRequired[str] + r"""The requested encoding for the subtitle (only used for text subtitles)""" + format_: NotRequired[str] + r"""The requested format for the subtitle to convert the subtitles to (only used for text subtitles)""" + auto_adjust_subtitle: NotRequired[components_boolint.BoolInt] + r"""Whether the server should attempt to automatically adjust the subtitle timestamps to match the media""" + + +class GetStreamRequest(BaseModel): + stream_id: Annotated[ + int, + pydantic.Field(alias="streamId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The id of the stream""" + + ext: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The extension of the stream. Required to fetch the `sub` portion of `idx`/`sub` subtitles""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + encoding: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The requested encoding for the subtitle (only used for text subtitles)""" + + format_: Annotated[ + Optional[str], + pydantic.Field(alias="format"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The requested format for the subtitle to convert the subtitles to (only used for text subtitles)""" + + auto_adjust_subtitle: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="autoAdjustSubtitle"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether the server should attempt to automatically adjust the subtitle timestamps to match the media""" + + +class GetStreamResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class GetStreamResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/getstreamlevels.py b/src/plex_api_client/models/operations/getstreamlevels.py new file mode 100644 index 0000000..18242af --- /dev/null +++ b/src/plex_api_client/models/operations/getstreamlevels.py @@ -0,0 +1,338 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetStreamLevelsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetStreamLevelsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetStreamLevelsRequestTypedDict(TypedDict): + stream_id: int + r"""The id of the stream""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + subsample: NotRequired[int] + r"""Subsample result down to return only the provided number of samples""" + + +class GetStreamLevelsRequest(BaseModel): + stream_id: Annotated[ + int, + pydantic.Field(alias="streamId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The id of the stream""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + subsample: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Subsample result down to return only the provided number of samples""" + + +class GetStreamLevelsLevelTypedDict(TypedDict): + v: NotRequired[float] + r"""The level in db.""" + + +class GetStreamLevelsLevel(BaseModel): + v: Optional[float] = None + r"""The level in db.""" + + +class GetStreamLevelsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + level: NotRequired[List[GetStreamLevelsLevelTypedDict]] + total_samples: NotRequired[str] + r"""The total number of samples (as a string)""" + + +class GetStreamLevelsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + level: Annotated[ + Optional[List[GetStreamLevelsLevel]], pydantic.Field(alias="Level") + ] = None + + total_samples: Annotated[Optional[str], pydantic.Field(alias="totalSamples")] = None + r"""The total number of samples (as a string)""" + + +class GetStreamLevelsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetStreamLevelsMediaContainerTypedDict] + + +class GetStreamLevelsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetStreamLevelsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetStreamLevelsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetStreamLevelsResponseBodyTypedDict] + r"""OK""" + + +class GetStreamLevelsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetStreamLevelsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getstreamloudness.py b/src/plex_api_client/models/operations/getstreamloudness.py new file mode 100644 index 0000000..2d2faf1 --- /dev/null +++ b/src/plex_api_client/models/operations/getstreamloudness.py @@ -0,0 +1,263 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetStreamLoudnessGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetStreamLoudnessGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetStreamLoudnessRequestTypedDict(TypedDict): + stream_id: int + r"""The id of the stream""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + subsample: NotRequired[int] + r"""Subsample result down to return only the provided number of samples""" + + +class GetStreamLoudnessRequest(BaseModel): + stream_id: Annotated[ + int, + pydantic.Field(alias="streamId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The id of the stream""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + subsample: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Subsample result down to return only the provided number of samples""" + + +class GetStreamLoudnessResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + res: NotRequired[str] + r"""OK""" + + +class GetStreamLoudnessResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + res: Optional[str] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getsubscription.py b/src/plex_api_client/models/operations/getsubscription.py new file mode 100644 index 0000000..8a9c9cc --- /dev/null +++ b/src/plex_api_client/models/operations/getsubscription.py @@ -0,0 +1,279 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, + mediacontainerwithsubscription as components_mediacontainerwithsubscription, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetSubscriptionGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetSubscriptionGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetSubscriptionRequestTypedDict(TypedDict): + subscription_id: int + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + include_grabs: NotRequired[components_boolint.BoolInt] + r"""Indicates whether the active grabs should be included as well""" + include_storage: NotRequired[components_boolint.BoolInt] + r"""Compute the storage of recorded items desired by this subscription""" + + +class GetSubscriptionRequest(BaseModel): + subscription_id: Annotated[ + int, + pydantic.Field(alias="subscriptionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + include_grabs: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="includeGrabs"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates whether the active grabs should be included as well""" + + include_storage: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="includeStorage"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Compute the storage of recorded items desired by this subscription""" + + +class GetSubscriptionResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_subscription: NotRequired[ + components_mediacontainerwithsubscription.MediaContainerWithSubscriptionTypedDict + ] + r"""OK""" + + +class GetSubscriptionResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_subscription: Optional[ + components_mediacontainerwithsubscription.MediaContainerWithSubscription + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/gettags.py b/src/plex_api_client/models/operations/gettags.py new file mode 100644 index 0000000..b3985aa --- /dev/null +++ b/src/plex_api_client/models/operations/gettags.py @@ -0,0 +1,342 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetTagsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetTagsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetTagsRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + type: NotRequired[int] + r"""The metadata type to filter by""" + + +class GetTagsRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + type: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The metadata type to filter by""" + + +class DirectoryTypedDict(TypedDict): + filter_: NotRequired[str] + r"""The filter string to view metadata wit this tag""" + id: NotRequired[int] + tag: NotRequired[str] + r"""The name of the tag""" + tag_key: NotRequired[str] + r"""The key of this tag. This is a universal key across all PMS instances and plex.tv services""" + tag_type: NotRequired[int] + r"""The type of the tag""" + thumb: NotRequired[str] + r"""The URL to a thumbnail for this tag""" + + +class Directory(BaseModel): + filter_: Annotated[Optional[str], pydantic.Field(alias="filter")] = None + r"""The filter string to view metadata wit this tag""" + + id: Optional[int] = None + + tag: Optional[str] = None + r"""The name of the tag""" + + tag_key: Annotated[Optional[str], pydantic.Field(alias="tagKey")] = None + r"""The key of this tag. This is a universal key across all PMS instances and plex.tv services""" + + tag_type: Annotated[Optional[int], pydantic.Field(alias="tagType")] = None + r"""The type of the tag""" + + thumb: Optional[str] = None + r"""The URL to a thumbnail for this tag""" + + +class GetTagsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + directory: NotRequired[List[DirectoryTypedDict]] + + +class GetTagsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + directory: Annotated[ + Optional[List[Directory]], pydantic.Field(alias="Directory") + ] = None + + +class GetTagsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetTagsMediaContainerTypedDict] + + +class GetTagsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetTagsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetTagsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetTagsResponseBodyTypedDict] + r"""OK""" + + +class GetTagsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetTagsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/gettasks.py b/src/plex_api_client/models/operations/gettasks.py new file mode 100644 index 0000000..b339ef9 --- /dev/null +++ b/src/plex_api_client/models/operations/gettasks.py @@ -0,0 +1,94 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.types import BaseModel +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ButlerTaskTypedDict(TypedDict): + description: NotRequired[str] + r"""A user-friendly description of the task""" + enabled: NotRequired[bool] + r"""Whether this task is enabled or not""" + interval: NotRequired[int] + r"""The interval (in days) of when this task is run. A value of 1 is run every day, 7 is every week, etc.""" + name: NotRequired[str] + r"""The name of the task""" + schedule_randomized: NotRequired[bool] + r"""Indicates whether the timing of the task is randomized within the butler interval""" + title: NotRequired[str] + r"""A user-friendly title of the task""" + + +class ButlerTask(BaseModel): + description: Optional[str] = None + r"""A user-friendly description of the task""" + + enabled: Optional[bool] = None + r"""Whether this task is enabled or not""" + + interval: Optional[int] = None + r"""The interval (in days) of when this task is run. A value of 1 is run every day, 7 is every week, etc.""" + + name: Optional[str] = None + r"""The name of the task""" + + schedule_randomized: Annotated[ + Optional[bool], pydantic.Field(alias="scheduleRandomized") + ] = None + r"""Indicates whether the timing of the task is randomized within the butler interval""" + + title: Optional[str] = None + r"""A user-friendly title of the task""" + + +class ButlerTasksTypedDict(TypedDict): + butler_task: NotRequired[List[ButlerTaskTypedDict]] + + +class ButlerTasks(BaseModel): + butler_task: Annotated[ + Optional[List[ButlerTask]], pydantic.Field(alias="ButlerTask") + ] = None + + +class GetTasksResponseBodyTypedDict(TypedDict): + r"""Butler tasks""" + + butler_tasks: NotRequired[ButlerTasksTypedDict] + + +class GetTasksResponseBody(BaseModel): + r"""Butler tasks""" + + butler_tasks: Annotated[ + Optional[ButlerTasks], pydantic.Field(alias="ButlerTasks") + ] = None + + +class GetTasksResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetTasksResponseBodyTypedDict] + r"""Butler tasks""" + + +class GetTasksResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetTasksResponseBody] = None + r"""Butler tasks""" diff --git a/src/plex_api_client/models/operations/gettemplate.py b/src/plex_api_client/models/operations/gettemplate.py new file mode 100644 index 0000000..31e6c69 --- /dev/null +++ b/src/plex_api_client/models/operations/gettemplate.py @@ -0,0 +1,429 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediagraboperation as components_mediagraboperation, + setting as components_setting, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetTemplateGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetTemplateGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetTemplateRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + guid: NotRequired[str] + r"""The guid of the item for which to get the template""" + + +class GetTemplateRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + guid: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The guid of the item for which to get the template""" + + +class MediaSubscriptionTypedDict(TypedDict): + r"""A media subscription contains a representation of metadata desired to be recorded""" + + title: NotRequired[str] + r"""The title of this subscription type""" + type: NotRequired[int] + r"""Metadata type number""" + airings_type: NotRequired[str] + created_at: NotRequired[int] + directory: NotRequired[Dict[str, Any]] + r"""Media Matching Hints""" + duration_total: NotRequired[int] + r"""Only included if `includeStorage` is specified""" + key: NotRequired[str] + library_section_title: NotRequired[str] + location_path: NotRequired[str] + media_grab_operation: NotRequired[ + List[components_mediagraboperation.MediaGrabOperationTypedDict] + ] + playlist: NotRequired[Dict[str, Any]] + r"""Media Matching Hints""" + setting: NotRequired[List[components_setting.SettingTypedDict]] + storage_total: NotRequired[int] + r"""Only included if `includeStorage` is specified""" + target_library_section_id: NotRequired[int] + r"""Where this subscription will record to""" + target_section_location_id: NotRequired[int] + r"""The library section location id for where the item is to be recorded""" + video: NotRequired[Dict[str, Any]] + r"""Media Matching Hints""" + parameters: NotRequired[str] + r"""Parameter string for creating this subscription""" + selected: NotRequired[bool] + + +class MediaSubscription(BaseModel): + r"""A media subscription contains a representation of metadata desired to be recorded""" + + title: Optional[str] = None + r"""The title of this subscription type""" + + type: Optional[int] = None + r"""Metadata type number""" + + airings_type: Annotated[Optional[str], pydantic.Field(alias="airingsType")] = None + + created_at: Annotated[Optional[int], pydantic.Field(alias="createdAt")] = None + + directory: Annotated[ + Optional[Dict[str, Any]], pydantic.Field(alias="Directory") + ] = None + r"""Media Matching Hints""" + + duration_total: Annotated[Optional[int], pydantic.Field(alias="durationTotal")] = ( + None + ) + r"""Only included if `includeStorage` is specified""" + + key: Optional[str] = None + + library_section_title: Annotated[ + Optional[str], pydantic.Field(alias="librarySectionTitle") + ] = None + + location_path: Annotated[Optional[str], pydantic.Field(alias="locationPath")] = None + + media_grab_operation: Annotated[ + Optional[List[components_mediagraboperation.MediaGrabOperation]], + pydantic.Field(alias="MediaGrabOperation"), + ] = None + + playlist: Annotated[Optional[Dict[str, Any]], pydantic.Field(alias="Playlist")] = ( + None + ) + r"""Media Matching Hints""" + + setting: Annotated[ + Optional[List[components_setting.Setting]], pydantic.Field(alias="Setting") + ] = None + + storage_total: Annotated[Optional[int], pydantic.Field(alias="storageTotal")] = None + r"""Only included if `includeStorage` is specified""" + + target_library_section_id: Annotated[ + Optional[int], pydantic.Field(alias="targetLibrarySectionID") + ] = None + r"""Where this subscription will record to""" + + target_section_location_id: Annotated[ + Optional[int], pydantic.Field(alias="targetSectionLocationID") + ] = None + r"""The library section location id for where the item is to be recorded""" + + video: Annotated[Optional[Dict[str, Any]], pydantic.Field(alias="Video")] = None + r"""Media Matching Hints""" + + parameters: Optional[str] = None + r"""Parameter string for creating this subscription""" + + selected: Optional[bool] = None + + +class SubscriptionTemplateTypedDict(TypedDict): + media_subscription: NotRequired[List[MediaSubscriptionTypedDict]] + + +class SubscriptionTemplate(BaseModel): + media_subscription: Annotated[ + Optional[List[MediaSubscription]], pydantic.Field(alias="MediaSubscription") + ] = None + + +class GetTemplateMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + subscription_template: NotRequired[List[SubscriptionTemplateTypedDict]] + + +class GetTemplateMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + subscription_template: Annotated[ + Optional[List[SubscriptionTemplate]], + pydantic.Field(alias="SubscriptionTemplate"), + ] = None + + +class GetTemplateResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetTemplateMediaContainerTypedDict] + + +class GetTemplateResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetTemplateMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetTemplateResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[GetTemplateResponseBodyTypedDict] + r"""OK""" + + +class GetTemplateResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[GetTemplateResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getthumb.py b/src/plex_api_client/models/operations/getthumb.py new file mode 100644 index 0000000..3d23600 --- /dev/null +++ b/src/plex_api_client/models/operations/getthumb.py @@ -0,0 +1,254 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetThumbGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetThumbGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetThumbRequestTypedDict(TypedDict): + device_id: int + r"""The ID of the device.""" + version_path_parameter: int + r"""A version number of the thumb used for busting cache""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetThumbRequest(BaseModel): + device_id: Annotated[ + int, + pydantic.Field(alias="deviceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the device.""" + + version_path_parameter: Annotated[ + int, + pydantic.Field(alias="version"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""A version number of the thumb used for busting cache""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetThumbResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class GetThumbResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/gettimeline.py b/src/plex_api_client/models/operations/gettimeline.py deleted file mode 100644 index 1b084c4..0000000 --- a/src/plex_api_client/models/operations/gettimeline.py +++ /dev/null @@ -1,123 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata, validate_open_enum -import pydantic -from pydantic.functional_validators import PlainValidator -from typing_extensions import Annotated, TypedDict - - -class State(str, Enum, metaclass=utils.OpenEnumMeta): - r"""The state of the media item""" - - PLAYING = "playing" - PAUSED = "paused" - STOPPED = "stopped" - - -class GetTimelineRequestTypedDict(TypedDict): - rating_key: float - r"""The rating key of the media item""" - key: str - r"""The key of the media item to get the timeline for""" - state: State - r"""The state of the media item""" - has_mde: float - r"""Whether the media item has MDE""" - time: float - r"""The time of the media item""" - duration: float - r"""The duration of the media item""" - context: str - r"""The context of the media item""" - play_queue_item_id: float - r"""The play queue item ID of the media item""" - play_back_time: float - r"""The playback time of the media item""" - row: float - r"""The row of the media item""" - - -class GetTimelineRequest(BaseModel): - rating_key: Annotated[ - float, - pydantic.Field(alias="ratingKey"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The rating key of the media item""" - - key: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The key of the media item to get the timeline for""" - - state: Annotated[ - Annotated[State, PlainValidator(validate_open_enum(False))], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The state of the media item""" - - has_mde: Annotated[ - float, - pydantic.Field(alias="hasMDE"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""Whether the media item has MDE""" - - time: Annotated[ - float, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The time of the media item""" - - duration: Annotated[ - float, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The duration of the media item""" - - context: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The context of the media item""" - - play_queue_item_id: Annotated[ - float, - pydantic.Field(alias="playQueueItemID"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The play queue item ID of the media item""" - - play_back_time: Annotated[ - float, - pydantic.Field(alias="playBackTime"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The playback time of the media item""" - - row: Annotated[ - float, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The row of the media item""" - - -class GetTimelineResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class GetTimelineResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/gettokenbypinid.py b/src/plex_api_client/models/operations/gettokenbypinid.py deleted file mode 100644 index 31ca5a2..0000000 --- a/src/plex_api_client/models/operations/gettokenbypinid.py +++ /dev/null @@ -1,255 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import datetime -import httpx -from plex_api_client.types import ( - BaseModel, - Nullable, - OptionalNullable, - UNSET, - UNSET_SENTINEL, -) -from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata -import pydantic -from pydantic import model_serializer -from typing import Any, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -GET_TOKEN_BY_PIN_ID_SERVERS = [ - "https://plex.tv/api/v2", -] - - -class GetTokenByPinIDRequestTypedDict(TypedDict): - pin_id: int - r"""The PinID to retrieve an access token for""" - client_id: str - r"""An opaque identifier unique to the client (UUID, serial number, or other unique device ID)""" - client_name: NotRequired[str] - r"""The name of the client application. (Plex Web, Plex Media Server, etc.)""" - device_nickname: NotRequired[str] - r"""A relatively friendly name for the client device""" - client_version: NotRequired[str] - r"""The version of the client application.""" - platform: NotRequired[str] - r"""The platform of the client application.""" - - -class GetTokenByPinIDRequest(BaseModel): - pin_id: Annotated[ - int, - pydantic.Field(alias="pinID"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""The PinID to retrieve an access token for""" - - client_id: Annotated[ - str, - pydantic.Field(alias="X-Plex-Client-Identifier"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] - r"""An opaque identifier unique to the client (UUID, serial number, or other unique device ID)""" - - client_name: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Product"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The name of the client application. (Plex Web, Plex Media Server, etc.)""" - - device_nickname: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Device"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""A relatively friendly name for the client device""" - - client_version: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Version"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The version of the client application.""" - - platform: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Platform"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The platform of the client application.""" - - -class GetTokenByPinIDGeoDataTypedDict(TypedDict): - r"""Geo location data""" - - code: str - r"""The ISO 3166-1 alpha-2 code of the country.""" - continent_code: str - r"""The continent code where the country is located.""" - country: str - r"""The official name of the country.""" - city: str - r"""The name of the city.""" - time_zone: str - r"""The time zone of the country.""" - postal_code: str - r"""The postal code of the location.""" - subdivisions: str - r"""The name of the primary administrative subdivision.""" - coordinates: str - r"""The geographical coordinates (latitude, longitude) of the location.""" - european_union_member: NotRequired[bool] - r"""Indicates if the country is a member of the European Union.""" - in_privacy_restricted_country: NotRequired[bool] - r"""Indicates if the country has privacy restrictions.""" - in_privacy_restricted_region: NotRequired[bool] - r"""Indicates if the region has privacy restrictions.""" - - -class GetTokenByPinIDGeoData(BaseModel): - r"""Geo location data""" - - code: str - r"""The ISO 3166-1 alpha-2 code of the country.""" - - continent_code: str - r"""The continent code where the country is located.""" - - country: str - r"""The official name of the country.""" - - city: str - r"""The name of the city.""" - - time_zone: str - r"""The time zone of the country.""" - - postal_code: str - r"""The postal code of the location.""" - - subdivisions: str - r"""The name of the primary administrative subdivision.""" - - coordinates: str - r"""The geographical coordinates (latitude, longitude) of the location.""" - - european_union_member: Optional[bool] = False - r"""Indicates if the country is a member of the European Union.""" - - in_privacy_restricted_country: Optional[bool] = False - r"""Indicates if the country has privacy restrictions.""" - - in_privacy_restricted_region: Optional[bool] = False - r"""Indicates if the region has privacy restrictions.""" - - -class GetTokenByPinIDAuthPinContainerTypedDict(TypedDict): - r"""The Pin with a non-null authToken when it has been verified by the user""" - - id: int - code: str - product: str - qr: str - client_identifier: str - r"""The X-Client-Identifier used in the request""" - location: GetTokenByPinIDGeoDataTypedDict - r"""Geo location data""" - created_at: datetime - expires_at: datetime - trusted: NotRequired[bool] - expires_in: NotRequired[int] - r"""The number of seconds this pin expires, by default 900 seconds""" - auth_token: NotRequired[Nullable[str]] - new_registration: NotRequired[Nullable[Any]] - - -class GetTokenByPinIDAuthPinContainer(BaseModel): - r"""The Pin with a non-null authToken when it has been verified by the user""" - - id: int - - code: str - - product: str - - qr: str - - client_identifier: Annotated[str, pydantic.Field(alias="clientIdentifier")] - r"""The X-Client-Identifier used in the request""" - - location: GetTokenByPinIDGeoData - r"""Geo location data""" - - created_at: Annotated[datetime, pydantic.Field(alias="createdAt")] - - expires_at: Annotated[datetime, pydantic.Field(alias="expiresAt")] - - trusted: Optional[bool] = False - - expires_in: Annotated[Optional[int], pydantic.Field(alias="expiresIn")] = 900 - r"""The number of seconds this pin expires, by default 900 seconds""" - - auth_token: Annotated[OptionalNullable[str], pydantic.Field(alias="authToken")] = ( - UNSET - ) - - new_registration: Annotated[ - OptionalNullable[Any], pydantic.Field(alias="newRegistration") - ] = UNSET - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = ["trusted", "expiresIn", "authToken", "newRegistration"] - nullable_fields = ["authToken", "newRegistration"] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class GetTokenByPinIDResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - auth_pin_container: NotRequired[GetTokenByPinIDAuthPinContainerTypedDict] - r"""The Pin with a non-null authToken when it has been verified by the user""" - - -class GetTokenByPinIDResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - auth_pin_container: Optional[GetTokenByPinIDAuthPinContainer] = None - r"""The Pin with a non-null authToken when it has been verified by the user""" diff --git a/src/plex_api_client/models/operations/gettokendetails.py b/src/plex_api_client/models/operations/gettokendetails.py deleted file mode 100644 index d10d4a0..0000000 --- a/src/plex_api_client/models/operations/gettokendetails.py +++ /dev/null @@ -1,696 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import ( - BaseModel, - Nullable, - OptionalNullable, - UNSET, - UNSET_SENTINEL, -) -from plex_api_client.utils import validate_open_enum -import pydantic -from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -GET_TOKEN_DETAILS_SERVERS = [ - "https://plex.tv/api/v2", -] - - -class MailingListStatus(str, Enum, metaclass=utils.OpenEnumMeta): - r"""Your current mailing list status (active or unsubscribed)""" - - ACTIVE = "active" - UNSUBSCRIBED = "unsubscribed" - - -class AutoSelectSubtitle(int, Enum): - r"""The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled)""" - - DISABLE = 0 - ENABLE = 1 - - -class DefaultSubtitleAccessibility(int, Enum): - r"""The subtitles for the deaf or hard-of-hearing (SDH) searches mode (0 = Prefer non-SDH subtitles, 1 = Prefer SDH subtitles, 2 = Only show SDH subtitles, 3 = Only show non-SDH subtitles)""" - - DISABLE = 0 - ENABLE = 1 - - -class DefaultSubtitleForced(int, Enum): - r"""The forced subtitles searches mode (0 = Prefer non-forced subtitles, 1 = Prefer forced subtitles, 2 = Only show forced subtitles, 3 = Only show non-forced subtitles)""" - - DISABLE = 0 - ENABLE = 1 - - -class WatchedIndicator(int, Enum): - r"""Whether or not media watched indicators are enabled (little orange dot on media)""" - - DISABLE = 0 - ENABLE = 1 - - -class MediaReviewsVisibility(int, Enum): - r"""Whether or not the account has media reviews visibility enabled""" - - DISABLE = 0 - ENABLE = 1 - - -class UserProfileTypedDict(TypedDict): - default_audio_language: Nullable[str] - r"""The preferred audio language for the account""" - default_subtitle_language: Nullable[str] - r"""The preferred subtitle language for the account""" - auto_select_audio: NotRequired[bool] - r"""If the account has automatically select audio and subtitle tracks enabled""" - auto_select_subtitle: NotRequired[AutoSelectSubtitle] - default_subtitle_accessibility: NotRequired[DefaultSubtitleAccessibility] - default_subtitle_forced: NotRequired[DefaultSubtitleForced] - watched_indicator: NotRequired[WatchedIndicator] - media_reviews_visibility: NotRequired[MediaReviewsVisibility] - - -class UserProfile(BaseModel): - default_audio_language: Annotated[ - Nullable[str], pydantic.Field(alias="defaultAudioLanguage") - ] - r"""The preferred audio language for the account""" - - default_subtitle_language: Annotated[ - Nullable[str], pydantic.Field(alias="defaultSubtitleLanguage") - ] - r"""The preferred subtitle language for the account""" - - auto_select_audio: Annotated[ - Optional[bool], pydantic.Field(alias="autoSelectAudio") - ] = True - r"""If the account has automatically select audio and subtitle tracks enabled""" - - auto_select_subtitle: Annotated[ - Optional[AutoSelectSubtitle], pydantic.Field(alias="autoSelectSubtitle") - ] = AutoSelectSubtitle.DISABLE - - default_subtitle_accessibility: Annotated[ - Optional[DefaultSubtitleAccessibility], - pydantic.Field(alias="defaultSubtitleAccessibility"), - ] = DefaultSubtitleAccessibility.DISABLE - - default_subtitle_forced: Annotated[ - Optional[DefaultSubtitleForced], pydantic.Field(alias="defaultSubtitleForced") - ] = DefaultSubtitleForced.DISABLE - - watched_indicator: Annotated[ - Optional[WatchedIndicator], pydantic.Field(alias="watchedIndicator") - ] = WatchedIndicator.DISABLE - - media_reviews_visibility: Annotated[ - Optional[MediaReviewsVisibility], pydantic.Field(alias="mediaReviewsVisibility") - ] = MediaReviewsVisibility.DISABLE - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = [ - "autoSelectAudio", - "autoSelectSubtitle", - "defaultSubtitleAccessibility", - "defaultSubtitleForced", - "watchedIndicator", - "mediaReviewsVisibility", - ] - nullable_fields = ["defaultAudioLanguage", "defaultSubtitleLanguage"] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class GetTokenDetailsStatus(str, Enum, metaclass=utils.OpenEnumMeta): - ONLINE = "online" - OFFLINE = "offline" - - -class ServicesTypedDict(TypedDict): - identifier: str - endpoint: str - token: Nullable[str] - secret: Nullable[str] - status: GetTokenDetailsStatus - - -class Services(BaseModel): - identifier: str - - endpoint: str - - token: Nullable[str] - - secret: Nullable[str] - - status: Annotated[GetTokenDetailsStatus, PlainValidator(validate_open_enum(False))] - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["token", "secret"] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class GetTokenDetailsAuthenticationStatus(str, Enum, metaclass=utils.OpenEnumMeta): - r"""String representation of subscriptionActive""" - - INACTIVE = "Inactive" - ACTIVE = "Active" - - -class SubscriptionTypedDict(TypedDict): - r"""If the account’s Plex Pass subscription is active""" - - features: NotRequired[List[str]] - r"""List of features allowed on your Plex Pass subscription""" - active: NotRequired[bool] - r"""If the account's Plex Pass subscription is active""" - subscribed_at: NotRequired[Nullable[str]] - r"""Date the account subscribed to Plex Pass""" - status: NotRequired[GetTokenDetailsAuthenticationStatus] - r"""String representation of subscriptionActive""" - payment_service: NotRequired[Nullable[str]] - r"""Payment service used for your Plex Pass subscription""" - plan: NotRequired[Nullable[str]] - r"""Name of Plex Pass subscription plan""" - - -class Subscription(BaseModel): - r"""If the account’s Plex Pass subscription is active""" - - features: Optional[List[str]] = None - r"""List of features allowed on your Plex Pass subscription""" - - active: Optional[bool] = None - r"""If the account's Plex Pass subscription is active""" - - subscribed_at: Annotated[ - OptionalNullable[str], pydantic.Field(alias="subscribedAt") - ] = UNSET - r"""Date the account subscribed to Plex Pass""" - - status: Annotated[ - Optional[GetTokenDetailsAuthenticationStatus], - PlainValidator(validate_open_enum(False)), - ] = None - r"""String representation of subscriptionActive""" - - payment_service: Annotated[ - OptionalNullable[str], pydantic.Field(alias="paymentService") - ] = UNSET - r"""Payment service used for your Plex Pass subscription""" - - plan: OptionalNullable[str] = UNSET - r"""Name of Plex Pass subscription plan""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = [ - "features", - "active", - "subscribedAt", - "status", - "paymentService", - "plan", - ] - nullable_fields = ["subscribedAt", "paymentService", "plan"] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class GetTokenDetailsAuthenticationResponseStatus( - str, Enum, metaclass=utils.OpenEnumMeta -): - r"""String representation of subscriptionActive""" - - INACTIVE = "Inactive" - ACTIVE = "Active" - - -class GetTokenDetailsSubscriptionTypedDict(TypedDict): - features: NotRequired[List[str]] - r"""List of features allowed on your Plex Pass subscription""" - active: NotRequired[bool] - r"""If the account's Plex Pass subscription is active""" - subscribed_at: NotRequired[Nullable[str]] - r"""Date the account subscribed to Plex Pass""" - status: NotRequired[GetTokenDetailsAuthenticationResponseStatus] - r"""String representation of subscriptionActive""" - payment_service: NotRequired[Nullable[str]] - r"""Payment service used for your Plex Pass subscription""" - plan: NotRequired[Nullable[str]] - r"""Name of Plex Pass subscription plan""" - - -class GetTokenDetailsSubscription(BaseModel): - features: Optional[List[str]] = None - r"""List of features allowed on your Plex Pass subscription""" - - active: Optional[bool] = None - r"""If the account's Plex Pass subscription is active""" - - subscribed_at: Annotated[ - OptionalNullable[str], pydantic.Field(alias="subscribedAt") - ] = UNSET - r"""Date the account subscribed to Plex Pass""" - - status: Annotated[ - Optional[GetTokenDetailsAuthenticationResponseStatus], - PlainValidator(validate_open_enum(False)), - ] = None - r"""String representation of subscriptionActive""" - - payment_service: Annotated[ - OptionalNullable[str], pydantic.Field(alias="paymentService") - ] = UNSET - r"""Payment service used for your Plex Pass subscription""" - - plan: OptionalNullable[str] = UNSET - r"""Name of Plex Pass subscription plan""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = [ - "features", - "active", - "subscribedAt", - "status", - "paymentService", - "plan", - ] - nullable_fields = ["subscribedAt", "paymentService", "plan"] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class GetTokenDetailsUserPlexAccountTypedDict(TypedDict): - r"""Logged in user details""" - - ads_consent: Nullable[bool] - r"""Unknown""" - ads_consent_reminder_at: Nullable[int] - ads_consent_set_at: Nullable[int] - auth_token: str - r"""The account token""" - country: str - r"""The account country""" - email: str - r"""The account email address""" - friendly_name: str - r"""Your account full name""" - entitlements: List[str] - r"""List of devices your allowed to use with this account""" - home_size: int - r"""The number of accounts in the Plex Home""" - id: int - r"""The Plex account ID""" - joined_at: int - r"""Unix epoch datetime in seconds""" - locale: Nullable[str] - r"""The account locale""" - mailing_list_status: MailingListStatus - r"""Your current mailing list status (active or unsubscribed)""" - max_home_size: int - r"""The maximum number of accounts allowed in the Plex Home""" - profile: UserProfileTypedDict - remember_expires_at: int - r"""Unix epoch datetime in seconds""" - scrobble_types: str - r"""Unknown""" - services: List[ServicesTypedDict] - subscription: SubscriptionTypedDict - r"""If the account’s Plex Pass subscription is active""" - subscription_description: Nullable[str] - r"""Description of the Plex Pass subscription""" - thumb: str - r"""URL of the account thumbnail""" - title: str - r"""The title of the account (username or friendly name)""" - username: str - r"""The account username""" - uuid: str - r"""The account UUID""" - attribution_partner: Nullable[str] - anonymous: NotRequired[Nullable[bool]] - r"""Unknown""" - backup_codes_created: NotRequired[bool] - r"""If the two-factor authentication backup codes have been created""" - confirmed: NotRequired[bool] - r"""If the account has been confirmed""" - email_only_auth: NotRequired[bool] - r"""If login with email only is enabled""" - experimental_features: NotRequired[bool] - r"""If experimental features are enabled""" - guest: NotRequired[bool] - r"""If the account is a Plex Home guest user""" - has_password: NotRequired[bool] - r"""If the account has a password""" - home: NotRequired[bool] - r"""If the account is a Plex Home user""" - home_admin: NotRequired[bool] - r"""If the account is the Plex Home admin""" - mailing_list_active: NotRequired[bool] - r"""If you are subscribed to the Plex newsletter""" - pin: NotRequired[str] - r"""[Might be removed] The hashed Plex Home PIN""" - protected: NotRequired[bool] - r"""If the account has a Plex Home PIN enabled""" - restricted: NotRequired[bool] - r"""If the account is a Plex Home managed user""" - roles: NotRequired[List[str]] - r"""[Might be removed] List of account roles. Plexpass membership listed here""" - subscriptions: NotRequired[List[GetTokenDetailsSubscriptionTypedDict]] - two_factor_enabled: NotRequired[bool] - r"""If two-factor authentication is enabled""" - - -class GetTokenDetailsUserPlexAccount(BaseModel): - r"""Logged in user details""" - - ads_consent: Annotated[Nullable[bool], pydantic.Field(alias="adsConsent")] - r"""Unknown""" - - ads_consent_reminder_at: Annotated[ - Nullable[int], pydantic.Field(alias="adsConsentReminderAt") - ] - - ads_consent_set_at: Annotated[ - Nullable[int], pydantic.Field(alias="adsConsentSetAt") - ] - - auth_token: Annotated[str, pydantic.Field(alias="authToken")] - r"""The account token""" - - country: str - r"""The account country""" - - email: str - r"""The account email address""" - - friendly_name: Annotated[str, pydantic.Field(alias="friendlyName")] - r"""Your account full name""" - - entitlements: List[str] - r"""List of devices your allowed to use with this account""" - - home_size: Annotated[int, pydantic.Field(alias="homeSize")] - r"""The number of accounts in the Plex Home""" - - id: int - r"""The Plex account ID""" - - joined_at: Annotated[int, pydantic.Field(alias="joinedAt")] - r"""Unix epoch datetime in seconds""" - - locale: Nullable[str] - r"""The account locale""" - - mailing_list_status: Annotated[ - Annotated[MailingListStatus, PlainValidator(validate_open_enum(False))], - pydantic.Field(alias="mailingListStatus"), - ] - r"""Your current mailing list status (active or unsubscribed)""" - - max_home_size: Annotated[int, pydantic.Field(alias="maxHomeSize")] - r"""The maximum number of accounts allowed in the Plex Home""" - - profile: UserProfile - - remember_expires_at: Annotated[int, pydantic.Field(alias="rememberExpiresAt")] - r"""Unix epoch datetime in seconds""" - - scrobble_types: Annotated[str, pydantic.Field(alias="scrobbleTypes")] - r"""Unknown""" - - services: List[Services] - - subscription: Subscription - r"""If the account’s Plex Pass subscription is active""" - - subscription_description: Annotated[ - Nullable[str], pydantic.Field(alias="subscriptionDescription") - ] - r"""Description of the Plex Pass subscription""" - - thumb: str - r"""URL of the account thumbnail""" - - title: str - r"""The title of the account (username or friendly name)""" - - username: str - r"""The account username""" - - uuid: str - r"""The account UUID""" - - attribution_partner: Annotated[ - Nullable[str], pydantic.Field(alias="attributionPartner") - ] - - anonymous: OptionalNullable[bool] = False - r"""Unknown""" - - backup_codes_created: Annotated[ - Optional[bool], pydantic.Field(alias="backupCodesCreated") - ] = False - r"""If the two-factor authentication backup codes have been created""" - - confirmed: Optional[bool] = False - r"""If the account has been confirmed""" - - email_only_auth: Annotated[ - Optional[bool], pydantic.Field(alias="emailOnlyAuth") - ] = False - r"""If login with email only is enabled""" - - experimental_features: Annotated[ - Optional[bool], pydantic.Field(alias="experimentalFeatures") - ] = False - r"""If experimental features are enabled""" - - guest: Optional[bool] = False - r"""If the account is a Plex Home guest user""" - - has_password: Annotated[Optional[bool], pydantic.Field(alias="hasPassword")] = True - r"""If the account has a password""" - - home: Optional[bool] = False - r"""If the account is a Plex Home user""" - - home_admin: Annotated[Optional[bool], pydantic.Field(alias="homeAdmin")] = False - r"""If the account is the Plex Home admin""" - - mailing_list_active: Annotated[ - Optional[bool], pydantic.Field(alias="mailingListActive") - ] = False - r"""If you are subscribed to the Plex newsletter""" - - pin: Annotated[ - Optional[str], - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." - ), - ] = None - r"""[Might be removed] The hashed Plex Home PIN""" - - protected: Optional[bool] = False - r"""If the account has a Plex Home PIN enabled""" - - restricted: Optional[bool] = False - r"""If the account is a Plex Home managed user""" - - roles: Optional[List[str]] = None - r"""[Might be removed] List of account roles. Plexpass membership listed here""" - - subscriptions: Optional[List[GetTokenDetailsSubscription]] = None - - two_factor_enabled: Annotated[ - Optional[bool], pydantic.Field(alias="twoFactorEnabled") - ] = False - r"""If two-factor authentication is enabled""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = [ - "anonymous", - "backupCodesCreated", - "confirmed", - "emailOnlyAuth", - "experimentalFeatures", - "guest", - "hasPassword", - "home", - "homeAdmin", - "mailingListActive", - "pin", - "protected", - "restricted", - "roles", - "subscriptions", - "twoFactorEnabled", - ] - nullable_fields = [ - "adsConsent", - "adsConsentReminderAt", - "adsConsentSetAt", - "anonymous", - "locale", - "subscriptionDescription", - "attributionPartner", - ] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class GetTokenDetailsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - user_plex_account: NotRequired[GetTokenDetailsUserPlexAccountTypedDict] - r"""Logged in user details""" - - -class GetTokenDetailsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - user_plex_account: Optional[GetTokenDetailsUserPlexAccount] = None - r"""Logged in user details""" diff --git a/src/plex_api_client/models/operations/gettopwatchedcontent.py b/src/plex_api_client/models/operations/gettopwatchedcontent.py deleted file mode 100644 index bcf7f87..0000000 --- a/src/plex_api_client/models/operations/gettopwatchedcontent.py +++ /dev/null @@ -1,354 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from datetime import date -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata, validate_open_enum -import pydantic -from pydantic.functional_validators import PlainValidator -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class GetTopWatchedContentQueryParamType(int, Enum, metaclass=utils.OpenEnumMeta): - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - MOVIE = 1 - TV_SHOW = 2 - SEASON = 3 - EPISODE = 4 - ARTIST = 5 - ALBUM = 6 - TRACK = 7 - PHOTO_ALBUM = 8 - PHOTO = 9 - - -class GetTopWatchedContentQueryParamIncludeGuids(int, Enum): - r"""Adds the Guid object to the response""" - - DISABLE = 0 - ENABLE = 1 - - -class GetTopWatchedContentRequestTypedDict(TypedDict): - type: GetTopWatchedContentQueryParamType - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - include_guids: NotRequired[GetTopWatchedContentQueryParamIncludeGuids] - r"""Adds the Guid object to the response - - """ - - -class GetTopWatchedContentRequest(BaseModel): - type: Annotated[ - Annotated[ - GetTopWatchedContentQueryParamType, PlainValidator(validate_open_enum(True)) - ], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The type of media to retrieve or filter by. - 1 = movie - 2 = show - 3 = season - 4 = episode - E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - - """ - - include_guids: Annotated[ - Optional[GetTopWatchedContentQueryParamIncludeGuids], - pydantic.Field(alias="includeGuids"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = GetTopWatchedContentQueryParamIncludeGuids.DISABLE - r"""Adds the Guid object to the response - - """ - - -class GetTopWatchedContentGenreTypedDict(TypedDict): - id: NotRequired[int] - filter_: NotRequired[str] - tag: NotRequired[str] - - -class GetTopWatchedContentGenre(BaseModel): - id: Optional[int] = None - - filter_: Annotated[Optional[str], pydantic.Field(alias="filter")] = None - - tag: Optional[str] = None - - -class GetTopWatchedContentCountryTypedDict(TypedDict): - id: NotRequired[int] - filter_: NotRequired[str] - tag: NotRequired[str] - - -class GetTopWatchedContentCountry(BaseModel): - id: Optional[int] = None - - filter_: Annotated[Optional[str], pydantic.Field(alias="filter")] = None - - tag: Optional[str] = None - - -class GetTopWatchedContentGuidsTypedDict(TypedDict): - id: NotRequired[str] - - -class GetTopWatchedContentGuids(BaseModel): - id: Optional[str] = None - - -class GetTopWatchedContentRoleTypedDict(TypedDict): - id: NotRequired[int] - filter_: NotRequired[str] - tag: NotRequired[str] - tag_key: NotRequired[str] - role: NotRequired[str] - thumb: NotRequired[str] - - -class GetTopWatchedContentRole(BaseModel): - id: Optional[int] = None - - filter_: Annotated[Optional[str], pydantic.Field(alias="filter")] = None - - tag: Optional[str] = None - - tag_key: Annotated[Optional[str], pydantic.Field(alias="tagKey")] = None - - role: Optional[str] = None - - thumb: Optional[str] = None - - -class GetTopWatchedContentUserTypedDict(TypedDict): - id: NotRequired[int] - - -class GetTopWatchedContentUser(BaseModel): - id: Optional[int] = None - - -class GetTopWatchedContentMetadataTypedDict(TypedDict): - rating_key: NotRequired[str] - key: NotRequired[str] - guid: NotRequired[str] - slug: NotRequired[str] - studio: NotRequired[str] - type: NotRequired[str] - title: NotRequired[str] - library_section_title: NotRequired[str] - library_section_id: NotRequired[int] - library_section_key: NotRequired[str] - content_rating: NotRequired[str] - summary: NotRequired[str] - index: NotRequired[int] - audience_rating: NotRequired[float] - year: NotRequired[int] - tagline: NotRequired[str] - thumb: NotRequired[str] - art: NotRequired[str] - duration: NotRequired[int] - originally_available_at: NotRequired[date] - leaf_count: NotRequired[int] - viewed_leaf_count: NotRequired[int] - child_count: NotRequired[int] - added_at: NotRequired[int] - updated_at: NotRequired[int] - global_view_count: NotRequired[int] - audience_rating_image: NotRequired[str] - genre: NotRequired[List[GetTopWatchedContentGenreTypedDict]] - country: NotRequired[List[GetTopWatchedContentCountryTypedDict]] - guids: NotRequired[List[GetTopWatchedContentGuidsTypedDict]] - role: NotRequired[List[GetTopWatchedContentRoleTypedDict]] - user: NotRequired[List[GetTopWatchedContentUserTypedDict]] - - -class GetTopWatchedContentMetadata(BaseModel): - rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None - - key: Optional[str] = None - - guid: Optional[str] = None - - slug: Optional[str] = None - - studio: Optional[str] = None - - type: Optional[str] = None - - title: Optional[str] = None - - library_section_title: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionTitle") - ] = None - - library_section_id: Annotated[ - Optional[int], pydantic.Field(alias="librarySectionID") - ] = None - - library_section_key: Annotated[ - Optional[str], pydantic.Field(alias="librarySectionKey") - ] = None - - content_rating: Annotated[Optional[str], pydantic.Field(alias="contentRating")] = ( - None - ) - - summary: Optional[str] = None - - index: Optional[int] = None - - audience_rating: Annotated[ - Optional[float], pydantic.Field(alias="audienceRating") - ] = None - - year: Optional[int] = None - - tagline: Optional[str] = None - - thumb: Optional[str] = None - - art: Optional[str] = None - - duration: Optional[int] = None - - originally_available_at: Annotated[ - Optional[date], pydantic.Field(alias="originallyAvailableAt") - ] = None - - leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None - - viewed_leaf_count: Annotated[ - Optional[int], pydantic.Field(alias="viewedLeafCount") - ] = None - - child_count: Annotated[Optional[int], pydantic.Field(alias="childCount")] = None - - added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None - - updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None - - global_view_count: Annotated[ - Optional[int], pydantic.Field(alias="globalViewCount") - ] = None - - audience_rating_image: Annotated[ - Optional[str], pydantic.Field(alias="audienceRatingImage") - ] = None - - genre: Annotated[ - Optional[List[GetTopWatchedContentGenre]], pydantic.Field(alias="Genre") - ] = None - - country: Annotated[ - Optional[List[GetTopWatchedContentCountry]], pydantic.Field(alias="Country") - ] = None - - guids: Annotated[ - Optional[List[GetTopWatchedContentGuids]], pydantic.Field(alias="Guid") - ] = None - - role: Annotated[ - Optional[List[GetTopWatchedContentRole]], pydantic.Field(alias="Role") - ] = None - - user: Annotated[ - Optional[List[GetTopWatchedContentUser]], pydantic.Field(alias="User") - ] = None - - -class GetTopWatchedContentMediaContainerTypedDict(TypedDict): - size: int - r"""Number of media items returned in this response.""" - allow_sync: bool - r"""Indicates whether syncing is allowed.""" - identifier: str - r"""An plugin identifier for the media container.""" - media_tag_prefix: str - r"""The prefix used for media tag resource paths.""" - media_tag_version: int - r"""The version number for media tags.""" - metadata: NotRequired[List[GetTopWatchedContentMetadataTypedDict]] - - -class GetTopWatchedContentMediaContainer(BaseModel): - size: int - r"""Number of media items returned in this response.""" - - allow_sync: Annotated[bool, pydantic.Field(alias="allowSync")] - r"""Indicates whether syncing is allowed.""" - - identifier: str - r"""An plugin identifier for the media container.""" - - media_tag_prefix: Annotated[str, pydantic.Field(alias="mediaTagPrefix")] - r"""The prefix used for media tag resource paths.""" - - media_tag_version: Annotated[int, pydantic.Field(alias="mediaTagVersion")] - r"""The version number for media tags.""" - - metadata: Annotated[ - Optional[List[GetTopWatchedContentMetadata]], pydantic.Field(alias="Metadata") - ] = None - - -class GetTopWatchedContentResponseBodyTypedDict(TypedDict): - r"""The metadata of the library item.""" - - media_container: NotRequired[GetTopWatchedContentMediaContainerTypedDict] - - -class GetTopWatchedContentResponseBody(BaseModel): - r"""The metadata of the library item.""" - - media_container: Annotated[ - Optional[GetTopWatchedContentMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class GetTopWatchedContentResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetTopWatchedContentResponseBodyTypedDict] - r"""The metadata of the library item.""" - - -class GetTopWatchedContentResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetTopWatchedContentResponseBody] = None - r"""The metadata of the library item.""" diff --git a/src/plex_api_client/models/operations/gettranscodesessions.py b/src/plex_api_client/models/operations/gettranscodesessions.py deleted file mode 100644 index f063d6f..0000000 --- a/src/plex_api_client/models/operations/gettranscodesessions.py +++ /dev/null @@ -1,156 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class TranscodeSessionTypedDict(TypedDict): - key: NotRequired[str] - throttled: NotRequired[bool] - complete: NotRequired[bool] - progress: NotRequired[float] - size: NotRequired[int] - speed: NotRequired[float] - error: NotRequired[bool] - duration: NotRequired[int] - remaining: NotRequired[int] - context: NotRequired[str] - source_video_codec: NotRequired[str] - source_audio_codec: NotRequired[str] - video_decision: NotRequired[str] - audio_decision: NotRequired[str] - subtitle_decision: NotRequired[str] - protocol: NotRequired[str] - container: NotRequired[str] - video_codec: NotRequired[str] - audio_codec: NotRequired[str] - audio_channels: NotRequired[int] - transcode_hw_requested: NotRequired[bool] - time_stamp: NotRequired[float] - max_offset_available: NotRequired[float] - min_offset_available: NotRequired[float] - - -class TranscodeSession(BaseModel): - key: Optional[str] = None - - throttled: Optional[bool] = None - - complete: Optional[bool] = None - - progress: Optional[float] = None - - size: Optional[int] = None - - speed: Optional[float] = None - - error: Optional[bool] = None - - duration: Optional[int] = None - - remaining: Optional[int] = None - - context: Optional[str] = None - - source_video_codec: Annotated[ - Optional[str], pydantic.Field(alias="sourceVideoCodec") - ] = None - - source_audio_codec: Annotated[ - Optional[str], pydantic.Field(alias="sourceAudioCodec") - ] = None - - video_decision: Annotated[Optional[str], pydantic.Field(alias="videoDecision")] = ( - None - ) - - audio_decision: Annotated[Optional[str], pydantic.Field(alias="audioDecision")] = ( - None - ) - - subtitle_decision: Annotated[ - Optional[str], pydantic.Field(alias="subtitleDecision") - ] = None - - protocol: Optional[str] = None - - container: Optional[str] = None - - video_codec: Annotated[Optional[str], pydantic.Field(alias="videoCodec")] = None - - audio_codec: Annotated[Optional[str], pydantic.Field(alias="audioCodec")] = None - - audio_channels: Annotated[Optional[int], pydantic.Field(alias="audioChannels")] = ( - None - ) - - transcode_hw_requested: Annotated[ - Optional[bool], pydantic.Field(alias="transcodeHwRequested") - ] = None - - time_stamp: Annotated[Optional[float], pydantic.Field(alias="timeStamp")] = None - - max_offset_available: Annotated[ - Optional[float], pydantic.Field(alias="maxOffsetAvailable") - ] = None - - min_offset_available: Annotated[ - Optional[float], pydantic.Field(alias="minOffsetAvailable") - ] = None - - -class GetTranscodeSessionsMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - transcode_session: NotRequired[List[TranscodeSessionTypedDict]] - - -class GetTranscodeSessionsMediaContainer(BaseModel): - size: Optional[int] = None - - transcode_session: Annotated[ - Optional[List[TranscodeSession]], pydantic.Field(alias="TranscodeSession") - ] = None - - -class GetTranscodeSessionsResponseBodyTypedDict(TypedDict): - r"""The Transcode Sessions""" - - media_container: NotRequired[GetTranscodeSessionsMediaContainerTypedDict] - - -class GetTranscodeSessionsResponseBody(BaseModel): - r"""The Transcode Sessions""" - - media_container: Annotated[ - Optional[GetTranscodeSessionsMediaContainer], - pydantic.Field(alias="MediaContainer"), - ] = None - - -class GetTranscodeSessionsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetTranscodeSessionsResponseBodyTypedDict] - r"""The Transcode Sessions""" - - -class GetTranscodeSessionsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetTranscodeSessionsResponseBody] = None - r"""The Transcode Sessions""" diff --git a/src/plex_api_client/models/operations/gettransienttoken.py b/src/plex_api_client/models/operations/gettransienttoken.py index 410015d..9817627 100644 --- a/src/plex_api_client/models/operations/gettransienttoken.py +++ b/src/plex_api_client/models/operations/gettransienttoken.py @@ -3,41 +3,306 @@ from __future__ import annotations from enum import Enum import httpx +from plex_api_client.models.components import accepts as components_accepts from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -from typing_extensions import Annotated, TypedDict +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict -class GetTransientTokenQueryParamType(str, Enum): - r"""`delegation` - This is the only supported `type` parameter.""" +class GetTransientTokenGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class GetTransientTokenGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class QueryParamType(str, Enum): + r"""The value `delegation` is the only supported `type` parameter.""" DELEGATION = "delegation" class Scope(str, Enum): - r"""`all` - This is the only supported `scope` parameter.""" + r"""The value `all` is the only supported `scope` parameter.""" ALL = "all" class GetTransientTokenRequestTypedDict(TypedDict): - type: GetTransientTokenQueryParamType - r"""`delegation` - This is the only supported `type` parameter.""" + type: QueryParamType + r"""The value `delegation` is the only supported `type` parameter.""" scope: Scope - r"""`all` - This is the only supported `scope` parameter.""" + r"""The value `all` is the only supported `scope` parameter.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" class GetTransientTokenRequest(BaseModel): type: Annotated[ - GetTransientTokenQueryParamType, + QueryParamType, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), ] - r"""`delegation` - This is the only supported `type` parameter.""" + r"""The value `delegation` is the only supported `type` parameter.""" scope: Annotated[ Scope, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) ] - r"""`all` - This is the only supported `scope` parameter.""" + r"""The value `all` is the only supported `scope` parameter.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class GetTransientTokenMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + token: NotRequired[str] + r"""The transient token""" + + +class GetTransientTokenMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + token: Optional[str] = None + r"""The transient token""" + + +class GetTransientTokenResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetTransientTokenMediaContainerTypedDict] + + +class GetTransientTokenResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetTransientTokenMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None class GetTransientTokenResponseTypedDict(TypedDict): @@ -47,6 +312,8 @@ class GetTransientTokenResponseTypedDict(TypedDict): r"""HTTP response status code for this operation""" raw_response: httpx.Response r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetTransientTokenResponseBodyTypedDict] + r"""OK""" class GetTransientTokenResponse(BaseModel): @@ -58,3 +325,6 @@ class GetTransientTokenResponse(BaseModel): raw_response: httpx.Response r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetTransientTokenResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getupdatesstatus.py b/src/plex_api_client/models/operations/getupdatesstatus.py new file mode 100644 index 0000000..db1aa65 --- /dev/null +++ b/src/plex_api_client/models/operations/getupdatesstatus.py @@ -0,0 +1,168 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.types import BaseModel +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetUpdatesStatusState(str, Enum): + r"""The status of this update. + + - available - This release is available + - downloading - This release is downloading + - downloaded - This release has been downloaded + - installing - This release is installing + - tonight - This release will be installed tonight + - skipped - This release has been skipped + - error - This release has an error + - notify - This release is only notifying it is available (typically because it cannot be installed on this setup) + - done - This release is complete + + """ + + AVAILABLE = "available" + DOWNLOADING = "downloading" + DOWNLOADED = "downloaded" + INSTALLING = "installing" + TONIGHT = "tonight" + SKIPPED = "skipped" + ERROR = "error" + NOTIFY = "notify" + DONE = "done" + + +class ReleaseTypedDict(TypedDict): + added: NotRequired[str] + r"""A list of what has been added in this version""" + download_url: NotRequired[str] + r"""The URL of where this update is available""" + fixed: NotRequired[str] + r"""A list of what has been fixed in this version""" + key: NotRequired[str] + r"""The URL key of the update""" + state: NotRequired[GetUpdatesStatusState] + r"""The status of this update. + + - available - This release is available + - downloading - This release is downloading + - downloaded - This release has been downloaded + - installing - This release is installing + - tonight - This release will be installed tonight + - skipped - This release has been skipped + - error - This release has an error + - notify - This release is only notifying it is available (typically because it cannot be installed on this setup) + - done - This release is complete + + """ + version: NotRequired[str] + r"""The version available""" + + +class Release(BaseModel): + added: Optional[str] = None + r"""A list of what has been added in this version""" + + download_url: Annotated[Optional[str], pydantic.Field(alias="downloadURL")] = None + r"""The URL of where this update is available""" + + fixed: Optional[str] = None + r"""A list of what has been fixed in this version""" + + key: Optional[str] = None + r"""The URL key of the update""" + + state: Optional[GetUpdatesStatusState] = None + r"""The status of this update. + + - available - This release is available + - downloading - This release is downloading + - downloaded - This release has been downloaded + - installing - This release is installing + - tonight - This release will be installed tonight + - skipped - This release has been skipped + - error - This release has an error + - notify - This release is only notifying it is available (typically because it cannot be installed on this setup) + - done - This release is complete + + """ + + version: Optional[str] = None + r"""The version available""" + + +class GetUpdatesStatusMediaContainerTypedDict(TypedDict): + auto_update_version: NotRequired[int] + r"""The version of the updater (currently `1`)""" + can_install: NotRequired[bool] + r"""Indicates whether this install can be updated through these endpoints (typically only on MacOS and Windows)""" + checked_at: NotRequired[int] + r"""The last time a check for updates was performed""" + download_url: NotRequired[str] + r"""The URL where the update is available""" + release: NotRequired[List[ReleaseTypedDict]] + status: NotRequired[int] + r"""The current error code (`0` means no error)""" + + +class GetUpdatesStatusMediaContainer(BaseModel): + auto_update_version: Annotated[ + Optional[int], pydantic.Field(alias="autoUpdateVersion") + ] = None + r"""The version of the updater (currently `1`)""" + + can_install: Annotated[Optional[bool], pydantic.Field(alias="canInstall")] = None + r"""Indicates whether this install can be updated through these endpoints (typically only on MacOS and Windows)""" + + checked_at: Annotated[Optional[int], pydantic.Field(alias="checkedAt")] = None + r"""The last time a check for updates was performed""" + + download_url: Annotated[Optional[str], pydantic.Field(alias="downloadURL")] = None + r"""The URL where the update is available""" + + release: Annotated[Optional[List[Release]], pydantic.Field(alias="Release")] = None + + status: Optional[int] = None + r"""The current error code (`0` means no error)""" + + +class GetUpdatesStatusResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[GetUpdatesStatusMediaContainerTypedDict] + + +class GetUpdatesStatusResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[GetUpdatesStatusMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class GetUpdatesStatusResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[GetUpdatesStatusResponseBodyTypedDict] + r"""OK""" + + +class GetUpdatesStatusResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[GetUpdatesStatusResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/getupdatestatus.py b/src/plex_api_client/models/operations/getupdatestatus.py deleted file mode 100644 index c6f6fe9..0000000 --- a/src/plex_api_client/models/operations/getupdatestatus.py +++ /dev/null @@ -1,93 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -import pydantic -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class ReleaseTypedDict(TypedDict): - key: NotRequired[str] - version: NotRequired[str] - added: NotRequired[str] - fixed: NotRequired[str] - download_url: NotRequired[str] - state: NotRequired[str] - - -class Release(BaseModel): - key: Optional[str] = None - - version: Optional[str] = None - - added: Optional[str] = None - - fixed: Optional[str] = None - - download_url: Annotated[Optional[str], pydantic.Field(alias="downloadURL")] = None - - state: Optional[str] = None - - -class GetUpdateStatusMediaContainerTypedDict(TypedDict): - size: NotRequired[int] - can_install: NotRequired[bool] - checked_at: NotRequired[int] - download_url: NotRequired[str] - status: NotRequired[int] - release: NotRequired[List[ReleaseTypedDict]] - - -class GetUpdateStatusMediaContainer(BaseModel): - size: Optional[int] = None - - can_install: Annotated[Optional[bool], pydantic.Field(alias="canInstall")] = None - - checked_at: Annotated[Optional[int], pydantic.Field(alias="checkedAt")] = None - - download_url: Annotated[Optional[str], pydantic.Field(alias="downloadURL")] = None - - status: Optional[int] = None - - release: Annotated[Optional[List[Release]], pydantic.Field(alias="Release")] = None - - -class GetUpdateStatusResponseBodyTypedDict(TypedDict): - r"""The Server Updates""" - - media_container: NotRequired[GetUpdateStatusMediaContainerTypedDict] - - -class GetUpdateStatusResponseBody(BaseModel): - r"""The Server Updates""" - - media_container: Annotated[ - Optional[GetUpdateStatusMediaContainer], pydantic.Field(alias="MediaContainer") - ] = None - - -class GetUpdateStatusResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - object: NotRequired[GetUpdateStatusResponseBodyTypedDict] - r"""The Server Updates""" - - -class GetUpdateStatusResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - object: Optional[GetUpdateStatusResponseBody] = None - r"""The Server Updates""" diff --git a/src/plex_api_client/models/operations/getuserfriends.py b/src/plex_api_client/models/operations/getuserfriends.py deleted file mode 100644 index 773b80a..0000000 --- a/src/plex_api_client/models/operations/getuserfriends.py +++ /dev/null @@ -1,160 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel, Nullable, UNSET_SENTINEL -from plex_api_client.utils import validate_open_enum -import pydantic -from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -GET_USER_FRIENDS_SERVERS = [ - "https://plex.tv/api/v2", -] - - -class SharedServersTypedDict(TypedDict): - pass - - -class SharedServers(BaseModel): - pass - - -class SharedSourcesTypedDict(TypedDict): - pass - - -class SharedSources(BaseModel): - pass - - -class Status(str, Enum, metaclass=utils.OpenEnumMeta): - r"""Current friend request status""" - - ACCEPTED = "accepted" - - -class FriendTypedDict(TypedDict): - email: str - r"""The account email address""" - friendly_name: Nullable[str] - r"""The account full name""" - home: bool - r"""If the account is a Plex Home user""" - id: int - r"""The Plex account ID""" - shared_servers: List[SharedServersTypedDict] - shared_sources: List[SharedSourcesTypedDict] - status: Status - r"""Current friend request status""" - thumb: str - r"""URL of the account thumbnail""" - title: str - r"""The title of the account (username or friendly name)""" - username: str - r"""The account username""" - uuid: str - r"""The account Universally Unique Identifier (UUID)""" - restricted: NotRequired[bool] - r"""If the account is a Plex Home managed user""" - - -class Friend(BaseModel): - email: str - r"""The account email address""" - - friendly_name: Annotated[Nullable[str], pydantic.Field(alias="friendlyName")] - r"""The account full name""" - - home: bool - r"""If the account is a Plex Home user""" - - id: int - r"""The Plex account ID""" - - shared_servers: Annotated[ - List[SharedServers], pydantic.Field(alias="sharedServers") - ] - - shared_sources: Annotated[ - List[SharedSources], pydantic.Field(alias="sharedSources") - ] - - status: Annotated[Status, PlainValidator(validate_open_enum(False))] - r"""Current friend request status""" - - thumb: str - r"""URL of the account thumbnail""" - - title: str - r"""The title of the account (username or friendly name)""" - - username: str - r"""The account username""" - - uuid: str - r"""The account Universally Unique Identifier (UUID)""" - - restricted: Optional[bool] = False - r"""If the account is a Plex Home managed user""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = ["restricted"] - nullable_fields = ["friendlyName"] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class GetUserFriendsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - friends: NotRequired[List[FriendTypedDict]] - r"""Friends Data""" - - -class GetUserFriendsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - friends: Optional[List[Friend]] = None - r"""Friends Data""" diff --git a/src/plex_api_client/models/operations/ingesttransientitem.py b/src/plex_api_client/models/operations/ingesttransientitem.py new file mode 100644 index 0000000..9db2ba8 --- /dev/null +++ b/src/plex_api_client/models/operations/ingesttransientitem.py @@ -0,0 +1,287 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class IngestTransientItemGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class IngestTransientItemGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class IngestTransientItemRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + url: NotRequired[str] + r"""The file of the file to ingest.""" + virtual_file_path: NotRequired[str] + r"""A virtual path to use when the url is opaque.""" + compute_hashes: NotRequired[components_boolint.BoolInt] + r"""Whether or not to compute Plex and OpenSubtitle hashes for the file. Defaults to 0.""" + ingest_non_matches: NotRequired[components_boolint.BoolInt] + r"""Whether or not non matching media should be stored. Defaults to 0.""" + + +class IngestTransientItemRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + url: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The file of the file to ingest.""" + + virtual_file_path: Annotated[ + Optional[str], + pydantic.Field(alias="virtualFilePath"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""A virtual path to use when the url is opaque.""" + + compute_hashes: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="computeHashes"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether or not to compute Plex and OpenSubtitle hashes for the file. Defaults to 0.""" + + ingest_non_matches: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="ingestNonMatches"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether or not non matching media should be stored. Defaults to 0.""" + + +class IngestTransientItemResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class IngestTransientItemResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listactivities.py b/src/plex_api_client/models/operations/listactivities.py new file mode 100644 index 0000000..8a8e8f2 --- /dev/null +++ b/src/plex_api_client/models/operations/listactivities.py @@ -0,0 +1,109 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.types import BaseModel +import pydantic +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ActivityTypedDict(TypedDict): + cancellable: NotRequired[bool] + r"""Indicates whether this activity can be cancelled""" + context: NotRequired[Dict[str, Any]] + r"""An object with additional values""" + progress: NotRequired[float] + r"""A progress percentage. A value of -1 means the progress is indeterminate""" + response: NotRequired[Dict[str, Any]] + r"""An object with the response to the async opperation""" + subtitle: NotRequired[str] + r"""A user-friendly sub-title for this activity""" + title: NotRequired[str] + r"""A user-friendly title for this activity""" + type: NotRequired[str] + r"""The type of activity""" + user_id: NotRequired[int] + r"""The user this activity belongs to""" + uuid: NotRequired[str] + r"""The ID of the activity""" + + +class Activity(BaseModel): + cancellable: Optional[bool] = None + r"""Indicates whether this activity can be cancelled""" + + context: Annotated[Optional[Dict[str, Any]], pydantic.Field(alias="Context")] = None + r"""An object with additional values""" + + progress: Optional[float] = None + r"""A progress percentage. A value of -1 means the progress is indeterminate""" + + response: Annotated[Optional[Dict[str, Any]], pydantic.Field(alias="Response")] = ( + None + ) + r"""An object with the response to the async opperation""" + + subtitle: Optional[str] = None + r"""A user-friendly sub-title for this activity""" + + title: Optional[str] = None + r"""A user-friendly title for this activity""" + + type: Optional[str] = None + r"""The type of activity""" + + user_id: Annotated[Optional[int], pydantic.Field(alias="userID")] = None + r"""The user this activity belongs to""" + + uuid: Optional[str] = None + r"""The ID of the activity""" + + +class ListActivitiesMediaContainerTypedDict(TypedDict): + activity: NotRequired[List[ActivityTypedDict]] + + +class ListActivitiesMediaContainer(BaseModel): + activity: Annotated[Optional[List[Activity]], pydantic.Field(alias="Activity")] = ( + None + ) + + +class ListActivitiesResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[ListActivitiesMediaContainerTypedDict] + + +class ListActivitiesResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[ListActivitiesMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class ListActivitiesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[ListActivitiesResponseBodyTypedDict] + r"""OK""" + + +class ListActivitiesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[ListActivitiesResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listcontent.py b/src/plex_api_client/models/operations/listcontent.py new file mode 100644 index 0000000..a3c2205 --- /dev/null +++ b/src/plex_api_client/models/operations/listcontent.py @@ -0,0 +1,275 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, + mediaquery as components_mediaquery, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListContentGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListContentGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ListContentRequestTypedDict(TypedDict): + section_id: str + r"""The id of the section""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + media_query: NotRequired[components_mediaquery.MediaQueryTypedDict] + r"""This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries""" + + +class ListContentRequest(BaseModel): + section_id: Annotated[ + str, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The id of the section""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + media_query: Annotated[ + Optional[components_mediaquery.MediaQuery], + pydantic.Field(alias="mediaQuery"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""This is a complex query built of several parameters. See [API Info section](#section/API-Info/Media-Queries) for information on building media queries""" + + +class ListContentResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class ListContentResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listdevices.py b/src/plex_api_client/models/operations/listdevices.py new file mode 100644 index 0000000..4157d3e --- /dev/null +++ b/src/plex_api_client/models/operations/listdevices.py @@ -0,0 +1,42 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + mediacontainerwithdevice as components_mediacontainerwithdevice, +) +from plex_api_client.types import BaseModel +from typing import Dict, List, Optional +from typing_extensions import NotRequired, TypedDict + + +class ListDevicesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_device: NotRequired[ + components_mediacontainerwithdevice.MediaContainerWithDeviceTypedDict + ] + r"""OK""" + + +class ListDevicesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_device: Optional[ + components_mediacontainerwithdevice.MediaContainerWithDevice + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listdownloadqueueitems.py b/src/plex_api_client/models/operations/listdownloadqueueitems.py new file mode 100644 index 0000000..a84fcf2 --- /dev/null +++ b/src/plex_api_client/models/operations/listdownloadqueueitems.py @@ -0,0 +1,458 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + transcodesession as components_transcodesession, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListDownloadQueueItemsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListDownloadQueueItemsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ListDownloadQueueItemsRequestTypedDict(TypedDict): + queue_id: int + r"""The queue id""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListDownloadQueueItemsRequest(BaseModel): + queue_id: Annotated[ + int, + pydantic.Field(alias="queueId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The queue id""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class DecisionResultTypedDict(TypedDict): + available_bandwidth: NotRequired[int] + r"""The maximum bitrate set when item was added""" + direct_play_decision_code: NotRequired[int] + direct_play_decision_text: NotRequired[str] + general_decision_code: NotRequired[int] + general_decision_text: NotRequired[str] + mde_decision_code: NotRequired[int] + r"""The code indicating the status of evaluation of playback when client indicates `hasMDE=1`""" + mde_decision_text: NotRequired[str] + r"""Descriptive text for the above code""" + transcode_decision_code: NotRequired[int] + transcode_decision_text: NotRequired[str] + + +class DecisionResult(BaseModel): + available_bandwidth: Annotated[ + Optional[int], pydantic.Field(alias="availableBandwidth") + ] = None + r"""The maximum bitrate set when item was added""" + + direct_play_decision_code: Annotated[ + Optional[int], pydantic.Field(alias="directPlayDecisionCode") + ] = None + + direct_play_decision_text: Annotated[ + Optional[str], pydantic.Field(alias="directPlayDecisionText") + ] = None + + general_decision_code: Annotated[ + Optional[int], pydantic.Field(alias="generalDecisionCode") + ] = None + + general_decision_text: Annotated[ + Optional[str], pydantic.Field(alias="generalDecisionText") + ] = None + + mde_decision_code: Annotated[ + Optional[int], pydantic.Field(alias="mdeDecisionCode") + ] = None + r"""The code indicating the status of evaluation of playback when client indicates `hasMDE=1`""" + + mde_decision_text: Annotated[ + Optional[str], pydantic.Field(alias="mdeDecisionText") + ] = None + r"""Descriptive text for the above code""" + + transcode_decision_code: Annotated[ + Optional[int], pydantic.Field(alias="transcodeDecisionCode") + ] = None + + transcode_decision_text: Annotated[ + Optional[str], pydantic.Field(alias="transcodeDecisionText") + ] = None + + +class ListDownloadQueueItemsStatus(str, Enum): + r"""The state of the item: + - deciding: The item decision is pending + - waiting: The item is waiting for transcode + - processing: The item is being transcoded + - available: The item is available for download + - error: The item encountered an error in the decision or transcode + - expired: The transcoded item has timed out and is no longer available + + """ + + DECIDING = "deciding" + WAITING = "waiting" + PROCESSING = "processing" + AVAILABLE = "available" + ERROR = "error" + EXPIRED = "expired" + + +class TranscodeTypedDict(TypedDict): + r"""The transcode session object which is not yet documented otherwise it'd be a $ref here.""" + + +class Transcode(BaseModel): + r"""The transcode session object which is not yet documented otherwise it'd be a $ref here.""" + + +class DownloadQueueItemTypedDict(TypedDict): + decision_result: NotRequired[DecisionResultTypedDict] + error: NotRequired[str] + r"""The error encountered in transcoding or decision""" + id: NotRequired[int] + key: NotRequired[str] + queue_id: NotRequired[int] + status: NotRequired[ListDownloadQueueItemsStatus] + r"""The state of the item: + - deciding: The item decision is pending + - waiting: The item is waiting for transcode + - processing: The item is being transcoded + - available: The item is available for download + - error: The item encountered an error in the decision or transcode + - expired: The transcoded item has timed out and is no longer available + + """ + transcode: NotRequired[TranscodeTypedDict] + r"""The transcode session object which is not yet documented otherwise it'd be a $ref here.""" + transcode_session: NotRequired[ + components_transcodesession.TranscodeSessionTypedDict + ] + r"""The transcode session if item is currently being transcoded""" + + +class DownloadQueueItem(BaseModel): + decision_result: Annotated[ + Optional[DecisionResult], pydantic.Field(alias="DecisionResult") + ] = None + + error: Optional[str] = None + r"""The error encountered in transcoding or decision""" + + id: Optional[int] = None + + key: Optional[str] = None + + queue_id: Annotated[Optional[int], pydantic.Field(alias="queueId")] = None + + status: Optional[ListDownloadQueueItemsStatus] = None + r"""The state of the item: + - deciding: The item decision is pending + - waiting: The item is waiting for transcode + - processing: The item is being transcoded + - available: The item is available for download + - error: The item encountered an error in the decision or transcode + - expired: The transcoded item has timed out and is no longer available + + """ + + transcode: Optional[Transcode] = None + r"""The transcode session object which is not yet documented otherwise it'd be a $ref here.""" + + transcode_session: Annotated[ + Optional[components_transcodesession.TranscodeSession], + pydantic.Field(alias="TranscodeSession"), + ] = None + r"""The transcode session if item is currently being transcoded""" + + +class ListDownloadQueueItemsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + download_queue_item: NotRequired[List[DownloadQueueItemTypedDict]] + + +class ListDownloadQueueItemsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + download_queue_item: Annotated[ + Optional[List[DownloadQueueItem]], pydantic.Field(alias="DownloadQueueItem") + ] = None + + +class ListDownloadQueueItemsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[ListDownloadQueueItemsMediaContainerTypedDict] + + +class ListDownloadQueueItemsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[ListDownloadQueueItemsMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class ListDownloadQueueItemsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[ListDownloadQueueItemsResponseBodyTypedDict] + r"""OK""" + + +class ListDownloadQueueItemsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[ListDownloadQueueItemsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listdvrs.py b/src/plex_api_client/models/operations/listdvrs.py new file mode 100644 index 0000000..988859d --- /dev/null +++ b/src/plex_api_client/models/operations/listdvrs.py @@ -0,0 +1,132 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import device as components_device +from plex_api_client.types import BaseModel +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListDVRsDVRsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + status: NotRequired[int] + r"""A status indicator. If present and non-zero, indicates an error""" + + +class ListDVRsDVRsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + status: Optional[int] = None + r"""A status indicator. If present and non-zero, indicates an error""" + + +class DvrTypedDict(TypedDict): + device: NotRequired[List[components_device.DeviceTypedDict]] + key: NotRequired[str] + language: NotRequired[str] + lineup: NotRequired[str] + uuid: NotRequired[str] + + +class Dvr(BaseModel): + device: Annotated[ + Optional[List[components_device.Device]], pydantic.Field(alias="Device") + ] = None + + key: Optional[str] = None + + language: Optional[str] = None + + lineup: Optional[str] = None + + uuid: Optional[str] = None + + +class ListDVRsMediaContainerTypedDict(TypedDict): + media_container: NotRequired[ListDVRsDVRsMediaContainerTypedDict] + dvr: NotRequired[List[DvrTypedDict]] + + +class ListDVRsMediaContainer(BaseModel): + media_container: Annotated[ + Optional[ListDVRsDVRsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + dvr: Annotated[Optional[List[Dvr]], pydantic.Field(alias="DVR")] = None + + +class ListDVRsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[ListDVRsMediaContainerTypedDict] + + +class ListDVRsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[ListDVRsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class ListDVRsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[ListDVRsResponseBodyTypedDict] + r"""OK""" + + +class ListDVRsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[ListDVRsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listhubs.py b/src/plex_api_client/models/operations/listhubs.py new file mode 100644 index 0000000..9e267bb --- /dev/null +++ b/src/plex_api_client/models/operations/listhubs.py @@ -0,0 +1,431 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListHubsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListHubsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ListHubsRequestTypedDict(TypedDict): + section_id: int + r"""The section ID for the hubs to reorder""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + metadata_item_id: NotRequired[int] + r"""Restrict hubs to ones relevant to the provided metadata item""" + + +class ListHubsRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The section ID for the hubs to reorder""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + metadata_item_id: Annotated[ + Optional[int], + pydantic.Field(alias="metadataItemId"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Restrict hubs to ones relevant to the provided metadata item""" + + +class HomeVisibility(str, Enum): + r"""Whether this hub is visible on the home screen + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + """ + + ALL = "all" + NONE = "none" + ADMIN = "admin" + SHARED = "shared" + + +class RecommendationsVisibility(str, Enum): + r"""The visibility of this hub in recommendations: + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + """ + + ALL = "all" + NONE = "none" + ADMIN = "admin" + SHARED = "shared" + + +class HubTypedDict(TypedDict): + home_visibility: NotRequired[HomeVisibility] + r"""Whether this hub is visible on the home screen + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + """ + identifier: NotRequired[str] + r"""The identifier for this hub""" + promoted_to_own_home: NotRequired[bool] + r"""Whether this hub is visible to admin user home""" + promoted_to_recommended: NotRequired[bool] + r"""Whether this hub is promoted to all for recommendations""" + promoted_to_shared_home: NotRequired[bool] + r"""Whether this hub is visible to shared user's home""" + recommendations_visibility: NotRequired[RecommendationsVisibility] + r"""The visibility of this hub in recommendations: + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + """ + title: NotRequired[str] + r"""The title of this hub""" + + +class Hub(BaseModel): + home_visibility: Annotated[ + Optional[HomeVisibility], pydantic.Field(alias="homeVisibility") + ] = None + r"""Whether this hub is visible on the home screen + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + """ + + identifier: Optional[str] = None + r"""The identifier for this hub""" + + promoted_to_own_home: Annotated[ + Optional[bool], pydantic.Field(alias="promotedToOwnHome") + ] = None + r"""Whether this hub is visible to admin user home""" + + promoted_to_recommended: Annotated[ + Optional[bool], pydantic.Field(alias="promotedToRecommended") + ] = None + r"""Whether this hub is promoted to all for recommendations""" + + promoted_to_shared_home: Annotated[ + Optional[bool], pydantic.Field(alias="promotedToSharedHome") + ] = None + r"""Whether this hub is visible to shared user's home""" + + recommendations_visibility: Annotated[ + Optional[RecommendationsVisibility], + pydantic.Field(alias="recommendationsVisibility"), + ] = None + r"""The visibility of this hub in recommendations: + - all: Visible to all users + - none: Visible to no users + - admin: Visible to only admin users + - shared: Visible to shared users + + """ + + title: Optional[str] = None + r"""The title of this hub""" + + +class ListHubsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + hub: NotRequired[List[HubTypedDict]] + + +class ListHubsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + hub: Annotated[Optional[List[Hub]], pydantic.Field(alias="Hub")] = None + + +class ListHubsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[ListHubsMediaContainerTypedDict] + + +class ListHubsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[ListHubsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class ListHubsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[ListHubsResponseBodyTypedDict] + r"""OK""" + + +class ListHubsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[ListHubsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listlineups.py b/src/plex_api_client/models/operations/listlineups.py new file mode 100644 index 0000000..fa769b1 --- /dev/null +++ b/src/plex_api_client/models/operations/listlineups.py @@ -0,0 +1,274 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithlineup as components_mediacontainerwithlineup, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListLineupsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListLineupsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ListLineupsRequestTypedDict(TypedDict): + country: str + r"""3 letter country code""" + epg_id: str + r"""The `providerIdentifier` of the provider""" + region: str + r"""The region for the lineup""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListLineupsRequest(BaseModel): + country: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""3 letter country code""" + + epg_id: Annotated[ + str, + pydantic.Field(alias="epgId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The `providerIdentifier` of the provider""" + + region: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The region for the lineup""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ListLineupsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_lineup: NotRequired[ + components_mediacontainerwithlineup.MediaContainerWithLineupTypedDict + ] + r"""OK""" + + +class ListLineupsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_lineup: Optional[ + components_mediacontainerwithlineup.MediaContainerWithLineup + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listmatches.py b/src/plex_api_client/models/operations/listmatches.py new file mode 100644 index 0000000..93e61ce --- /dev/null +++ b/src/plex_api_client/models/operations/listmatches.py @@ -0,0 +1,296 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListMatchesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListMatchesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ListMatchesRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + title: NotRequired[str] + parent_title: NotRequired[str] + agent: NotRequired[str] + language: NotRequired[str] + year: NotRequired[int] + manual: NotRequired[components_boolint.BoolInt] + + +class ListMatchesRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + title: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + parent_title: Annotated[ + Optional[str], + pydantic.Field(alias="parentTitle"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + agent: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + language: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + year: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + manual: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + +class ListMatchesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class ListMatchesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listmoments.py b/src/plex_api_client/models/operations/listmoments.py new file mode 100644 index 0000000..35dc336 --- /dev/null +++ b/src/plex_api_client/models/operations/listmoments.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithartwork as components_mediacontainerwithartwork, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListMomentsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListMomentsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ListMomentsRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListMomentsRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ListMomentsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_artwork: NotRequired[ + components_mediacontainerwithartwork.MediaContainerWithArtworkTypedDict + ] + r"""OK""" + + +class ListMomentsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_artwork: Optional[ + components_mediacontainerwithartwork.MediaContainerWithArtwork + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listpersonmedia.py b/src/plex_api_client/models/operations/listpersonmedia.py new file mode 100644 index 0000000..0e93b16 --- /dev/null +++ b/src/plex_api_client/models/operations/listpersonmedia.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListPersonMediaGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListPersonMediaGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ListPersonMediaRequestTypedDict(TypedDict): + person_id: str + r"""Either the PMS tag `id` of the person or `tagKey` of the actor. Note the `tagKey` is the hex portion of the plex guid for the actor""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListPersonMediaRequest(BaseModel): + person_id: Annotated[ + str, + pydantic.Field(alias="personId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Either the PMS tag `id` of the person or `tagKey` of the actor. Note the `tagKey` is the hex portion of the plex guid for the actor""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ListPersonMediaResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class ListPersonMediaResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listplaybackhistory.py b/src/plex_api_client/models/operations/listplaybackhistory.py new file mode 100644 index 0000000..f721d78 --- /dev/null +++ b/src/plex_api_client/models/operations/listplaybackhistory.py @@ -0,0 +1,413 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListPlaybackHistoryGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListPlaybackHistoryGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ListPlaybackHistoryRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + account_id: NotRequired[int] + r"""The account id to restrict view history""" + viewed_at: NotRequired[int] + r"""The time period to restrict history (typically of the form `viewedAt>=12456789`)""" + library_section_id: NotRequired[int] + r"""The library section id to restrict view history""" + metadata_item_id: NotRequired[int] + r"""The metadata item to restrict view history (can provide the id for a show to see all of that show's view history). Note this is translated to `metadata_items.id`, `parents.id`, or `grandparents.id` internally depending on the metadata type.""" + sort: NotRequired[List[str]] + r"""The field on which to sort. Multiple orderings can be specified separated by `,` and the direction specified following a `:` (`desc` or `asc`; `asc` is assumed if not provided). Note `metadataItemID` may not be used here.""" + + +class ListPlaybackHistoryRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + account_id: Annotated[ + Optional[int], + pydantic.Field(alias="accountID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The account id to restrict view history""" + + viewed_at: Annotated[ + Optional[int], + pydantic.Field(alias="viewedAt"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The time period to restrict history (typically of the form `viewedAt>=12456789`)""" + + library_section_id: Annotated[ + Optional[int], + pydantic.Field(alias="librarySectionID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The library section id to restrict view history""" + + metadata_item_id: Annotated[ + Optional[int], + pydantic.Field(alias="metadataItemID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The metadata item to restrict view history (can provide the id for a show to see all of that show's view history). Note this is translated to `metadata_items.id`, `parents.id`, or `grandparents.id` internally depending on the metadata type.""" + + sort: Annotated[ + Optional[List[str]], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The field on which to sort. Multiple orderings can be specified separated by `,` and the direction specified following a `:` (`desc` or `asc`; `asc` is assumed if not provided). Note `metadataItemID` may not be used here.""" + + +class ListPlaybackHistoryMetadataTypedDict(TypedDict): + account_id: NotRequired[int] + r"""The account id of this playback""" + device_id: NotRequired[int] + r"""The device id which played the item""" + history_key: NotRequired[str] + r"""The key for this individual history item""" + key: NotRequired[str] + r"""The metadata key for the item played""" + library_section_id: NotRequired[str] + r"""The library section id containing the item played""" + originally_available_at: NotRequired[str] + r"""The originally available at of the item played""" + rating_key: NotRequired[str] + r"""The rating key for the item played""" + thumb: NotRequired[str] + r"""The thumb of the item played""" + title: NotRequired[str] + r"""The title of the item played""" + type: NotRequired[str] + r"""The metadata type of the item played""" + viewed_at: NotRequired[int] + r"""The time when the item was played""" + + +class ListPlaybackHistoryMetadata(BaseModel): + account_id: Annotated[Optional[int], pydantic.Field(alias="accountID")] = None + r"""The account id of this playback""" + + device_id: Annotated[Optional[int], pydantic.Field(alias="deviceID")] = None + r"""The device id which played the item""" + + history_key: Annotated[Optional[str], pydantic.Field(alias="historyKey")] = None + r"""The key for this individual history item""" + + key: Optional[str] = None + r"""The metadata key for the item played""" + + library_section_id: Annotated[ + Optional[str], pydantic.Field(alias="librarySectionID") + ] = None + r"""The library section id containing the item played""" + + originally_available_at: Annotated[ + Optional[str], pydantic.Field(alias="originallyAvailableAt") + ] = None + r"""The originally available at of the item played""" + + rating_key: Annotated[Optional[str], pydantic.Field(alias="ratingKey")] = None + r"""The rating key for the item played""" + + thumb: Optional[str] = None + r"""The thumb of the item played""" + + title: Optional[str] = None + r"""The title of the item played""" + + type: Optional[str] = None + r"""The metadata type of the item played""" + + viewed_at: Annotated[Optional[int], pydantic.Field(alias="viewedAt")] = None + r"""The time when the item was played""" + + +class ListPlaybackHistoryMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + metadata: NotRequired[List[ListPlaybackHistoryMetadataTypedDict]] + + +class ListPlaybackHistoryMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + metadata: Annotated[ + Optional[List[ListPlaybackHistoryMetadata]], pydantic.Field(alias="Metadata") + ] = None + + +class ListPlaybackHistoryResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[ListPlaybackHistoryMediaContainerTypedDict] + + +class ListPlaybackHistoryResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[ListPlaybackHistoryMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class ListPlaybackHistoryResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[ListPlaybackHistoryResponseBodyTypedDict] + r"""OK""" + + +class ListPlaybackHistoryResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[ListPlaybackHistoryResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listplaylists.py b/src/plex_api_client/models/operations/listplaylists.py new file mode 100644 index 0000000..088f4c2 --- /dev/null +++ b/src/plex_api_client/models/operations/listplaylists.py @@ -0,0 +1,277 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithplaylistmetadata as components_mediacontainerwithplaylistmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListPlaylistsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListPlaylistsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class PlaylistType(str, Enum): + r"""Limit to a type of playlist""" + + AUDIO = "audio" + VIDEO = "video" + PHOTO = "photo" + + +class ListPlaylistsRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + playlist_type: NotRequired[PlaylistType] + r"""Limit to a type of playlist""" + smart: NotRequired[bool] + r"""Whether this is a smart collection/playlist""" + + +class ListPlaylistsRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + playlist_type: Annotated[ + Optional[PlaylistType], + pydantic.Field(alias="playlistType"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Limit to a type of playlist""" + + smart: Annotated[ + Optional[bool], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether this is a smart collection/playlist""" + + +class ListPlaylistsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_playlist_metadata: NotRequired[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadataTypedDict + ] + r"""OK""" + + +class ListPlaylistsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_playlist_metadata: Optional[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listproviders.py b/src/plex_api_client/models/operations/listproviders.py new file mode 100644 index 0000000..45c877c --- /dev/null +++ b/src/plex_api_client/models/operations/listproviders.py @@ -0,0 +1,340 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import directory as components_directory +from plex_api_client.types import BaseModel +import pydantic +from typing import Any, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class FeatureTypedDict(TypedDict): + directory: NotRequired[List[components_directory.DirectoryTypedDict]] + key: NotRequired[str] + type: NotRequired[str] + + +class Feature(BaseModel): + directory: Annotated[ + Optional[List[components_directory.Directory]], + pydantic.Field(alias="Directory"), + ] = None + + key: Optional[str] = None + + type: Optional[str] = None + + +class ListProvidersMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + r"""A unique identifier for the provider, e.g. `com.plexapp.plugins.library`.""" + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + allow_camera_upload: NotRequired[bool] + allow_channel_access: NotRequired[bool] + allow_media_deletion: NotRequired[bool] + allow_sharing: NotRequired[bool] + allow_sync: NotRequired[bool] + allow_tuners: NotRequired[bool] + background_processing: NotRequired[bool] + certificate: NotRequired[bool] + companion_proxy: NotRequired[bool] + country_code: NotRequired[str] + diagnostics: NotRequired[str] + event_stream: NotRequired[bool] + friendly_name: NotRequired[str] + hub_search: NotRequired[bool] + item_clusters: NotRequired[bool] + livetv: NotRequired[int] + machine_identifier: NotRequired[Any] + media_providers: NotRequired[bool] + multiuser: NotRequired[bool] + music_analysis: NotRequired[int] + my_plex: NotRequired[bool] + my_plex_mapping_state: NotRequired[Any] + my_plex_signin_state: NotRequired[Any] + my_plex_subscription: NotRequired[bool] + my_plex_username: NotRequired[str] + offline_transcode: NotRequired[Any] + owner_features: NotRequired[str] + r"""A comma-separated list of features which are enabled for the server owner""" + platform: NotRequired[str] + platform_version: NotRequired[str] + plugin_host: NotRequired[bool] + push_notifications: NotRequired[bool] + read_only_libraries: NotRequired[bool] + streaming_brain_abr_version: NotRequired[int] + streaming_brain_version: NotRequired[int] + sync: NotRequired[bool] + transcoder_active_video_sessions: NotRequired[int] + transcoder_audio: NotRequired[bool] + transcoder_lyrics: NotRequired[bool] + transcoder_photo: NotRequired[bool] + transcoder_subtitles: NotRequired[bool] + transcoder_video: NotRequired[bool] + transcoder_video_bitrates: NotRequired[Any] + r"""The suggested video quality bitrates to present to the user""" + transcoder_video_qualities: NotRequired[str] + transcoder_video_resolutions: NotRequired[Any] + r"""The suggested video resolutions to the above quality bitrates""" + updated_at: NotRequired[int] + updater: NotRequired[bool] + version: NotRequired[str] + voice_search: NotRequired[bool] + feature: NotRequired[List[FeatureTypedDict]] + protocols: NotRequired[str] + r"""A comma-separated list of default protocols for the provider, which can be: + - `stream`: The provider allows streaming media directly from the provider (e.g. for Vimeo). - `download`: The provider allows downloading media for offline storage, sync, etc. (e.g. Podcasts). - `livetv`: The provider provides live content which is only available on a schedule basis. + """ + title: NotRequired[str] + r"""The title of the provider.""" + types: NotRequired[str] + r"""This attribute contains a comma-separated list of the media types exposed by the provider (e.g. `video, audio`).""" + + +class ListProvidersMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + r"""A unique identifier for the provider, e.g. `com.plexapp.plugins.library`.""" + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + allow_camera_upload: Annotated[ + Optional[bool], pydantic.Field(alias="allowCameraUpload") + ] = None + + allow_channel_access: Annotated[ + Optional[bool], pydantic.Field(alias="allowChannelAccess") + ] = None + + allow_media_deletion: Annotated[ + Optional[bool], pydantic.Field(alias="allowMediaDeletion") + ] = None + + allow_sharing: Annotated[Optional[bool], pydantic.Field(alias="allowSharing")] = ( + None + ) + + allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None + + allow_tuners: Annotated[Optional[bool], pydantic.Field(alias="allowTuners")] = None + + background_processing: Annotated[ + Optional[bool], pydantic.Field(alias="backgroundProcessing") + ] = None + + certificate: Optional[bool] = None + + companion_proxy: Annotated[ + Optional[bool], pydantic.Field(alias="companionProxy") + ] = None + + country_code: Annotated[Optional[str], pydantic.Field(alias="countryCode")] = None + + diagnostics: Optional[str] = None + + event_stream: Annotated[Optional[bool], pydantic.Field(alias="eventStream")] = None + + friendly_name: Annotated[Optional[str], pydantic.Field(alias="friendlyName")] = None + + hub_search: Annotated[Optional[bool], pydantic.Field(alias="hubSearch")] = None + + item_clusters: Annotated[Optional[bool], pydantic.Field(alias="itemClusters")] = ( + None + ) + + livetv: Optional[int] = None + + machine_identifier: Annotated[ + Optional[Any], pydantic.Field(alias="machineIdentifier") + ] = None + + media_providers: Annotated[ + Optional[bool], pydantic.Field(alias="mediaProviders") + ] = None + + multiuser: Optional[bool] = None + + music_analysis: Annotated[Optional[int], pydantic.Field(alias="musicAnalysis")] = ( + None + ) + + my_plex: Annotated[Optional[bool], pydantic.Field(alias="myPlex")] = None + + my_plex_mapping_state: Annotated[ + Optional[Any], pydantic.Field(alias="myPlexMappingState") + ] = None + + my_plex_signin_state: Annotated[ + Optional[Any], pydantic.Field(alias="myPlexSigninState") + ] = None + + my_plex_subscription: Annotated[ + Optional[bool], pydantic.Field(alias="myPlexSubscription") + ] = None + + my_plex_username: Annotated[ + Optional[str], pydantic.Field(alias="myPlexUsername") + ] = None + + offline_transcode: Annotated[ + Optional[Any], pydantic.Field(alias="offlineTranscode") + ] = None + + owner_features: Annotated[Optional[str], pydantic.Field(alias="ownerFeatures")] = ( + None + ) + r"""A comma-separated list of features which are enabled for the server owner""" + + platform: Optional[str] = None + + platform_version: Annotated[ + Optional[str], pydantic.Field(alias="platformVersion") + ] = None + + plugin_host: Annotated[Optional[bool], pydantic.Field(alias="pluginHost")] = None + + push_notifications: Annotated[ + Optional[bool], pydantic.Field(alias="pushNotifications") + ] = None + + read_only_libraries: Annotated[ + Optional[bool], pydantic.Field(alias="readOnlyLibraries") + ] = None + + streaming_brain_abr_version: Annotated[ + Optional[int], pydantic.Field(alias="streamingBrainABRVersion") + ] = None + + streaming_brain_version: Annotated[ + Optional[int], pydantic.Field(alias="streamingBrainVersion") + ] = None + + sync: Optional[bool] = None + + transcoder_active_video_sessions: Annotated[ + Optional[int], pydantic.Field(alias="transcoderActiveVideoSessions") + ] = None + + transcoder_audio: Annotated[ + Optional[bool], pydantic.Field(alias="transcoderAudio") + ] = None + + transcoder_lyrics: Annotated[ + Optional[bool], pydantic.Field(alias="transcoderLyrics") + ] = None + + transcoder_photo: Annotated[ + Optional[bool], pydantic.Field(alias="transcoderPhoto") + ] = None + + transcoder_subtitles: Annotated[ + Optional[bool], pydantic.Field(alias="transcoderSubtitles") + ] = None + + transcoder_video: Annotated[ + Optional[bool], pydantic.Field(alias="transcoderVideo") + ] = None + + transcoder_video_bitrates: Annotated[ + Optional[Any], pydantic.Field(alias="transcoderVideoBitrates") + ] = None + r"""The suggested video quality bitrates to present to the user""" + + transcoder_video_qualities: Annotated[ + Optional[str], pydantic.Field(alias="transcoderVideoQualities") + ] = None + + transcoder_video_resolutions: Annotated[ + Optional[Any], pydantic.Field(alias="transcoderVideoResolutions") + ] = None + r"""The suggested video resolutions to the above quality bitrates""" + + updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None + + updater: Optional[bool] = None + + version: Optional[str] = None + + voice_search: Annotated[Optional[bool], pydantic.Field(alias="voiceSearch")] = None + + feature: Annotated[Optional[List[Feature]], pydantic.Field(alias="Feature")] = None + + protocols: Optional[str] = None + r"""A comma-separated list of default protocols for the provider, which can be: + - `stream`: The provider allows streaming media directly from the provider (e.g. for Vimeo). - `download`: The provider allows downloading media for offline storage, sync, etc. (e.g. Podcasts). - `livetv`: The provider provides live content which is only available on a schedule basis. + """ + + title: Optional[str] = None + r"""The title of the provider.""" + + types: Optional[str] = None + r"""This attribute contains a comma-separated list of the media types exposed by the provider (e.g. `video, audio`).""" + + +class ListProvidersResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[ListProvidersMediaContainerTypedDict] + + +class ListProvidersResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[ListProvidersMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class ListProvidersResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[ListProvidersResponseBodyTypedDict] + r"""OK""" + + +class ListProvidersResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[ListProvidersResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listsessions.py b/src/plex_api_client/models/operations/listsessions.py new file mode 100644 index 0000000..1850cf8 --- /dev/null +++ b/src/plex_api_client/models/operations/listsessions.py @@ -0,0 +1,537 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + filter_ as components_filter_, + image as components_image, + media as components_media, + player as components_player, + session as components_session, + sort as components_sort, + tag as components_tag, + user as components_user, +) +from plex_api_client.types import BaseModel +import pydantic +from pydantic import ConfigDict +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MetadataTypedDict(TypedDict): + r"""Items in a library are referred to as \"metadata items.\" These metadata items are distinct from \"media items\" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a \"media item\" will have one or more \"media parts\" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + + Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + + Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, \"leaves\" refer to metadata items which has associated media (there is no media for a season nor show). A show will have \"children\" in the form of seasons and a season will have \"children\" in the form of episodes and episodes have \"parent\" in the form of a season which has a \"parent\" in the form of a show. Similarly, a show has \"grandchildren\" in the form of episodse and an episode has a \"grandparent\" in the form of a show. + + """ + + player: NotRequired[components_player.PlayerTypedDict] + r"""Information about the player being used for playback""" + session: NotRequired[components_session.SessionTypedDict] + r"""Information about the playback session""" + user: NotRequired[components_user.UserTypedDict] + r"""The user playing the content""" + title: NotRequired[Any] + r"""The title of the item (e.g. “300” or “The Simpsons”)""" + type: NotRequired[Any] + r"""The type of the video item, such as `movie`, `episode`, or `clip`.""" + absolute_index: NotRequired[int] + r"""When present, contains the disc number for a track on multi-disc albums.""" + added_at: NotRequired[int] + r"""In units of seconds since the epoch, returns the time at which the item was added to the library.""" + art: NotRequired[Any] + r"""When present, the URL for the background artwork for the item.""" + audience_rating: NotRequired[float] + r"""Some rating systems separate reviewer ratings from audience ratings""" + audience_rating_image: NotRequired[Any] + r"""A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).""" + autotag: NotRequired[List[components_tag.TagTypedDict]] + banner: NotRequired[Any] + r"""When present, the URL for a banner graphic for the item.""" + chapter_source: NotRequired[Any] + r"""When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).""" + composite: NotRequired[Any] + r"""When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).""" + content_rating: NotRequired[Any] + r"""If known, the content rating (e.g. MPAA) for an item.""" + country: NotRequired[List[components_tag.TagTypedDict]] + director: NotRequired[List[components_tag.TagTypedDict]] + duration: NotRequired[int] + r"""When present, the duration for the item, in units of milliseconds.""" + filter_: NotRequired[List[components_filter_.FilterTypedDict]] + r"""Typically only seen in metadata at a library's top level""" + genre: NotRequired[List[components_tag.TagTypedDict]] + grandparent_art: NotRequired[str] + r"""The `art` of the grandparent""" + grandparent_hero: NotRequired[str] + r"""The `hero` of the grandparent""" + grandparent_key: NotRequired[str] + r"""The `key` of the grandparent""" + grandparent_rating_key: NotRequired[str] + r"""The `ratingKey` of the grandparent""" + grandparent_theme: NotRequired[str] + r"""The `theme` of the grandparent""" + grandparent_thumb: NotRequired[str] + r"""The `thumb` of the grandparent""" + grandparent_title: NotRequired[str] + r"""The `title` of the grandparent""" + guid: NotRequired[List[components_tag.TagTypedDict]] + hero: NotRequired[Any] + r"""When present, the URL for a hero image for the item.""" + image: NotRequired[List[components_image.ImageTypedDict]] + index: NotRequired[int] + r"""When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.""" + key: NotRequired[Any] + r"""The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.""" + last_viewed_at: NotRequired[int] + r"""When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.""" + leaf_count: NotRequired[int] + r"""For shows and seasons, contains the number of total episodes.""" + media: NotRequired[List[components_media.MediaTypedDict]] + originally_available_at: NotRequired[Any] + r"""When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.""" + original_title: NotRequired[Any] + r"""When present, used to indicate an item's original title, e.g. a movie's foreign title.""" + parent_hero: NotRequired[str] + r"""The `hero` of the parent""" + parent_index: NotRequired[int] + r"""The `index` of the parent""" + parent_key: NotRequired[str] + r"""The `key` of the parent""" + parent_rating_key: NotRequired[str] + r"""The `ratingKey` of the parent""" + parent_thumb: NotRequired[str] + r"""The `thumb` of the parent""" + parent_title: NotRequired[str] + r"""The `title` of the parent""" + primary_extra_key: NotRequired[Any] + r"""Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.""" + prompt: NotRequired[str] + r"""Prompt to give the user for this directory (such as `Search Movies`)""" + rating: NotRequired[float] + r"""When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.""" + rating_array: NotRequired[List[components_tag.TagTypedDict]] + rating_count: NotRequired[int] + r"""Number of ratings under this metadata""" + rating_image: NotRequired[Any] + r"""When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.""" + rating_key: NotRequired[Any] + r"""This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.""" + role: NotRequired[List[components_tag.TagTypedDict]] + search: NotRequired[bool] + r"""Indicates this is a search directory""" + secondary: NotRequired[bool] + r"""Used by old clients to provide nested menus allowing for primative (but structured) navigation.""" + skip_children: NotRequired[bool] + r"""When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc.""" + skip_parent: NotRequired[bool] + r"""When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show).""" + sort: NotRequired[List[components_sort.SortTypedDict]] + r"""Typically only seen in metadata at a library's top level""" + studio: NotRequired[Any] + r"""When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).""" + subtype: NotRequired[Any] + r"""The subtype of the video item, such as `photo` when the video item is in a photo library""" + summary: NotRequired[Any] + r"""When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).""" + tagline: NotRequired[Any] + r"""When present, a pithy one-liner about the item (usually only seen for movies).""" + theme: NotRequired[Any] + r"""When present, the URL for theme music for the item (usually only for TV shows).""" + thumb: NotRequired[Any] + r"""When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.""" + title_sort: NotRequired[Any] + r"""Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”).""" + updated_at: NotRequired[int] + r"""In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).""" + user_rating: NotRequired[float] + r"""When the user has rated an item, this contains the user rating""" + view_count: NotRequired[int] + r"""When a users has completed watched or listened to an item, this attribute contains the number of consumptions.""" + viewed_leaf_count: NotRequired[int] + r"""For shows and seasons, contains the number of viewed episodes.""" + view_offset: NotRequired[int] + r"""When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.""" + writer: NotRequired[List[components_tag.TagTypedDict]] + year: NotRequired[int] + r"""When present, the year associated with the item's release (e.g. release year for a movie).""" + + +class Metadata(BaseModel): + r"""Items in a library are referred to as \"metadata items.\" These metadata items are distinct from \"media items\" which represent actual instances of media that can be consumed. Consider a TV library that has a single video file in it for a particular episode of a show. The library has a single media item, but it has three metadata items: one for the show, one for the season, and one for the episode. Consider a movie library that has two video files in it: the same movie, but two different resolutions. The library has a single metadata item for the movie, but that metadata item has two media items, one for each resolution. Additionally a \"media item\" will have one or more \"media parts\" where the the parts are intended to be watched together, such as a CD1 and CD2 parts of the same movie. + + Note that when a metadata item has multiple media items, those media items should be isomorphic. That is, a 4K version and 1080p version of a movie are different versions of the same movie. They have the same duration, same summary, same rating, etc. and they can generally be considered interchangeable. A theatrical release vs. director's cut vs. unrated version on the other hand would be separate metadata items. + + Metadata items can often live in a hierarchy with relationships between them. For example, the metadata item for an episodes is associated with a season metadata item which is associated with a show metadata item. A similar hierarchy exists with track, album, and artist and photos and photo album. The relationships may be expressed via relative terms and absolute terms. For example, \"leaves\" refer to metadata items which has associated media (there is no media for a season nor show). A show will have \"children\" in the form of seasons and a season will have \"children\" in the form of episodes and episodes have \"parent\" in the form of a season which has a \"parent\" in the form of a show. Similarly, a show has \"grandchildren\" in the form of episodse and an episode has a \"grandparent\" in the form of a show. + + """ + + model_config = ConfigDict( + populate_by_name=True, arbitrary_types_allowed=True, extra="allow" + ) + __pydantic_extra__: Dict[str, Any] = pydantic.Field(init=False) + + player: Annotated[ + Optional[components_player.Player], pydantic.Field(alias="Player") + ] = None + r"""Information about the player being used for playback""" + + session: Annotated[ + Optional[components_session.Session], pydantic.Field(alias="Session") + ] = None + r"""Information about the playback session""" + + user: Annotated[Optional[components_user.User], pydantic.Field(alias="User")] = None + r"""The user playing the content""" + + title: Optional[Any] = None + r"""The title of the item (e.g. “300” or “The Simpsons”)""" + + type: Optional[Any] = None + r"""The type of the video item, such as `movie`, `episode`, or `clip`.""" + + absolute_index: Annotated[Optional[int], pydantic.Field(alias="absoluteIndex")] = ( + None + ) + r"""When present, contains the disc number for a track on multi-disc albums.""" + + added_at: Annotated[Optional[int], pydantic.Field(alias="addedAt")] = None + r"""In units of seconds since the epoch, returns the time at which the item was added to the library.""" + + art: Optional[Any] = None + r"""When present, the URL for the background artwork for the item.""" + + audience_rating: Annotated[ + Optional[float], pydantic.Field(alias="audienceRating") + ] = None + r"""Some rating systems separate reviewer ratings from audience ratings""" + + audience_rating_image: Annotated[ + Optional[Any], pydantic.Field(alias="audienceRatingImage") + ] = None + r"""A URI representing the image to be shown with the audience rating (e.g. rottentomatoes://image.rating.spilled).""" + + autotag: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Autotag") + ] = None + + banner: Optional[Any] = None + r"""When present, the URL for a banner graphic for the item.""" + + chapter_source: Annotated[Optional[Any], pydantic.Field(alias="chapterSource")] = ( + None + ) + r"""When present, indicates the source for the chapters in the media file. Can be media (the chapters were embedded in the media itself), agent (a metadata agent computed them), or mixed (a combination of the two).""" + + composite: Optional[Any] = None + r"""When present, the URL for a composite image for descendent items (e.g. photo albums or playlists).""" + + content_rating: Annotated[Optional[Any], pydantic.Field(alias="contentRating")] = ( + None + ) + r"""If known, the content rating (e.g. MPAA) for an item.""" + + country: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Country") + ] = None + + director: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Director") + ] = None + + duration: Optional[int] = None + r"""When present, the duration for the item, in units of milliseconds.""" + + filter_: Annotated[ + Optional[List[components_filter_.Filter]], pydantic.Field(alias="Filter") + ] = None + r"""Typically only seen in metadata at a library's top level""" + + genre: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Genre") + ] = None + + grandparent_art: Annotated[ + Optional[str], pydantic.Field(alias="grandparentArt") + ] = None + r"""The `art` of the grandparent""" + + grandparent_hero: Annotated[ + Optional[str], pydantic.Field(alias="grandparentHero") + ] = None + r"""The `hero` of the grandparent""" + + grandparent_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentKey") + ] = None + r"""The `key` of the grandparent""" + + grandparent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="grandparentRatingKey") + ] = None + r"""The `ratingKey` of the grandparent""" + + grandparent_theme: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTheme") + ] = None + r"""The `theme` of the grandparent""" + + grandparent_thumb: Annotated[ + Optional[str], pydantic.Field(alias="grandparentThumb") + ] = None + r"""The `thumb` of the grandparent""" + + grandparent_title: Annotated[ + Optional[str], pydantic.Field(alias="grandparentTitle") + ] = None + r"""The `title` of the grandparent""" + + guid: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Guid") + ] = None + + hero: Optional[Any] = None + r"""When present, the URL for a hero image for the item.""" + + image: Annotated[ + Optional[List[components_image.Image]], pydantic.Field(alias="Image") + ] = None + + index: Optional[int] = None + r"""When present, this represents the episode number for episodes, season number for seasons, or track number for audio tracks.""" + + key: Optional[Any] = None + r"""The key at which the item's details can be fetched. In many cases a metadata item may be passed without all the details (such as in a hub) and this key corresponds to the endpoint to fetch additional details.""" + + last_viewed_at: Annotated[Optional[int], pydantic.Field(alias="lastViewedAt")] = ( + None + ) + r"""When a user has watched or listened to an item, this contains a timestamp (epoch seconds) for that last consumption time.""" + + leaf_count: Annotated[Optional[int], pydantic.Field(alias="leafCount")] = None + r"""For shows and seasons, contains the number of total episodes.""" + + media: Annotated[ + Optional[List[components_media.Media]], pydantic.Field(alias="Media") + ] = None + + originally_available_at: Annotated[ + Optional[Any], pydantic.Field(alias="originallyAvailableAt") + ] = None + r"""When present, in the format YYYY-MM-DD [HH:MM:SS] (the hours/minutes/seconds part is not always present). The air date, or a higher resolution release date for an item, depending on type. For example, episodes usually have air date like 1979-08-10 (we don't use epoch seconds because media existed prior to 1970). In some cases, recorded over-the-air content has higher resolution air date which includes a time component. Albums and movies may have day-resolution release dates as well.""" + + original_title: Annotated[Optional[Any], pydantic.Field(alias="originalTitle")] = ( + None + ) + r"""When present, used to indicate an item's original title, e.g. a movie's foreign title.""" + + parent_hero: Annotated[Optional[str], pydantic.Field(alias="parentHero")] = None + r"""The `hero` of the parent""" + + parent_index: Annotated[Optional[int], pydantic.Field(alias="parentIndex")] = None + r"""The `index` of the parent""" + + parent_key: Annotated[Optional[str], pydantic.Field(alias="parentKey")] = None + r"""The `key` of the parent""" + + parent_rating_key: Annotated[ + Optional[str], pydantic.Field(alias="parentRatingKey") + ] = None + r"""The `ratingKey` of the parent""" + + parent_thumb: Annotated[Optional[str], pydantic.Field(alias="parentThumb")] = None + r"""The `thumb` of the parent""" + + parent_title: Annotated[Optional[str], pydantic.Field(alias="parentTitle")] = None + r"""The `title` of the parent""" + + primary_extra_key: Annotated[ + Optional[Any], pydantic.Field(alias="primaryExtraKey") + ] = None + r"""Indicates that the item has a primary extra; for a movie, this is a trailer, and for a music track it is a music video. The URL points to the metadata details endpoint for the item.""" + + prompt: Optional[str] = None + r"""Prompt to give the user for this directory (such as `Search Movies`)""" + + rating: Optional[float] = None + r"""When present, the rating for the item. The exact meaning and representation depends on where the rating was sourced from.""" + + rating_array: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Rating") + ] = None + + rating_count: Annotated[Optional[int], pydantic.Field(alias="ratingCount")] = None + r"""Number of ratings under this metadata""" + + rating_image: Annotated[Optional[Any], pydantic.Field(alias="ratingImage")] = None + r"""When present, indicates an image to be shown with the rating. This is passed back as a small set of defined URI values, e.g. rottentomatoes://image.rating.rotten.""" + + rating_key: Annotated[Optional[Any], pydantic.Field(alias="ratingKey")] = None + r"""This is the opaque string to be passed into timeline, scrobble, and rating endpoints to identify them. While it often appears to be numeric, this is not guaranteed.""" + + role: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Role") + ] = None + + search: Optional[bool] = None + r"""Indicates this is a search directory""" + + secondary: Optional[bool] = None + r"""Used by old clients to provide nested menus allowing for primative (but structured) navigation.""" + + skip_children: Annotated[Optional[bool], pydantic.Field(alias="skipChildren")] = ( + None + ) + r"""When found on a show item, indicates that the children (seasons) should be skipped in favor of the grandchildren (episodes). Useful for mini-series, etc.""" + + skip_parent: Annotated[Optional[bool], pydantic.Field(alias="skipParent")] = None + r"""When present on an episode or track item, indicates parent should be skipped in favor of grandparent (show).""" + + sort: Annotated[ + Optional[List[components_sort.Sort]], pydantic.Field(alias="Sort") + ] = None + r"""Typically only seen in metadata at a library's top level""" + + studio: Optional[Any] = None + r"""When present, the studio or label which produced an item (e.g. movie studio for movies, record label for albums).""" + + subtype: Optional[Any] = None + r"""The subtype of the video item, such as `photo` when the video item is in a photo library""" + + summary: Optional[Any] = None + r"""When present, the extended textual information about the item (e.g. movie plot, artist biography, album review).""" + + tagline: Optional[Any] = None + r"""When present, a pithy one-liner about the item (usually only seen for movies).""" + + theme: Optional[Any] = None + r"""When present, the URL for theme music for the item (usually only for TV shows).""" + + thumb: Optional[Any] = None + r"""When present, the URL for the poster or thumbnail for the item. When available for types like movie, it will be the poster graphic, but fall-back to the extracted media thumbnail.""" + + title_sort: Annotated[Optional[Any], pydantic.Field(alias="titleSort")] = None + r"""Whene present, this is the string used for sorting the item. It's usually the title with any leading articles removed (e.g. “Simpsons”).""" + + updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None + r"""In units of seconds since the epoch, returns the time at which the item was last changed (e.g. had its metadata updated).""" + + user_rating: Annotated[Optional[float], pydantic.Field(alias="userRating")] = None + r"""When the user has rated an item, this contains the user rating""" + + view_count: Annotated[Optional[int], pydantic.Field(alias="viewCount")] = None + r"""When a users has completed watched or listened to an item, this attribute contains the number of consumptions.""" + + viewed_leaf_count: Annotated[ + Optional[int], pydantic.Field(alias="viewedLeafCount") + ] = None + r"""For shows and seasons, contains the number of viewed episodes.""" + + view_offset: Annotated[Optional[int], pydantic.Field(alias="viewOffset")] = None + r"""When a user is in the process of viewing or listening to this item, this attribute contains the current offset, in units of milliseconds.""" + + writer: Annotated[ + Optional[List[components_tag.Tag]], pydantic.Field(alias="Writer") + ] = None + + year: Optional[int] = None + r"""When present, the year associated with the item's release (e.g. release year for a movie).""" + + @property + def additional_properties(self): + return self.__pydantic_extra__ + + @additional_properties.setter + def additional_properties(self, value): + self.__pydantic_extra__ = value # pyright: ignore[reportIncompatibleVariableOverride] + + +class ListSessionsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + metadata: NotRequired[List[MetadataTypedDict]] + + +class ListSessionsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + metadata: Annotated[Optional[List[Metadata]], pydantic.Field(alias="Metadata")] = ( + None + ) + + +class ListSessionsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[ListSessionsMediaContainerTypedDict] + + +class ListSessionsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[ListSessionsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class ListSessionsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[ListSessionsResponseBodyTypedDict] + r"""OK""" + + +class ListSessionsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[ListSessionsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listsimilar.py b/src/plex_api_client/models/operations/listsimilar.py new file mode 100644 index 0000000..c12fb5f --- /dev/null +++ b/src/plex_api_client/models/operations/listsimilar.py @@ -0,0 +1,266 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListSimilarGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListSimilarGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ListSimilarRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + count: NotRequired[int] + r"""Limit results to count items""" + + +class ListSimilarRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + count: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Limit results to count items""" + + +class ListSimilarResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class ListSimilarResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listsonicallysimilar.py b/src/plex_api_client/models/operations/listsonicallysimilar.py new file mode 100644 index 0000000..b7d538a --- /dev/null +++ b/src/plex_api_client/models/operations/listsonicallysimilar.py @@ -0,0 +1,285 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListSonicallySimilarGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListSonicallySimilarGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ListSonicallySimilarRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + exclude_parent_id: NotRequired[int] + exclude_grandparent_id: NotRequired[int] + limit: NotRequired[int] + max_distance: NotRequired[float] + + +class ListSonicallySimilarRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + exclude_parent_id: Annotated[ + Optional[int], + pydantic.Field(alias="excludeParentID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + exclude_grandparent_id: Annotated[ + Optional[int], + pydantic.Field(alias="excludeGrandparentID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + limit: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + max_distance: Annotated[ + Optional[float], + pydantic.Field(alias="maxDistance"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + +class ListSonicallySimilarResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class ListSonicallySimilarResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/listtopusers.py b/src/plex_api_client/models/operations/listtopusers.py new file mode 100644 index 0000000..ce2e938 --- /dev/null +++ b/src/plex_api_client/models/operations/listtopusers.py @@ -0,0 +1,317 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ListTopUsersGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListTopUsersGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ListTopUsersRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ListTopUsersRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class AccountTypedDict(TypedDict): + global_view_count: NotRequired[int] + id: NotRequired[int] + + +class Account(BaseModel): + global_view_count: Annotated[ + Optional[int], pydantic.Field(alias="globalViewCount") + ] = None + + id: Optional[int] = None + + +class ListTopUsersMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + account: NotRequired[List[AccountTypedDict]] + + +class ListTopUsersMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + account: Annotated[Optional[List[Account]], pydantic.Field(alias="Account")] = None + + +class ListTopUsersResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[ListTopUsersMediaContainerTypedDict] + + +class ListTopUsersResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[ListTopUsersMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class ListTopUsersResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[ListTopUsersResponseBodyTypedDict] + r"""OK""" + + +class ListTopUsersResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[ListTopUsersResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/logline.py b/src/plex_api_client/models/operations/logline.py deleted file mode 100644 index 8eb6736..0000000 --- a/src/plex_api_client/models/operations/logline.py +++ /dev/null @@ -1,88 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata, validate_open_enum -from pydantic.functional_validators import PlainValidator -from typing_extensions import Annotated, TypedDict - - -class Level(int, Enum, metaclass=utils.OpenEnumMeta): - r"""An integer log level to write to the PMS log with. - 0: Error - 1: Warning - 2: Info - 3: Debug - 4: Verbose - - """ - - ZERO = 0 - ONE = 1 - TWO = 2 - THREE = 3 - FOUR = 4 - - -class LogLineRequestTypedDict(TypedDict): - level: Level - r"""An integer log level to write to the PMS log with. - 0: Error - 1: Warning - 2: Info - 3: Debug - 4: Verbose - - """ - message: str - r"""The text of the message to write to the log.""" - source: str - r"""a string indicating the source of the message.""" - - -class LogLineRequest(BaseModel): - level: Annotated[ - Annotated[Level, PlainValidator(validate_open_enum(True))], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""An integer log level to write to the PMS log with. - 0: Error - 1: Warning - 2: Info - 3: Debug - 4: Verbose - - """ - - message: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The text of the message to write to the log.""" - - source: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""a string indicating the source of the message.""" - - -class LogLineResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class LogLineResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/logmultiline.py b/src/plex_api_client/models/operations/logmultiline.py deleted file mode 100644 index f75a64f..0000000 --- a/src/plex_api_client/models/operations/logmultiline.py +++ /dev/null @@ -1,26 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from typing_extensions import TypedDict - - -class LogMultiLineResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class LogMultiLineResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/makedecision.py b/src/plex_api_client/models/operations/makedecision.py new file mode 100644 index 0000000..5c2c482 --- /dev/null +++ b/src/plex_api_client/models/operations/makedecision.py @@ -0,0 +1,571 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + advancedsubtitles as components_advancedsubtitles, + boolint as components_boolint, + mediacontainerwithdecision as components_mediacontainerwithdecision, + transcodetype as components_transcodetype, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MakeDecisionGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class MakeDecisionGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class Location(str, Enum): + r"""Network type of the client, can be used to help determine target bitrate.""" + + LAN = "lan" + WAN = "wan" + CELLULAR = "cellular" + + +class Protocol(str, Enum): + r"""Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)""" + + HTTP = "http" + HLS = "hls" + DASH = "dash" + + +class Subtitles(str, Enum): + r"""Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream""" + + AUTO = "auto" + BURN = "burn" + NONE = "none" + SIDECAR = "sidecar" + EMBEDDED = "embedded" + SEGMENTED = "segmented" + UNKNOWN = "unknown" + + +class MakeDecisionRequestTypedDict(TypedDict): + transcode_type: components_transcodetype.TranscodeType + r"""Type of transcode media""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + transcode_session_id: NotRequired[str] + r"""Transcode session UUID""" + advanced_subtitles: NotRequired[components_advancedsubtitles.AdvancedSubtitles] + r"""Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost + + """ + audio_boost: NotRequired[int] + r"""Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc)""" + audio_channel_count: NotRequired[int] + r"""Target video number of audio channels.""" + auto_adjust_quality: NotRequired[components_boolint.BoolInt] + r"""Indicates the client supports ABR.""" + auto_adjust_subtitle: NotRequired[components_boolint.BoolInt] + r"""Indicates if the server should adjust subtitles based on Voice Activity Data.""" + direct_play: NotRequired[components_boolint.BoolInt] + r"""Indicates the client supports direct playing the indicated content.""" + direct_stream: NotRequired[components_boolint.BoolInt] + r"""Indicates the client supports direct streaming the video of the indicated content.""" + direct_stream_audio: NotRequired[components_boolint.BoolInt] + r"""Indicates the client supports direct streaming the audio of the indicated content.""" + disable_resolution_rotation: NotRequired[components_boolint.BoolInt] + r"""Indicates if resolution should be adjusted for orientation.""" + has_mde: NotRequired[components_boolint.BoolInt] + r"""Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1""" + location: NotRequired[Location] + r"""Network type of the client, can be used to help determine target bitrate.""" + media_buffer_size: NotRequired[int] + r"""Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks.""" + media_index: NotRequired[int] + r"""Index of the media to transcode. -1 or not specified indicates let the server choose.""" + music_bitrate: NotRequired[int] + r"""Target bitrate for audio only files (in kbps, used to transcode).""" + offset: NotRequired[float] + r"""Offset from the start of the media (in seconds).""" + part_index: NotRequired[int] + r"""Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode""" + path: NotRequired[str] + r"""Internal PMS path of the media to transcode.""" + peak_bitrate: NotRequired[int] + r"""Maximum bitrate (in kbps) to use in ABR.""" + photo_resolution: NotRequired[str] + r"""Target photo resolution.""" + protocol: NotRequired[Protocol] + r"""Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022) + + """ + seconds_per_segment: NotRequired[int] + r"""Number of seconds to include in each transcoded segment""" + subtitle_size: NotRequired[int] + r"""Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect)""" + subtitles: NotRequired[Subtitles] + r"""Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream + + """ + video_bitrate: NotRequired[int] + r"""Target video bitrate (in kbps).""" + video_quality: NotRequired[int] + r"""Target photo quality.""" + video_resolution: NotRequired[str] + r"""Target maximum video resolution.""" + x_plex_client_profile_extra: NotRequired[str] + r"""See [Profile Augmentations](#section/API-Info/Profile-Augmentations) .""" + x_plex_client_profile_name: NotRequired[str] + r"""Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile.""" + x_plex_session_identifier: NotRequired[str] + r"""Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)""" + + +class MakeDecisionRequest(BaseModel): + transcode_type: Annotated[ + components_transcodetype.TranscodeType, + pydantic.Field(alias="transcodeType"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Type of transcode media""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + transcode_session_id: Annotated[ + Optional[str], + pydantic.Field(alias="transcodeSessionId"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Transcode session UUID""" + + advanced_subtitles: Annotated[ + Optional[components_advancedsubtitles.AdvancedSubtitles], + pydantic.Field(alias="advancedSubtitles"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost + + """ + + audio_boost: Annotated[ + Optional[int], + pydantic.Field(alias="audioBoost"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc)""" + + audio_channel_count: Annotated[ + Optional[int], + pydantic.Field(alias="audioChannelCount"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target video number of audio channels.""" + + auto_adjust_quality: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="autoAdjustQuality"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the client supports ABR.""" + + auto_adjust_subtitle: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="autoAdjustSubtitle"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates if the server should adjust subtitles based on Voice Activity Data.""" + + direct_play: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="directPlay"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the client supports direct playing the indicated content.""" + + direct_stream: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="directStream"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the client supports direct streaming the video of the indicated content.""" + + direct_stream_audio: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="directStreamAudio"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the client supports direct streaming the audio of the indicated content.""" + + disable_resolution_rotation: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="disableResolutionRotation"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates if resolution should be adjusted for orientation.""" + + has_mde: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="hasMDE"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1""" + + location: Annotated[ + Optional[Location], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Network type of the client, can be used to help determine target bitrate.""" + + media_buffer_size: Annotated[ + Optional[int], + pydantic.Field(alias="mediaBufferSize"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks.""" + + media_index: Annotated[ + Optional[int], + pydantic.Field(alias="mediaIndex"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Index of the media to transcode. -1 or not specified indicates let the server choose.""" + + music_bitrate: Annotated[ + Optional[int], + pydantic.Field(alias="musicBitrate"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target bitrate for audio only files (in kbps, used to transcode).""" + + offset: Annotated[ + Optional[float], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Offset from the start of the media (in seconds).""" + + part_index: Annotated[ + Optional[int], + pydantic.Field(alias="partIndex"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode""" + + path: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Internal PMS path of the media to transcode.""" + + peak_bitrate: Annotated[ + Optional[int], + pydantic.Field(alias="peakBitrate"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Maximum bitrate (in kbps) to use in ABR.""" + + photo_resolution: Annotated[ + Optional[str], + pydantic.Field(alias="photoResolution"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target photo resolution.""" + + protocol: Annotated[ + Optional[Protocol], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022) + + """ + + seconds_per_segment: Annotated[ + Optional[int], + pydantic.Field(alias="secondsPerSegment"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Number of seconds to include in each transcoded segment""" + + subtitle_size: Annotated[ + Optional[int], + pydantic.Field(alias="subtitleSize"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect)""" + + subtitles: Annotated[ + Optional[Subtitles], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream + + """ + + video_bitrate: Annotated[ + Optional[int], + pydantic.Field(alias="videoBitrate"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target video bitrate (in kbps).""" + + video_quality: Annotated[ + Optional[int], + pydantic.Field(alias="videoQuality"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target photo quality.""" + + video_resolution: Annotated[ + Optional[str], + pydantic.Field(alias="videoResolution"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target maximum video resolution.""" + + x_plex_client_profile_extra: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Profile-Extra"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""See [Profile Augmentations](#section/API-Info/Profile-Augmentations) .""" + + x_plex_client_profile_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Profile-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile.""" + + x_plex_session_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Session-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)""" + + +class MakeDecisionResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_decision: NotRequired[ + components_mediacontainerwithdecision.MediaContainerWithDecisionTypedDict + ] + r"""OK""" + + +class MakeDecisionResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_decision: Optional[ + components_mediacontainerwithdecision.MediaContainerWithDecision + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/markplayed.py b/src/plex_api_client/models/operations/markplayed.py index 6732ef1..d4b6a86 100644 --- a/src/plex_api_client/models/operations/markplayed.py +++ b/src/plex_api_client/models/operations/markplayed.py @@ -2,21 +2,241 @@ from __future__ import annotations import httpx +from plex_api_client.models.components import accepts as components_accepts from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -from typing_extensions import Annotated, TypedDict +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MarkPlayedGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class MarkPlayedGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" class MarkPlayedRequestTypedDict(TypedDict): - key: float - r"""The media key to mark as played""" + identifier: str + r"""The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library`""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + key: NotRequired[str] + r"""The key of the item to rate. This is the `ratingKey` found in metadata items""" + uri: NotRequired[str] + r"""The URI of the item to mark as played. See intro for description of the URIs""" class MarkPlayedRequest(BaseModel): - key: Annotated[ - float, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + identifier: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) ] - r"""The media key to mark as played""" + r"""The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library`""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + key: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The key of the item to rate. This is the `ratingKey` found in metadata items""" + + uri: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The URI of the item to mark as played. See intro for description of the URIs""" class MarkPlayedResponseTypedDict(TypedDict): diff --git a/src/plex_api_client/models/operations/markunplayed.py b/src/plex_api_client/models/operations/markunplayed.py deleted file mode 100644 index ab52676..0000000 --- a/src/plex_api_client/models/operations/markunplayed.py +++ /dev/null @@ -1,39 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -from typing_extensions import Annotated, TypedDict - - -class MarkUnplayedRequestTypedDict(TypedDict): - key: float - r"""The media key to mark as Unplayed""" - - -class MarkUnplayedRequest(BaseModel): - key: Annotated[ - float, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The media key to mark as Unplayed""" - - -class MarkUnplayedResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class MarkUnplayedResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/matchitem.py b/src/plex_api_client/models/operations/matchitem.py new file mode 100644 index 0000000..69ceece --- /dev/null +++ b/src/plex_api_client/models/operations/matchitem.py @@ -0,0 +1,264 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MatchItemGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class MatchItemGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class MatchItemRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + guid: NotRequired[str] + name: NotRequired[str] + year: NotRequired[int] + + +class MatchItemRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + guid: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + name: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + year: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + +class MatchItemResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class MatchItemResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/mergeitems.py b/src/plex_api_client/models/operations/mergeitems.py new file mode 100644 index 0000000..c23daf3 --- /dev/null +++ b/src/plex_api_client/models/operations/mergeitems.py @@ -0,0 +1,255 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MergeItemsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class MergeItemsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class MergeItemsRequestTypedDict(TypedDict): + ids_path_parameter: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + ids_query_parameter: NotRequired[List[str]] + + +class MergeItemsRequest(BaseModel): + ids_path_parameter: Annotated[ + str, + pydantic.Field(alias="ids"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + ids_query_parameter: Annotated[ + Optional[List[str]], + pydantic.Field(alias="ids"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=False)), + ] = None + + +class MergeItemsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class MergeItemsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/modifydevice.py b/src/plex_api_client/models/operations/modifydevice.py new file mode 100644 index 0000000..85f43eb --- /dev/null +++ b/src/plex_api_client/models/operations/modifydevice.py @@ -0,0 +1,330 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ModifyDeviceGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ModifyDeviceGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ModifyDeviceRequestTypedDict(TypedDict): + device_id: int + r"""The ID of the device.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + enabled: NotRequired[components_boolint.BoolInt] + r"""Whether to enable the device""" + + +class ModifyDeviceRequest(BaseModel): + device_id: Annotated[ + int, + pydantic.Field(alias="deviceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the device.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + enabled: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether to enable the device""" + + +class ModifyDeviceMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + message: NotRequired[str] + status: NotRequired[int] + + +class ModifyDeviceMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + message: Optional[str] = None + + status: Optional[int] = None + + +class ModifyDeviceResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[ModifyDeviceMediaContainerTypedDict] + + +class ModifyDeviceResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[ModifyDeviceMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class ModifyDeviceResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[ModifyDeviceResponseBodyTypedDict] + r"""OK""" + + +class ModifyDeviceResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[ModifyDeviceResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/modifyplaylistgenerator.py b/src/plex_api_client/models/operations/modifyplaylistgenerator.py new file mode 100644 index 0000000..4a21863 --- /dev/null +++ b/src/plex_api_client/models/operations/modifyplaylistgenerator.py @@ -0,0 +1,367 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, + mediacontainerwithplaylistmetadata as components_mediacontainerwithplaylistmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ModifyPlaylistGeneratorGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ModifyPlaylistGeneratorGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ModifyPlaylistGeneratorQueryParamLocationTypedDict(TypedDict): + uri: NotRequired[str] + + +class ModifyPlaylistGeneratorQueryParamLocation(BaseModel): + uri: Annotated[Optional[str], FieldMetadata(query=True)] = None + + +class QueryParamScope(str, Enum): + ALL = "all" + COUNT = "count" + + +class PolicyTypedDict(TypedDict): + value: NotRequired[int] + scope: NotRequired[QueryParamScope] + unwatched: NotRequired[components_boolint.BoolInt] + + +class Policy(BaseModel): + value: Annotated[Optional[int], FieldMetadata(query=True)] = None + + scope: Annotated[Optional[QueryParamScope], FieldMetadata(query=True)] = None + + unwatched: Annotated[ + Optional[components_boolint.BoolInt], FieldMetadata(query=True) + ] = None + + +class ItemTypedDict(TypedDict): + r"""Note: OpenAPI cannot properly render this query parameter example ([See GHI](https://github.com/OAI/OpenAPI-Specification/issues/1706)). It should be rendered as: + + Item[type]=42&Item[title]=Jack-Jack Attack&Item[target]=&Item[targetTagID]=1&Item[locationID]=-1&Item[Location][uri]=library://82503060-0d68-4603-b594-8b071d54819e/item//library/metadata/146&Item[Policy][scope]=all&Item[Policy][value]=&Item[Policy][unwatched]=0 + + """ + + location: NotRequired[ModifyPlaylistGeneratorQueryParamLocationTypedDict] + location_id: NotRequired[int] + policy: NotRequired[PolicyTypedDict] + target: NotRequired[str] + target_tag_id: NotRequired[int] + title: NotRequired[str] + type: NotRequired[int] + + +class Item(BaseModel): + r"""Note: OpenAPI cannot properly render this query parameter example ([See GHI](https://github.com/OAI/OpenAPI-Specification/issues/1706)). It should be rendered as: + + Item[type]=42&Item[title]=Jack-Jack Attack&Item[target]=&Item[targetTagID]=1&Item[locationID]=-1&Item[Location][uri]=library://82503060-0d68-4603-b594-8b071d54819e/item//library/metadata/146&Item[Policy][scope]=all&Item[Policy][value]=&Item[Policy][unwatched]=0 + + """ + + location: Annotated[ + Optional[ModifyPlaylistGeneratorQueryParamLocation], + pydantic.Field(alias="Location"), + FieldMetadata(query=True), + ] = None + + location_id: Annotated[ + Optional[int], pydantic.Field(alias="locationID"), FieldMetadata(query=True) + ] = None + + policy: Annotated[ + Optional[Policy], pydantic.Field(alias="Policy"), FieldMetadata(query=True) + ] = None + + target: Annotated[Optional[str], FieldMetadata(query=True)] = None + + target_tag_id: Annotated[ + Optional[int], pydantic.Field(alias="targetTagID"), FieldMetadata(query=True) + ] = None + + title: Annotated[Optional[str], FieldMetadata(query=True)] = None + + type: Annotated[Optional[int], FieldMetadata(query=True)] = None + + +class ModifyPlaylistGeneratorRequestTypedDict(TypedDict): + playlist_id: int + r"""The ID of the playlist""" + generator_id: int + r"""The generator item ID to modify.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + item: NotRequired[ItemTypedDict] + r"""Note: OpenAPI cannot properly render this query parameter example ([See GHI](https://github.com/OAI/OpenAPI-Specification/issues/1706)). It should be rendered as: + + Item[type]=42&Item[title]=Jack-Jack Attack&Item[target]=&Item[targetTagID]=1&Item[locationID]=-1&Item[Location][uri]=library://82503060-0d68-4603-b594-8b071d54819e/item//library/metadata/146&Item[Policy][scope]=all&Item[Policy][value]=&Item[Policy][unwatched]=0 + + """ + + +class ModifyPlaylistGeneratorRequest(BaseModel): + playlist_id: Annotated[ + int, + pydantic.Field(alias="playlistId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the playlist""" + + generator_id: Annotated[ + int, + pydantic.Field(alias="generatorId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The generator item ID to modify.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + item: Annotated[ + Optional[Item], + pydantic.Field(alias="Item"), + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Note: OpenAPI cannot properly render this query parameter example ([See GHI](https://github.com/OAI/OpenAPI-Specification/issues/1706)). It should be rendered as: + + Item[type]=42&Item[title]=Jack-Jack Attack&Item[target]=&Item[targetTagID]=1&Item[locationID]=-1&Item[Location][uri]=library://82503060-0d68-4603-b594-8b071d54819e/item//library/metadata/146&Item[Policy][scope]=all&Item[Policy][value]=&Item[Policy][unwatched]=0 + + """ + + +class ModifyPlaylistGeneratorResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_playlist_metadata: NotRequired[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadataTypedDict + ] + r"""OK""" + + +class ModifyPlaylistGeneratorResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_playlist_metadata: Optional[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/movecollectionitem.py b/src/plex_api_client/models/operations/movecollectionitem.py new file mode 100644 index 0000000..22bce6f --- /dev/null +++ b/src/plex_api_client/models/operations/movecollectionitem.py @@ -0,0 +1,279 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MoveCollectionItemGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class MoveCollectionItemGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class MoveCollectionItemRequestTypedDict(TypedDict): + collection_id: int + r"""The collection id""" + item_id: int + r"""The item to move""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + after: NotRequired[int] + r"""The item to move this item after. If not provided, this item will be moved to the beginning""" + + +class MoveCollectionItemRequest(BaseModel): + collection_id: Annotated[ + int, + pydantic.Field(alias="collectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The collection id""" + + item_id: Annotated[ + int, + pydantic.Field(alias="itemId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The item to move""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + after: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The item to move this item after. If not provided, this item will be moved to the beginning""" + + +class MoveCollectionItemResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class MoveCollectionItemResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/movehub.py b/src/plex_api_client/models/operations/movehub.py new file mode 100644 index 0000000..1600105 --- /dev/null +++ b/src/plex_api_client/models/operations/movehub.py @@ -0,0 +1,278 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + get_responses_200 as components_get_responses_200, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MoveHubGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class MoveHubGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class MoveHubRequestTypedDict(TypedDict): + section_id: int + r"""The section ID for the hubs to reorder""" + identifier: str + r"""The identifier of the hub to move""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + after: NotRequired[str] + r"""The identifier of the hub to order this hub after (or empty/missing to put this hub first)""" + + +class MoveHubRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The section ID for the hubs to reorder""" + + identifier: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The identifier of the hub to move""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + after: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The identifier of the hub to order this hub after (or empty/missing to put this hub first)""" + + +class MoveHubResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + get_responses_200: NotRequired[ + components_get_responses_200.GetResponses200TypedDict + ] + r"""OK""" + + +class MoveHubResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + get_responses_200: Optional[components_get_responses_200.GetResponses200] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/moveplaylistitem.py b/src/plex_api_client/models/operations/moveplaylistitem.py new file mode 100644 index 0000000..01732d0 --- /dev/null +++ b/src/plex_api_client/models/operations/moveplaylistitem.py @@ -0,0 +1,279 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithplaylistmetadata as components_mediacontainerwithplaylistmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MovePlaylistItemGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class MovePlaylistItemGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class MovePlaylistItemRequestTypedDict(TypedDict): + playlist_id: int + r"""The ID of the playlist""" + playlist_item_id: int + r"""The playlist item ID to move.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + after: NotRequired[int] + r"""The playlist item ID to insert the new item after. If not provided, item is moved to beginning of playlist""" + + +class MovePlaylistItemRequest(BaseModel): + playlist_id: Annotated[ + int, + pydantic.Field(alias="playlistId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the playlist""" + + playlist_item_id: Annotated[ + int, + pydantic.Field(alias="playlistItemId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The playlist item ID to move.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + after: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The playlist item ID to insert the new item after. If not provided, item is moved to beginning of playlist""" + + +class MovePlaylistItemResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_playlist_metadata: NotRequired[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadataTypedDict + ] + r"""OK""" + + +class MovePlaylistItemResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_playlist_metadata: Optional[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/moveplayqueueitem.py b/src/plex_api_client/models/operations/moveplayqueueitem.py new file mode 100644 index 0000000..5dd2ad8 --- /dev/null +++ b/src/plex_api_client/models/operations/moveplayqueueitem.py @@ -0,0 +1,279 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithplaylistmetadata as components_mediacontainerwithplaylistmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class MovePlayQueueItemGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class MovePlayQueueItemGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class MovePlayQueueItemRequestTypedDict(TypedDict): + play_queue_id: int + r"""The ID of the play queue.""" + play_queue_item_id: int + r"""The play queue item ID to delete.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + after: NotRequired[int] + r"""The play queue item ID to insert the new item after. If not present, moves to the beginning.""" + + +class MovePlayQueueItemRequest(BaseModel): + play_queue_id: Annotated[ + int, + pydantic.Field(alias="playQueueId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the play queue.""" + + play_queue_item_id: Annotated[ + int, + pydantic.Field(alias="playQueueItemId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The play queue item ID to delete.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + after: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The play queue item ID to insert the new item after. If not present, moves to the beginning.""" + + +class MovePlayQueueItemResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_playlist_metadata: NotRequired[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadataTypedDict + ] + r"""OK""" + + +class MovePlayQueueItemResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_playlist_metadata: Optional[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/optimizedatabase.py b/src/plex_api_client/models/operations/optimizedatabase.py new file mode 100644 index 0000000..f7de773 --- /dev/null +++ b/src/plex_api_client/models/operations/optimizedatabase.py @@ -0,0 +1,248 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class OptimizeDatabaseGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class OptimizeDatabaseGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class OptimizeDatabaseRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + async_: NotRequired[components_boolint.BoolInt] + r"""If set, don't wait for completion but return an activity""" + + +class OptimizeDatabaseRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + async_: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="async"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""If set, don't wait for completion but return an activity""" + + +class OptimizeDatabaseResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class OptimizeDatabaseResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/performsearch.py b/src/plex_api_client/models/operations/performsearch.py deleted file mode 100644 index 09e0aa0..0000000 --- a/src/plex_api_client/models/operations/performsearch.py +++ /dev/null @@ -1,58 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -import pydantic -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class PerformSearchRequestTypedDict(TypedDict): - query: str - r"""The query term""" - section_id: NotRequired[float] - r"""This gives context to the search, and can result in re-ordering of search result hubs""" - limit: NotRequired[float] - r"""The number of items to return per hub""" - - -class PerformSearchRequest(BaseModel): - query: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The query term""" - - section_id: Annotated[ - Optional[float], - pydantic.Field(alias="sectionId"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""This gives context to the search, and can result in re-ordering of search result hubs""" - - limit: Annotated[ - Optional[float], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 3 - r"""The number of items to return per hub""" - - -class PerformSearchResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class PerformSearchResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/performvoicesearch.py b/src/plex_api_client/models/operations/performvoicesearch.py deleted file mode 100644 index 5a93e9f..0000000 --- a/src/plex_api_client/models/operations/performvoicesearch.py +++ /dev/null @@ -1,58 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -import pydantic -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class PerformVoiceSearchRequestTypedDict(TypedDict): - query: str - r"""The query term""" - section_id: NotRequired[float] - r"""This gives context to the search, and can result in re-ordering of search result hubs""" - limit: NotRequired[float] - r"""The number of items to return per hub""" - - -class PerformVoiceSearchRequest(BaseModel): - query: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The query term""" - - section_id: Annotated[ - Optional[float], - pydantic.Field(alias="sectionId"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""This gives context to the search, and can result in re-ordering of search result hubs""" - - limit: Annotated[ - Optional[float], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 3 - r"""The number of items to return per hub""" - - -class PerformVoiceSearchResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class PerformVoiceSearchResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/post_media_arts.py b/src/plex_api_client/models/operations/post_media_arts.py deleted file mode 100644 index 34a88e1..0000000 --- a/src/plex_api_client/models/operations/post_media_arts.py +++ /dev/null @@ -1,65 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -import io -from plex_api_client.types import BaseModel -from plex_api_client.utils import ( - FieldMetadata, - PathParamMetadata, - QueryParamMetadata, - RequestMetadata, -) -import pydantic -from typing import IO, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict - - -class PostMediaArtsRequestTypedDict(TypedDict): - rating_key: int - r"""the id of the library item to return the posters of.""" - url: NotRequired[str] - r"""The URL of the image, if uploading a remote image""" - request_body: NotRequired[Union[bytes, IO[bytes], io.BufferedReader]] - r"""The contents of the image, if uploading a local file""" - - -class PostMediaArtsRequest(BaseModel): - rating_key: Annotated[ - int, - pydantic.Field(alias="ratingKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""the id of the library item to return the posters of.""" - - url: Annotated[ - Optional[str], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The URL of the image, if uploading a remote image""" - - request_body: Annotated[ - Optional[Union[bytes, IO[bytes], io.BufferedReader]], - FieldMetadata(request=RequestMetadata(media_type="image/*")), - ] = None - r"""The contents of the image, if uploading a local file""" - - -class PostMediaArtsResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class PostMediaArtsResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/post_media_poster.py b/src/plex_api_client/models/operations/post_media_poster.py deleted file mode 100644 index d86c274..0000000 --- a/src/plex_api_client/models/operations/post_media_poster.py +++ /dev/null @@ -1,65 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -import io -from plex_api_client.types import BaseModel -from plex_api_client.utils import ( - FieldMetadata, - PathParamMetadata, - QueryParamMetadata, - RequestMetadata, -) -import pydantic -from typing import IO, Optional, Union -from typing_extensions import Annotated, NotRequired, TypedDict - - -class PostMediaPosterRequestTypedDict(TypedDict): - rating_key: int - r"""the id of the library item to return the posters of.""" - url: NotRequired[str] - r"""The URL of the image, if uploading a remote image""" - request_body: NotRequired[Union[bytes, IO[bytes], io.BufferedReader]] - r"""The contents of the image, if uploading a local file""" - - -class PostMediaPosterRequest(BaseModel): - rating_key: Annotated[ - int, - pydantic.Field(alias="ratingKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""the id of the library item to return the posters of.""" - - url: Annotated[ - Optional[str], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The URL of the image, if uploading a remote image""" - - request_body: Annotated[ - Optional[Union[bytes, IO[bytes], io.BufferedReader]], - FieldMetadata(request=RequestMetadata(media_type="image/*")), - ] = None - r"""The contents of the image, if uploading a local file""" - - -class PostMediaPosterResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class PostMediaPosterResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/post_users_sign_in_data.py b/src/plex_api_client/models/operations/post_users_sign_in_data.py deleted file mode 100644 index e8708da..0000000 --- a/src/plex_api_client/models/operations/post_users_sign_in_data.py +++ /dev/null @@ -1,966 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -from enum import Enum -import httpx -from plex_api_client import utils -from plex_api_client.types import ( - BaseModel, - Nullable, - OptionalNullable, - UNSET, - UNSET_SENTINEL, -) -from plex_api_client.utils import ( - FieldMetadata, - HeaderMetadata, - RequestMetadata, - validate_open_enum, -) -import pydantic -from pydantic import model_serializer -from pydantic.functional_validators import PlainValidator -from typing import List, Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -POST_USERS_SIGN_IN_DATA_SERVERS = [ - "https://plex.tv/api/v2", -] - - -class PostUsersSignInDataRequestBodyTypedDict(TypedDict): - r"""Login credentials""" - - login: str - password: str - remember_me: NotRequired[bool] - verification_code: NotRequired[str] - - -class PostUsersSignInDataRequestBody(BaseModel): - r"""Login credentials""" - - login: Annotated[str, FieldMetadata(form=True)] - - password: Annotated[str, FieldMetadata(form=True)] - - remember_me: Annotated[ - Optional[bool], pydantic.Field(alias="rememberMe"), FieldMetadata(form=True) - ] = False - - verification_code: Annotated[ - Optional[str], - pydantic.Field(alias="verificationCode"), - FieldMetadata(form=True), - ] = None - - -class PostUsersSignInDataRequestTypedDict(TypedDict): - client_id: str - r"""An opaque identifier unique to the client (UUID, serial number, or other unique device ID)""" - client_name: NotRequired[str] - r"""The name of the client application. (Plex Web, Plex Media Server, etc.)""" - device_nickname: NotRequired[str] - r"""A relatively friendly name for the client device""" - client_version: NotRequired[str] - r"""The version of the client application.""" - platform: NotRequired[str] - r"""The platform of the client application.""" - request_body: NotRequired[PostUsersSignInDataRequestBodyTypedDict] - r"""Login credentials""" - - -class PostUsersSignInDataRequest(BaseModel): - client_id: Annotated[ - str, - pydantic.Field(alias="X-Plex-Client-Identifier"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] - r"""An opaque identifier unique to the client (UUID, serial number, or other unique device ID)""" - - client_name: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Product"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The name of the client application. (Plex Web, Plex Media Server, etc.)""" - - device_nickname: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Device"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""A relatively friendly name for the client device""" - - client_version: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Version"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The version of the client application.""" - - platform: Annotated[ - Optional[str], - pydantic.Field(alias="X-Plex-Platform"), - FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), - ] = None - r"""The platform of the client application.""" - - request_body: Annotated[ - Optional[PostUsersSignInDataRequestBody], - FieldMetadata( - request=RequestMetadata(media_type="application/x-www-form-urlencoded") - ), - ] = None - r"""Login credentials""" - - -class PostUsersSignInDataMailingListStatus(str, Enum, metaclass=utils.OpenEnumMeta): - r"""Your current mailing list status (active or unsubscribed)""" - - ACTIVE = "active" - UNSUBSCRIBED = "unsubscribed" - - -class PostUsersSignInDataAutoSelectSubtitle(int, Enum): - r"""The auto-select subtitle mode (0 = Manually selected, 1 = Shown with foreign audio, 2 = Always enabled)""" - - DISABLE = 0 - ENABLE = 1 - - -class PostUsersSignInDataDefaultSubtitleAccessibility(int, Enum): - r"""The subtitles for the deaf or hard-of-hearing (SDH) searches mode (0 = Prefer non-SDH subtitles, 1 = Prefer SDH subtitles, 2 = Only show SDH subtitles, 3 = Only show non-SDH subtitles)""" - - DISABLE = 0 - ENABLE = 1 - - -class PostUsersSignInDataDefaultSubtitleForced(int, Enum): - r"""The forced subtitles searches mode (0 = Prefer non-forced subtitles, 1 = Prefer forced subtitles, 2 = Only show forced subtitles, 3 = Only show non-forced subtitles)""" - - DISABLE = 0 - ENABLE = 1 - - -class PostUsersSignInDataWatchedIndicator(int, Enum): - r"""Whether or not media watched indicators are enabled (little orange dot on media)""" - - DISABLE = 0 - ENABLE = 1 - - -class PostUsersSignInDataMediaReviewsVisibility(int, Enum): - r"""Whether or not the account has media reviews visibility enabled""" - - DISABLE = 0 - ENABLE = 1 - - -class PostUsersSignInDataUserProfileTypedDict(TypedDict): - default_audio_language: Nullable[str] - r"""The preferred audio language for the account""" - default_subtitle_language: Nullable[str] - r"""The preferred subtitle language for the account""" - auto_select_audio: NotRequired[bool] - r"""If the account has automatically select audio and subtitle tracks enabled""" - auto_select_subtitle: NotRequired[PostUsersSignInDataAutoSelectSubtitle] - default_subtitle_accessibility: NotRequired[ - PostUsersSignInDataDefaultSubtitleAccessibility - ] - default_subtitle_forced: NotRequired[PostUsersSignInDataDefaultSubtitleForced] - watched_indicator: NotRequired[PostUsersSignInDataWatchedIndicator] - media_reviews_visibility: NotRequired[PostUsersSignInDataMediaReviewsVisibility] - - -class PostUsersSignInDataUserProfile(BaseModel): - default_audio_language: Annotated[ - Nullable[str], pydantic.Field(alias="defaultAudioLanguage") - ] - r"""The preferred audio language for the account""" - - default_subtitle_language: Annotated[ - Nullable[str], pydantic.Field(alias="defaultSubtitleLanguage") - ] - r"""The preferred subtitle language for the account""" - - auto_select_audio: Annotated[ - Optional[bool], pydantic.Field(alias="autoSelectAudio") - ] = True - r"""If the account has automatically select audio and subtitle tracks enabled""" - - auto_select_subtitle: Annotated[ - Optional[PostUsersSignInDataAutoSelectSubtitle], - pydantic.Field(alias="autoSelectSubtitle"), - ] = PostUsersSignInDataAutoSelectSubtitle.DISABLE - - default_subtitle_accessibility: Annotated[ - Optional[PostUsersSignInDataDefaultSubtitleAccessibility], - pydantic.Field(alias="defaultSubtitleAccessibility"), - ] = PostUsersSignInDataDefaultSubtitleAccessibility.DISABLE - - default_subtitle_forced: Annotated[ - Optional[PostUsersSignInDataDefaultSubtitleForced], - pydantic.Field(alias="defaultSubtitleForced"), - ] = PostUsersSignInDataDefaultSubtitleForced.DISABLE - - watched_indicator: Annotated[ - Optional[PostUsersSignInDataWatchedIndicator], - pydantic.Field(alias="watchedIndicator"), - ] = PostUsersSignInDataWatchedIndicator.DISABLE - - media_reviews_visibility: Annotated[ - Optional[PostUsersSignInDataMediaReviewsVisibility], - pydantic.Field(alias="mediaReviewsVisibility"), - ] = PostUsersSignInDataMediaReviewsVisibility.DISABLE - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = [ - "autoSelectAudio", - "autoSelectSubtitle", - "defaultSubtitleAccessibility", - "defaultSubtitleForced", - "watchedIndicator", - "mediaReviewsVisibility", - ] - nullable_fields = ["defaultAudioLanguage", "defaultSubtitleLanguage"] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class PostUsersSignInDataStatus(str, Enum, metaclass=utils.OpenEnumMeta): - ONLINE = "online" - OFFLINE = "offline" - - -class PostUsersSignInDataServicesTypedDict(TypedDict): - identifier: str - endpoint: str - token: Nullable[str] - secret: Nullable[str] - status: PostUsersSignInDataStatus - - -class PostUsersSignInDataServices(BaseModel): - identifier: str - - endpoint: str - - token: Nullable[str] - - secret: Nullable[str] - - status: Annotated[ - PostUsersSignInDataStatus, PlainValidator(validate_open_enum(False)) - ] - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["token", "secret"] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class PostUsersSignInDataAuthenticationStatus(str, Enum, metaclass=utils.OpenEnumMeta): - r"""String representation of subscriptionActive""" - - INACTIVE = "Inactive" - ACTIVE = "Active" - - -class PostUsersSignInDataSubscriptionTypedDict(TypedDict): - r"""If the account’s Plex Pass subscription is active""" - - features: NotRequired[List[str]] - r"""List of features allowed on your Plex Pass subscription""" - active: NotRequired[bool] - r"""If the account's Plex Pass subscription is active""" - subscribed_at: NotRequired[Nullable[str]] - r"""Date the account subscribed to Plex Pass""" - status: NotRequired[PostUsersSignInDataAuthenticationStatus] - r"""String representation of subscriptionActive""" - payment_service: NotRequired[Nullable[str]] - r"""Payment service used for your Plex Pass subscription""" - plan: NotRequired[Nullable[str]] - r"""Name of Plex Pass subscription plan""" - - -class PostUsersSignInDataSubscription(BaseModel): - r"""If the account’s Plex Pass subscription is active""" - - features: Optional[List[str]] = None - r"""List of features allowed on your Plex Pass subscription""" - - active: Optional[bool] = None - r"""If the account's Plex Pass subscription is active""" - - subscribed_at: Annotated[ - OptionalNullable[str], pydantic.Field(alias="subscribedAt") - ] = UNSET - r"""Date the account subscribed to Plex Pass""" - - status: Annotated[ - Optional[PostUsersSignInDataAuthenticationStatus], - PlainValidator(validate_open_enum(False)), - ] = None - r"""String representation of subscriptionActive""" - - payment_service: Annotated[ - OptionalNullable[str], pydantic.Field(alias="paymentService") - ] = UNSET - r"""Payment service used for your Plex Pass subscription""" - - plan: OptionalNullable[str] = UNSET - r"""Name of Plex Pass subscription plan""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = [ - "features", - "active", - "subscribedAt", - "status", - "paymentService", - "plan", - ] - nullable_fields = ["subscribedAt", "paymentService", "plan"] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class PostUsersSignInDataAuthenticationResponseStatus( - str, Enum, metaclass=utils.OpenEnumMeta -): - r"""String representation of subscriptionActive""" - - INACTIVE = "Inactive" - ACTIVE = "Active" - - -class PostUsersSignInDataAuthenticationSubscriptionTypedDict(TypedDict): - features: NotRequired[List[str]] - r"""List of features allowed on your Plex Pass subscription""" - active: NotRequired[bool] - r"""If the account's Plex Pass subscription is active""" - subscribed_at: NotRequired[Nullable[str]] - r"""Date the account subscribed to Plex Pass""" - status: NotRequired[PostUsersSignInDataAuthenticationResponseStatus] - r"""String representation of subscriptionActive""" - payment_service: NotRequired[Nullable[str]] - r"""Payment service used for your Plex Pass subscription""" - plan: NotRequired[Nullable[str]] - r"""Name of Plex Pass subscription plan""" - - -class PostUsersSignInDataAuthenticationSubscription(BaseModel): - features: Optional[List[str]] = None - r"""List of features allowed on your Plex Pass subscription""" - - active: Optional[bool] = None - r"""If the account's Plex Pass subscription is active""" - - subscribed_at: Annotated[ - OptionalNullable[str], pydantic.Field(alias="subscribedAt") - ] = UNSET - r"""Date the account subscribed to Plex Pass""" - - status: Annotated[ - Optional[PostUsersSignInDataAuthenticationResponseStatus], - PlainValidator(validate_open_enum(False)), - ] = None - r"""String representation of subscriptionActive""" - - payment_service: Annotated[ - OptionalNullable[str], pydantic.Field(alias="paymentService") - ] = UNSET - r"""Payment service used for your Plex Pass subscription""" - - plan: OptionalNullable[str] = UNSET - r"""Name of Plex Pass subscription plan""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = [ - "features", - "active", - "subscribedAt", - "status", - "paymentService", - "plan", - ] - nullable_fields = ["subscribedAt", "paymentService", "plan"] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class PostUsersSignInDataState(str, Enum, metaclass=utils.OpenEnumMeta): - ENDED = "ended" - - -class InternalPaymentMethodTypedDict(TypedDict): - pass - - -class InternalPaymentMethod(BaseModel): - pass - - -class BillingTypedDict(TypedDict): - internal_payment_method: InternalPaymentMethodTypedDict - payment_method_id: Nullable[int] - - -class Billing(BaseModel): - internal_payment_method: Annotated[ - InternalPaymentMethod, pydantic.Field(alias="internalPaymentMethod") - ] - - payment_method_id: Annotated[Nullable[int], pydantic.Field(alias="paymentMethodId")] - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = [] - nullable_fields = ["paymentMethodId"] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class PastSubscriptionTypedDict(TypedDict): - id: Nullable[str] - mode: Nullable[str] - renews_at: Nullable[int] - ends_at: Nullable[int] - type: str - transfer: Nullable[str] - state: PostUsersSignInDataState - billing: BillingTypedDict - canceled: NotRequired[bool] - grace_period: NotRequired[bool] - on_hold: NotRequired[bool] - can_reactivate: NotRequired[bool] - can_upgrade: NotRequired[bool] - can_downgrade: NotRequired[bool] - can_convert: NotRequired[bool] - - -class PastSubscription(BaseModel): - id: Nullable[str] - - mode: Nullable[str] - - renews_at: Annotated[Nullable[int], pydantic.Field(alias="renewsAt")] - - ends_at: Annotated[Nullable[int], pydantic.Field(alias="endsAt")] - - type: str - - transfer: Nullable[str] - - state: Annotated[ - PostUsersSignInDataState, PlainValidator(validate_open_enum(False)) - ] - - billing: Billing - - canceled: Optional[bool] = False - - grace_period: Annotated[Optional[bool], pydantic.Field(alias="gracePeriod")] = False - - on_hold: Annotated[Optional[bool], pydantic.Field(alias="onHold")] = False - - can_reactivate: Annotated[Optional[bool], pydantic.Field(alias="canReactivate")] = ( - False - ) - - can_upgrade: Annotated[Optional[bool], pydantic.Field(alias="canUpgrade")] = False - - can_downgrade: Annotated[Optional[bool], pydantic.Field(alias="canDowngrade")] = ( - False - ) - - can_convert: Annotated[Optional[bool], pydantic.Field(alias="canConvert")] = False - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = [ - "canceled", - "gracePeriod", - "onHold", - "canReactivate", - "canUpgrade", - "canDowngrade", - "canConvert", - ] - nullable_fields = ["id", "mode", "renewsAt", "endsAt", "transfer"] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class TrialsTypedDict(TypedDict): - pass - - -class Trials(BaseModel): - pass - - -class PostUsersSignInDataUserPlexAccountTypedDict(TypedDict): - r"""Returns the user account data with a valid auth token""" - - ads_consent: Nullable[bool] - r"""Unknown""" - ads_consent_reminder_at: Nullable[int] - ads_consent_set_at: Nullable[int] - auth_token: str - r"""The account token""" - country: str - r"""The account country""" - email: str - r"""The account email address""" - friendly_name: str - r"""Your account full name""" - entitlements: List[str] - r"""List of devices your allowed to use with this account""" - home_size: int - r"""The number of accounts in the Plex Home""" - id: int - r"""The Plex account ID""" - joined_at: int - r"""Unix epoch datetime in seconds""" - locale: Nullable[str] - r"""The account locale""" - mailing_list_status: PostUsersSignInDataMailingListStatus - r"""Your current mailing list status (active or unsubscribed)""" - max_home_size: int - r"""The maximum number of accounts allowed in the Plex Home""" - profile: PostUsersSignInDataUserProfileTypedDict - remember_expires_at: int - r"""Unix epoch datetime in seconds""" - scrobble_types: str - r"""Unknown""" - services: List[PostUsersSignInDataServicesTypedDict] - subscription: PostUsersSignInDataSubscriptionTypedDict - r"""If the account’s Plex Pass subscription is active""" - subscription_description: Nullable[str] - r"""Description of the Plex Pass subscription""" - thumb: str - r"""URL of the account thumbnail""" - title: str - r"""The title of the account (username or friendly name)""" - username: str - r"""The account username""" - uuid: str - r"""The account UUID""" - attribution_partner: Nullable[str] - past_subscriptions: List[PastSubscriptionTypedDict] - trials: List[TrialsTypedDict] - anonymous: NotRequired[Nullable[bool]] - r"""Unknown""" - backup_codes_created: NotRequired[bool] - r"""If the two-factor authentication backup codes have been created""" - confirmed: NotRequired[bool] - r"""If the account has been confirmed""" - email_only_auth: NotRequired[bool] - r"""If login with email only is enabled""" - experimental_features: NotRequired[bool] - r"""If experimental features are enabled""" - guest: NotRequired[bool] - r"""If the account is a Plex Home guest user""" - has_password: NotRequired[bool] - r"""If the account has a password""" - home: NotRequired[bool] - r"""If the account is a Plex Home user""" - home_admin: NotRequired[bool] - r"""If the account is the Plex Home admin""" - mailing_list_active: NotRequired[bool] - r"""If you are subscribed to the Plex newsletter""" - pin: NotRequired[str] - r"""[Might be removed] The hashed Plex Home PIN""" - protected: NotRequired[bool] - r"""If the account has a Plex Home PIN enabled""" - restricted: NotRequired[bool] - r"""If the account is a Plex Home managed user""" - roles: NotRequired[List[str]] - r"""[Might be removed] List of account roles. Plexpass membership listed here""" - subscriptions: NotRequired[ - List[PostUsersSignInDataAuthenticationSubscriptionTypedDict] - ] - two_factor_enabled: NotRequired[bool] - r"""If two-factor authentication is enabled""" - - -class PostUsersSignInDataUserPlexAccount(BaseModel): - r"""Returns the user account data with a valid auth token""" - - ads_consent: Annotated[Nullable[bool], pydantic.Field(alias="adsConsent")] - r"""Unknown""" - - ads_consent_reminder_at: Annotated[ - Nullable[int], pydantic.Field(alias="adsConsentReminderAt") - ] - - ads_consent_set_at: Annotated[ - Nullable[int], pydantic.Field(alias="adsConsentSetAt") - ] - - auth_token: Annotated[str, pydantic.Field(alias="authToken")] - r"""The account token""" - - country: str - r"""The account country""" - - email: str - r"""The account email address""" - - friendly_name: Annotated[str, pydantic.Field(alias="friendlyName")] - r"""Your account full name""" - - entitlements: List[str] - r"""List of devices your allowed to use with this account""" - - home_size: Annotated[int, pydantic.Field(alias="homeSize")] - r"""The number of accounts in the Plex Home""" - - id: int - r"""The Plex account ID""" - - joined_at: Annotated[int, pydantic.Field(alias="joinedAt")] - r"""Unix epoch datetime in seconds""" - - locale: Nullable[str] - r"""The account locale""" - - mailing_list_status: Annotated[ - Annotated[ - PostUsersSignInDataMailingListStatus, - PlainValidator(validate_open_enum(False)), - ], - pydantic.Field(alias="mailingListStatus"), - ] - r"""Your current mailing list status (active or unsubscribed)""" - - max_home_size: Annotated[int, pydantic.Field(alias="maxHomeSize")] - r"""The maximum number of accounts allowed in the Plex Home""" - - profile: PostUsersSignInDataUserProfile - - remember_expires_at: Annotated[int, pydantic.Field(alias="rememberExpiresAt")] - r"""Unix epoch datetime in seconds""" - - scrobble_types: Annotated[str, pydantic.Field(alias="scrobbleTypes")] - r"""Unknown""" - - services: List[PostUsersSignInDataServices] - - subscription: PostUsersSignInDataSubscription - r"""If the account’s Plex Pass subscription is active""" - - subscription_description: Annotated[ - Nullable[str], pydantic.Field(alias="subscriptionDescription") - ] - r"""Description of the Plex Pass subscription""" - - thumb: str - r"""URL of the account thumbnail""" - - title: str - r"""The title of the account (username or friendly name)""" - - username: str - r"""The account username""" - - uuid: str - r"""The account UUID""" - - attribution_partner: Annotated[ - Nullable[str], pydantic.Field(alias="attributionPartner") - ] - - past_subscriptions: Annotated[ - List[PastSubscription], pydantic.Field(alias="pastSubscriptions") - ] - - trials: List[Trials] - - anonymous: OptionalNullable[bool] = False - r"""Unknown""" - - backup_codes_created: Annotated[ - Optional[bool], pydantic.Field(alias="backupCodesCreated") - ] = False - r"""If the two-factor authentication backup codes have been created""" - - confirmed: Optional[bool] = False - r"""If the account has been confirmed""" - - email_only_auth: Annotated[ - Optional[bool], pydantic.Field(alias="emailOnlyAuth") - ] = False - r"""If login with email only is enabled""" - - experimental_features: Annotated[ - Optional[bool], pydantic.Field(alias="experimentalFeatures") - ] = False - r"""If experimental features are enabled""" - - guest: Optional[bool] = False - r"""If the account is a Plex Home guest user""" - - has_password: Annotated[Optional[bool], pydantic.Field(alias="hasPassword")] = True - r"""If the account has a password""" - - home: Optional[bool] = False - r"""If the account is a Plex Home user""" - - home_admin: Annotated[Optional[bool], pydantic.Field(alias="homeAdmin")] = False - r"""If the account is the Plex Home admin""" - - mailing_list_active: Annotated[ - Optional[bool], pydantic.Field(alias="mailingListActive") - ] = False - r"""If you are subscribed to the Plex newsletter""" - - pin: Annotated[ - Optional[str], - pydantic.Field( - deprecated="warning: ** DEPRECATED ** - This will be removed in a future release, please migrate away from it as soon as possible." - ), - ] = None - r"""[Might be removed] The hashed Plex Home PIN""" - - protected: Optional[bool] = False - r"""If the account has a Plex Home PIN enabled""" - - restricted: Optional[bool] = False - r"""If the account is a Plex Home managed user""" - - roles: Optional[List[str]] = None - r"""[Might be removed] List of account roles. Plexpass membership listed here""" - - subscriptions: Optional[List[PostUsersSignInDataAuthenticationSubscription]] = None - - two_factor_enabled: Annotated[ - Optional[bool], pydantic.Field(alias="twoFactorEnabled") - ] = False - r"""If two-factor authentication is enabled""" - - @model_serializer(mode="wrap") - def serialize_model(self, handler): - optional_fields = [ - "anonymous", - "backupCodesCreated", - "confirmed", - "emailOnlyAuth", - "experimentalFeatures", - "guest", - "hasPassword", - "home", - "homeAdmin", - "mailingListActive", - "pin", - "protected", - "restricted", - "roles", - "subscriptions", - "twoFactorEnabled", - ] - nullable_fields = [ - "adsConsent", - "adsConsentReminderAt", - "adsConsentSetAt", - "anonymous", - "locale", - "subscriptionDescription", - "attributionPartner", - ] - null_default_fields = [] - - serialized = handler(self) - - m = {} - - for n, f in type(self).model_fields.items(): - k = f.alias or n - val = serialized.get(k) - serialized.pop(k, None) - - optional_nullable = k in optional_fields and k in nullable_fields - is_set = ( - self.__pydantic_fields_set__.intersection({n}) - or k in null_default_fields - ) # pylint: disable=no-member - - if val is not None and val != UNSET_SENTINEL: - m[k] = val - elif val != UNSET_SENTINEL and ( - not k in optional_fields or (optional_nullable and is_set) - ): - m[k] = val - - return m - - -class PostUsersSignInDataResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - user_plex_account: NotRequired[PostUsersSignInDataUserPlexAccountTypedDict] - r"""Returns the user account data with a valid auth token""" - - -class PostUsersSignInDataResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - user_plex_account: Optional[PostUsersSignInDataUserPlexAccount] = None - r"""Returns the user account data with a valid auth token""" diff --git a/src/plex_api_client/models/operations/processsubscriptions.py b/src/plex_api_client/models/operations/processsubscriptions.py new file mode 100644 index 0000000..a47d372 --- /dev/null +++ b/src/plex_api_client/models/operations/processsubscriptions.py @@ -0,0 +1,30 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.types import BaseModel +from typing import Dict, List +from typing_extensions import TypedDict + + +class ProcessSubscriptionsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + + +class ProcessSubscriptionsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] diff --git a/src/plex_api_client/models/operations/refreshitemsmetadata.py b/src/plex_api_client/models/operations/refreshitemsmetadata.py new file mode 100644 index 0000000..b1b63c9 --- /dev/null +++ b/src/plex_api_client/models/operations/refreshitemsmetadata.py @@ -0,0 +1,262 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class RefreshItemsMetadataGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class RefreshItemsMetadataGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class RefreshItemsMetadataRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + agent: NotRequired[str] + mark_updated: NotRequired[components_boolint.BoolInt] + + +class RefreshItemsMetadataRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + agent: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + mark_updated: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="markUpdated"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + +class RefreshItemsMetadataResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class RefreshItemsMetadataResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/refreshplaylist.py b/src/plex_api_client/models/operations/refreshplaylist.py new file mode 100644 index 0000000..94e24ea --- /dev/null +++ b/src/plex_api_client/models/operations/refreshplaylist.py @@ -0,0 +1,279 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class RefreshPlaylistGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class RefreshPlaylistGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class Action(str, Enum): + r"""The action to perform for this item on this optimizer queue""" + + REPROCESS = "reprocess" + DISABLE = "disable" + ENABLE = "enable" + + +class RefreshPlaylistRequestTypedDict(TypedDict): + playlist_id: int + r"""The ID of the playlist""" + generator_id: int + r"""The generator item ID to act on""" + metadata_id: int + r"""The metadata item ID to act on""" + action: Action + r"""The action to perform for this item on this optimizer queue""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class RefreshPlaylistRequest(BaseModel): + playlist_id: Annotated[ + int, + pydantic.Field(alias="playlistId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the playlist""" + + generator_id: Annotated[ + int, + pydantic.Field(alias="generatorId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The generator item ID to act on""" + + metadata_id: Annotated[ + int, + pydantic.Field(alias="metadataId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The metadata item ID to act on""" + + action: Annotated[ + Action, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The action to perform for this item on this optimizer queue""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class RefreshPlaylistResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class RefreshPlaylistResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/refreshproviders.py b/src/plex_api_client/models/operations/refreshproviders.py new file mode 100644 index 0000000..5a79556 --- /dev/null +++ b/src/plex_api_client/models/operations/refreshproviders.py @@ -0,0 +1,26 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.types import BaseModel +from typing_extensions import TypedDict + + +class RefreshProvidersResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class RefreshProvidersResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/refreshsection.py b/src/plex_api_client/models/operations/refreshsection.py new file mode 100644 index 0000000..cc9a400 --- /dev/null +++ b/src/plex_api_client/models/operations/refreshsection.py @@ -0,0 +1,269 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class RefreshSectionGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class RefreshSectionGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class RefreshSectionRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + force: NotRequired[components_boolint.BoolInt] + r"""Whether the update of metadata and items should be performed even if modification dates indicate the items have not change""" + path: NotRequired[str] + r"""Restrict refresh to the specified path""" + + +class RefreshSectionRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + force: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether the update of metadata and items should be performed even if modification dates indicate the items have not change""" + + path: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Restrict refresh to the specified path""" + + +class RefreshSectionResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class RefreshSectionResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/refreshsectionsmetadata.py b/src/plex_api_client/models/operations/refreshsectionsmetadata.py new file mode 100644 index 0000000..b846431 --- /dev/null +++ b/src/plex_api_client/models/operations/refreshsectionsmetadata.py @@ -0,0 +1,244 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class RefreshSectionsMetadataGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class RefreshSectionsMetadataGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class RefreshSectionsMetadataRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + force: NotRequired[bool] + r"""Force refresh of metadata""" + + +class RefreshSectionsMetadataRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + force: Annotated[ + Optional[bool], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Force refresh of metadata""" + + +class RefreshSectionsMetadataResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class RefreshSectionsMetadataResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/reloadguide.py b/src/plex_api_client/models/operations/reloadguide.py new file mode 100644 index 0000000..cfccb41 --- /dev/null +++ b/src/plex_api_client/models/operations/reloadguide.py @@ -0,0 +1,248 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ReloadGuideGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ReloadGuideGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ReloadGuideRequestTypedDict(TypedDict): + dvr_id: int + r"""The ID of the DVR.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ReloadGuideRequest(BaseModel): + dvr_id: Annotated[ + int, + pydantic.Field(alias="dvrId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the DVR.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ReloadGuideResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + + +class ReloadGuideResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] diff --git a/src/plex_api_client/models/operations/removedevice.py b/src/plex_api_client/models/operations/removedevice.py new file mode 100644 index 0000000..04d3561 --- /dev/null +++ b/src/plex_api_client/models/operations/removedevice.py @@ -0,0 +1,314 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class RemoveDeviceGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class RemoveDeviceGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class RemoveDeviceRequestTypedDict(TypedDict): + device_id: int + r"""The ID of the device.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class RemoveDeviceRequest(BaseModel): + device_id: Annotated[ + int, + pydantic.Field(alias="deviceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the device.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class RemoveDeviceMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + message: NotRequired[str] + status: NotRequired[int] + + +class RemoveDeviceMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + message: Optional[str] = None + + status: Optional[int] = None + + +class RemoveDeviceResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[RemoveDeviceMediaContainerTypedDict] + + +class RemoveDeviceResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[RemoveDeviceMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class RemoveDeviceResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[RemoveDeviceResponseBodyTypedDict] + r"""OK""" + + +class RemoveDeviceResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[RemoveDeviceResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/removedevicefromdvr.py b/src/plex_api_client/models/operations/removedevicefromdvr.py new file mode 100644 index 0000000..fc7556b --- /dev/null +++ b/src/plex_api_client/models/operations/removedevicefromdvr.py @@ -0,0 +1,364 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + device as components_device, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class RemoveDeviceFromDVRGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class RemoveDeviceFromDVRGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class RemoveDeviceFromDVRRequestTypedDict(TypedDict): + dvr_id: int + r"""The ID of the DVR.""" + device_id: int + r"""The ID of the device to add.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class RemoveDeviceFromDVRRequest(BaseModel): + dvr_id: Annotated[ + int, + pydantic.Field(alias="dvrId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the DVR.""" + + device_id: Annotated[ + int, + pydantic.Field(alias="deviceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the device to add.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class RemoveDeviceFromDVRDVRsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + status: NotRequired[int] + r"""A status indicator. If present and non-zero, indicates an error""" + + +class RemoveDeviceFromDVRDVRsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + status: Optional[int] = None + r"""A status indicator. If present and non-zero, indicates an error""" + + +class RemoveDeviceFromDVRDVRTypedDict(TypedDict): + device: NotRequired[List[components_device.DeviceTypedDict]] + key: NotRequired[str] + language: NotRequired[str] + lineup: NotRequired[str] + uuid: NotRequired[str] + + +class RemoveDeviceFromDVRDVR(BaseModel): + device: Annotated[ + Optional[List[components_device.Device]], pydantic.Field(alias="Device") + ] = None + + key: Optional[str] = None + + language: Optional[str] = None + + lineup: Optional[str] = None + + uuid: Optional[str] = None + + +class RemoveDeviceFromDVRMediaContainerTypedDict(TypedDict): + media_container: NotRequired[RemoveDeviceFromDVRDVRsMediaContainerTypedDict] + dvr: NotRequired[List[RemoveDeviceFromDVRDVRTypedDict]] + + +class RemoveDeviceFromDVRMediaContainer(BaseModel): + media_container: Annotated[ + Optional[RemoveDeviceFromDVRDVRsMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + dvr: Annotated[ + Optional[List[RemoveDeviceFromDVRDVR]], pydantic.Field(alias="DVR") + ] = None + + +class RemoveDeviceFromDVRResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[RemoveDeviceFromDVRMediaContainerTypedDict] + + +class RemoveDeviceFromDVRResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[RemoveDeviceFromDVRMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class RemoveDeviceFromDVRResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[RemoveDeviceFromDVRResponseBodyTypedDict] + r"""OK""" + + +class RemoveDeviceFromDVRResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[RemoveDeviceFromDVRResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/removedownloadqueueitems.py b/src/plex_api_client/models/operations/removedownloadqueueitems.py new file mode 100644 index 0000000..22be2bd --- /dev/null +++ b/src/plex_api_client/models/operations/removedownloadqueueitems.py @@ -0,0 +1,254 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class RemoveDownloadQueueItemsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class RemoveDownloadQueueItemsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class RemoveDownloadQueueItemsRequestTypedDict(TypedDict): + queue_id: int + r"""The queue id""" + item_id: List[int] + r"""The item id""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class RemoveDownloadQueueItemsRequest(BaseModel): + queue_id: Annotated[ + int, + pydantic.Field(alias="queueId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The queue id""" + + item_id: Annotated[ + List[int], + pydantic.Field(alias="itemId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The item id""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class RemoveDownloadQueueItemsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class RemoveDownloadQueueItemsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/reordersubscription.py b/src/plex_api_client/models/operations/reordersubscription.py new file mode 100644 index 0000000..7fff60d --- /dev/null +++ b/src/plex_api_client/models/operations/reordersubscription.py @@ -0,0 +1,268 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithsubscription as components_mediacontainerwithsubscription, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ReorderSubscriptionGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ReorderSubscriptionGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ReorderSubscriptionRequestTypedDict(TypedDict): + subscription_id: int + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + after: NotRequired[int] + r"""The subscription to move this sub after. If missing will insert at the beginning of the list""" + + +class ReorderSubscriptionRequest(BaseModel): + subscription_id: Annotated[ + int, + pydantic.Field(alias="subscriptionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + after: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The subscription to move this sub after. If missing will insert at the beginning of the list""" + + +class ReorderSubscriptionResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_subscription: NotRequired[ + components_mediacontainerwithsubscription.MediaContainerWithSubscriptionTypedDict + ] + r"""OK""" + + +class ReorderSubscriptionResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_subscription: Optional[ + components_mediacontainerwithsubscription.MediaContainerWithSubscription + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/report.py b/src/plex_api_client/models/operations/report.py new file mode 100644 index 0000000..66214fc --- /dev/null +++ b/src/plex_api_client/models/operations/report.py @@ -0,0 +1,701 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Any, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ReportGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ReportGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class State(str, Enum): + r"""The current state of the media.""" + + STOPPED = "stopped" + BUFFERING = "buffering" + PLAYING = "playing" + PAUSED = "paused" + + +class ReportRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + key: NotRequired[str] + r"""The details key for the item.""" + rating_key: NotRequired[str] + r"""The rating key attribute for the item.""" + state: NotRequired[State] + r"""The current state of the media.""" + play_queue_item_id: NotRequired[str] + r"""If playing media from a play queue, the play queue's ID.""" + time: NotRequired[int] + r"""The current time offset of playback in ms.""" + duration: NotRequired[int] + r"""The total duration of the item in ms.""" + continuing: NotRequired[components_boolint.BoolInt] + r"""When state is `stopped`, a flag indicating whether or not the client is going to continue playing anothe item.""" + updated: NotRequired[int] + r"""Used when a sync client comes online and is syncing media timelines, holds the time at which the playback state was last updated.""" + offline: NotRequired[components_boolint.BoolInt] + r"""Also used by sync clients, used to indicate that a timeline is being synced from being offline, as opposed to being \"live\".""" + time_to_first_frame: NotRequired[int] + r"""Time in seconds till first frame is displayed. Sent only on the first playing timeline request.""" + time_stalled: NotRequired[int] + r"""Time in seconds spent buffering since last request.""" + bandwidth: NotRequired[int] + r"""Bandwidth in kbps as estimated by the client.""" + buffered_time: NotRequired[int] + r"""Amount of time in seconds buffered by client. Omit if computed by `bufferedSize` below.""" + buffered_size: NotRequired[int] + r"""Size in kilobytes of data buffered by client. Omit if computed by `bufferedTime` above""" + x_plex_session_identifier: NotRequired[str] + r"""Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)""" + + +class ReportRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + key: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The details key for the item.""" + + rating_key: Annotated[ + Optional[str], + pydantic.Field(alias="ratingKey"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The rating key attribute for the item.""" + + state: Annotated[ + Optional[State], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The current state of the media.""" + + play_queue_item_id: Annotated[ + Optional[str], + pydantic.Field(alias="playQueueItemID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""If playing media from a play queue, the play queue's ID.""" + + time: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The current time offset of playback in ms.""" + + duration: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The total duration of the item in ms.""" + + continuing: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""When state is `stopped`, a flag indicating whether or not the client is going to continue playing anothe item.""" + + updated: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Used when a sync client comes online and is syncing media timelines, holds the time at which the playback state was last updated.""" + + offline: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Also used by sync clients, used to indicate that a timeline is being synced from being offline, as opposed to being \"live\".""" + + time_to_first_frame: Annotated[ + Optional[int], + pydantic.Field(alias="timeToFirstFrame"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Time in seconds till first frame is displayed. Sent only on the first playing timeline request.""" + + time_stalled: Annotated[ + Optional[int], + pydantic.Field(alias="timeStalled"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Time in seconds spent buffering since last request.""" + + bandwidth: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Bandwidth in kbps as estimated by the client.""" + + buffered_time: Annotated[ + Optional[int], + pydantic.Field(alias="bufferedTime"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Amount of time in seconds buffered by client. Omit if computed by `bufferedSize` below.""" + + buffered_size: Annotated[ + Optional[int], + pydantic.Field(alias="bufferedSize"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Size in kilobytes of data buffered by client. Omit if computed by `bufferedTime` above""" + + x_plex_session_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Session-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)""" + + +class BandwidthTypedDict(TypedDict): + bandwidth: NotRequired[int] + r"""The bandwidth at this time in kbps""" + resolution: NotRequired[str] + r"""The user-friendly resolution at this time""" + time: NotRequired[int] + r"""Media playback time where this bandwidth started""" + + +class Bandwidth(BaseModel): + bandwidth: Optional[int] = None + r"""The bandwidth at this time in kbps""" + + resolution: Optional[str] = None + r"""The user-friendly resolution at this time""" + + time: Optional[int] = None + r"""Media playback time where this bandwidth started""" + + +class BandwidthsTypedDict(TypedDict): + r"""A list of media times and bandwidths when trascoding is using with auto adjustment of bandwidth""" + + bandwidth: NotRequired[List[BandwidthTypedDict]] + + +class Bandwidths(BaseModel): + r"""A list of media times and bandwidths when trascoding is using with auto adjustment of bandwidth""" + + bandwidth: Annotated[ + Optional[List[Bandwidth]], pydantic.Field(alias="Bandwidth") + ] = None + + +class MediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + allow_camera_upload: NotRequired[bool] + allow_channel_access: NotRequired[bool] + allow_media_deletion: NotRequired[bool] + allow_sharing: NotRequired[bool] + allow_sync: NotRequired[bool] + allow_tuners: NotRequired[bool] + background_processing: NotRequired[bool] + certificate: NotRequired[bool] + companion_proxy: NotRequired[bool] + country_code: NotRequired[str] + diagnostics: NotRequired[str] + event_stream: NotRequired[bool] + friendly_name: NotRequired[str] + hub_search: NotRequired[bool] + item_clusters: NotRequired[bool] + livetv: NotRequired[int] + machine_identifier: NotRequired[Any] + media_providers: NotRequired[bool] + multiuser: NotRequired[bool] + music_analysis: NotRequired[int] + my_plex: NotRequired[bool] + my_plex_mapping_state: NotRequired[Any] + my_plex_signin_state: NotRequired[Any] + my_plex_subscription: NotRequired[bool] + my_plex_username: NotRequired[str] + offline_transcode: NotRequired[Any] + owner_features: NotRequired[str] + r"""A comma-separated list of features which are enabled for the server owner""" + platform: NotRequired[str] + platform_version: NotRequired[str] + plugin_host: NotRequired[bool] + push_notifications: NotRequired[bool] + read_only_libraries: NotRequired[bool] + streaming_brain_abr_version: NotRequired[int] + streaming_brain_version: NotRequired[int] + sync: NotRequired[bool] + transcoder_active_video_sessions: NotRequired[int] + transcoder_audio: NotRequired[bool] + transcoder_lyrics: NotRequired[bool] + transcoder_photo: NotRequired[bool] + transcoder_subtitles: NotRequired[bool] + transcoder_video: NotRequired[bool] + transcoder_video_bitrates: NotRequired[Any] + r"""The suggested video quality bitrates to present to the user""" + transcoder_video_qualities: NotRequired[str] + transcoder_video_resolutions: NotRequired[Any] + r"""The suggested video resolutions to the above quality bitrates""" + updated_at: NotRequired[int] + updater: NotRequired[bool] + version: NotRequired[str] + voice_search: NotRequired[bool] + bandwidths: NotRequired[BandwidthsTypedDict] + r"""A list of media times and bandwidths when trascoding is using with auto adjustment of bandwidth""" + termination_code: NotRequired[int] + r"""A code describing why the session was terminated by the server.""" + termination_text: NotRequired[str] + r"""A user friendly and localized text describing why the session was terminated by the server.""" + + +class MediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + allow_camera_upload: Annotated[ + Optional[bool], pydantic.Field(alias="allowCameraUpload") + ] = None + + allow_channel_access: Annotated[ + Optional[bool], pydantic.Field(alias="allowChannelAccess") + ] = None + + allow_media_deletion: Annotated[ + Optional[bool], pydantic.Field(alias="allowMediaDeletion") + ] = None + + allow_sharing: Annotated[Optional[bool], pydantic.Field(alias="allowSharing")] = ( + None + ) + + allow_sync: Annotated[Optional[bool], pydantic.Field(alias="allowSync")] = None + + allow_tuners: Annotated[Optional[bool], pydantic.Field(alias="allowTuners")] = None + + background_processing: Annotated[ + Optional[bool], pydantic.Field(alias="backgroundProcessing") + ] = None + + certificate: Optional[bool] = None + + companion_proxy: Annotated[ + Optional[bool], pydantic.Field(alias="companionProxy") + ] = None + + country_code: Annotated[Optional[str], pydantic.Field(alias="countryCode")] = None + + diagnostics: Optional[str] = None + + event_stream: Annotated[Optional[bool], pydantic.Field(alias="eventStream")] = None + + friendly_name: Annotated[Optional[str], pydantic.Field(alias="friendlyName")] = None + + hub_search: Annotated[Optional[bool], pydantic.Field(alias="hubSearch")] = None + + item_clusters: Annotated[Optional[bool], pydantic.Field(alias="itemClusters")] = ( + None + ) + + livetv: Optional[int] = None + + machine_identifier: Annotated[ + Optional[Any], pydantic.Field(alias="machineIdentifier") + ] = None + + media_providers: Annotated[ + Optional[bool], pydantic.Field(alias="mediaProviders") + ] = None + + multiuser: Optional[bool] = None + + music_analysis: Annotated[Optional[int], pydantic.Field(alias="musicAnalysis")] = ( + None + ) + + my_plex: Annotated[Optional[bool], pydantic.Field(alias="myPlex")] = None + + my_plex_mapping_state: Annotated[ + Optional[Any], pydantic.Field(alias="myPlexMappingState") + ] = None + + my_plex_signin_state: Annotated[ + Optional[Any], pydantic.Field(alias="myPlexSigninState") + ] = None + + my_plex_subscription: Annotated[ + Optional[bool], pydantic.Field(alias="myPlexSubscription") + ] = None + + my_plex_username: Annotated[ + Optional[str], pydantic.Field(alias="myPlexUsername") + ] = None + + offline_transcode: Annotated[ + Optional[Any], pydantic.Field(alias="offlineTranscode") + ] = None + + owner_features: Annotated[Optional[str], pydantic.Field(alias="ownerFeatures")] = ( + None + ) + r"""A comma-separated list of features which are enabled for the server owner""" + + platform: Optional[str] = None + + platform_version: Annotated[ + Optional[str], pydantic.Field(alias="platformVersion") + ] = None + + plugin_host: Annotated[Optional[bool], pydantic.Field(alias="pluginHost")] = None + + push_notifications: Annotated[ + Optional[bool], pydantic.Field(alias="pushNotifications") + ] = None + + read_only_libraries: Annotated[ + Optional[bool], pydantic.Field(alias="readOnlyLibraries") + ] = None + + streaming_brain_abr_version: Annotated[ + Optional[int], pydantic.Field(alias="streamingBrainABRVersion") + ] = None + + streaming_brain_version: Annotated[ + Optional[int], pydantic.Field(alias="streamingBrainVersion") + ] = None + + sync: Optional[bool] = None + + transcoder_active_video_sessions: Annotated[ + Optional[int], pydantic.Field(alias="transcoderActiveVideoSessions") + ] = None + + transcoder_audio: Annotated[ + Optional[bool], pydantic.Field(alias="transcoderAudio") + ] = None + + transcoder_lyrics: Annotated[ + Optional[bool], pydantic.Field(alias="transcoderLyrics") + ] = None + + transcoder_photo: Annotated[ + Optional[bool], pydantic.Field(alias="transcoderPhoto") + ] = None + + transcoder_subtitles: Annotated[ + Optional[bool], pydantic.Field(alias="transcoderSubtitles") + ] = None + + transcoder_video: Annotated[ + Optional[bool], pydantic.Field(alias="transcoderVideo") + ] = None + + transcoder_video_bitrates: Annotated[ + Optional[Any], pydantic.Field(alias="transcoderVideoBitrates") + ] = None + r"""The suggested video quality bitrates to present to the user""" + + transcoder_video_qualities: Annotated[ + Optional[str], pydantic.Field(alias="transcoderVideoQualities") + ] = None + + transcoder_video_resolutions: Annotated[ + Optional[Any], pydantic.Field(alias="transcoderVideoResolutions") + ] = None + r"""The suggested video resolutions to the above quality bitrates""" + + updated_at: Annotated[Optional[int], pydantic.Field(alias="updatedAt")] = None + + updater: Optional[bool] = None + + version: Optional[str] = None + + voice_search: Annotated[Optional[bool], pydantic.Field(alias="voiceSearch")] = None + + bandwidths: Annotated[Optional[Bandwidths], pydantic.Field(alias="Bandwidths")] = ( + None + ) + r"""A list of media times and bandwidths when trascoding is using with auto adjustment of bandwidth""" + + termination_code: Annotated[ + Optional[int], pydantic.Field(alias="terminationCode") + ] = None + r"""A code describing why the session was terminated by the server.""" + + termination_text: Annotated[ + Optional[str], pydantic.Field(alias="terminationText") + ] = None + r"""A user friendly and localized text describing why the session was terminated by the server.""" + + +class ReportResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[MediaContainerTypedDict] + + +class ReportResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[MediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class ReportResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + object: NotRequired[ReportResponseBodyTypedDict] + r"""OK""" + + +class ReportResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + object: Optional[ReportResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/resetplayqueue.py b/src/plex_api_client/models/operations/resetplayqueue.py new file mode 100644 index 0000000..feeef79 --- /dev/null +++ b/src/plex_api_client/models/operations/resetplayqueue.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithplaylistmetadata as components_mediacontainerwithplaylistmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ResetPlayQueueGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ResetPlayQueueGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ResetPlayQueueRequestTypedDict(TypedDict): + play_queue_id: int + r"""The ID of the play queue.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ResetPlayQueueRequest(BaseModel): + play_queue_id: Annotated[ + int, + pydantic.Field(alias="playQueueId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the play queue.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ResetPlayQueueResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_playlist_metadata: NotRequired[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadataTypedDict + ] + r"""OK""" + + +class ResetPlayQueueResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_playlist_metadata: Optional[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/resetsectiondefaults.py b/src/plex_api_client/models/operations/resetsectiondefaults.py new file mode 100644 index 0000000..4290c56 --- /dev/null +++ b/src/plex_api_client/models/operations/resetsectiondefaults.py @@ -0,0 +1,245 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ResetSectionDefaultsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ResetSectionDefaultsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ResetSectionDefaultsRequestTypedDict(TypedDict): + section_id: int + r"""The section ID for the hubs to reorder""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ResetSectionDefaultsRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The section ID for the hubs to reorder""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ResetSectionDefaultsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class ResetSectionDefaultsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/restartprocessingdownloadqueueitems.py b/src/plex_api_client/models/operations/restartprocessingdownloadqueueitems.py new file mode 100644 index 0000000..26504e1 --- /dev/null +++ b/src/plex_api_client/models/operations/restartprocessingdownloadqueueitems.py @@ -0,0 +1,254 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class RestartProcessingDownloadQueueItemsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class RestartProcessingDownloadQueueItemsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class RestartProcessingDownloadQueueItemsRequestTypedDict(TypedDict): + queue_id: int + r"""The queue id""" + item_id: List[int] + r"""The item ids""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class RestartProcessingDownloadQueueItemsRequest(BaseModel): + queue_id: Annotated[ + int, + pydantic.Field(alias="queueId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The queue id""" + + item_id: Annotated[ + List[int], + pydantic.Field(alias="itemId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The item ids""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class RestartProcessingDownloadQueueItemsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class RestartProcessingDownloadQueueItemsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/scan.py b/src/plex_api_client/models/operations/scan.py new file mode 100644 index 0000000..74cbc4c --- /dev/null +++ b/src/plex_api_client/models/operations/scan.py @@ -0,0 +1,273 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithdevice as components_mediacontainerwithdevice, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ScanGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ScanGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ScanRequestTypedDict(TypedDict): + device_id: int + r"""The ID of the device.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + source: NotRequired[str] + r"""A valid source for the scan""" + + +class ScanRequest(BaseModel): + device_id: Annotated[ + int, + pydantic.Field(alias="deviceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the device.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + source: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""A valid source for the scan""" + + +class ScanResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_device: NotRequired[ + components_mediacontainerwithdevice.MediaContainerWithDeviceTypedDict + ] + r"""OK""" + + +class ScanResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_device: Optional[ + components_mediacontainerwithdevice.MediaContainerWithDevice + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/searchhubs.py b/src/plex_api_client/models/operations/searchhubs.py new file mode 100644 index 0000000..376f329 --- /dev/null +++ b/src/plex_api_client/models/operations/searchhubs.py @@ -0,0 +1,331 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + hub as components_hub, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SearchHubsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class SearchHubsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class SearchHubsRequestTypedDict(TypedDict): + query: str + r"""The query term""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + section_id: NotRequired[int] + r"""This gives context to the search, and can result in re-ordering of search result hubs.""" + limit: NotRequired[int] + r"""The number of items to return per hub. 3 if not specified""" + + +class SearchHubsRequest(BaseModel): + query: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The query term""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + section_id: Annotated[ + Optional[int], + pydantic.Field(alias="sectionId"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""This gives context to the search, and can result in re-ordering of search result hubs.""" + + limit: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The number of items to return per hub. 3 if not specified""" + + +class SearchHubsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + hub: NotRequired[List[components_hub.HubTypedDict]] + + +class SearchHubsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + hub: Annotated[Optional[List[components_hub.Hub]], pydantic.Field(alias="Hub")] = ( + None + ) + + +class SearchHubsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[SearchHubsMediaContainerTypedDict] + + +class SearchHubsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[SearchHubsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class SearchHubsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[SearchHubsResponseBodyTypedDict] + r"""OK""" + + +class SearchHubsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[SearchHubsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/setchannelmap.py b/src/plex_api_client/models/operations/setchannelmap.py new file mode 100644 index 0000000..9fba03c --- /dev/null +++ b/src/plex_api_client/models/operations/setchannelmap.py @@ -0,0 +1,305 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithdevice as components_mediacontainerwithdevice, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SetChannelmapGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class SetChannelmapGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ChannelMappingTypedDict(TypedDict): + r"""The mapping of changes, passed as a map of device channel to lineup VCN.""" + + +class ChannelMapping(BaseModel): + r"""The mapping of changes, passed as a map of device channel to lineup VCN.""" + + +class ChannelMappingByKeyTypedDict(TypedDict): + r"""The mapping of changes, passed as a map of device channel to lineup key.""" + + +class ChannelMappingByKey(BaseModel): + r"""The mapping of changes, passed as a map of device channel to lineup key.""" + + +class SetChannelmapRequestTypedDict(TypedDict): + device_id: int + r"""The ID of the device.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + channel_mapping: NotRequired[ChannelMappingTypedDict] + r"""The mapping of changes, passed as a map of device channel to lineup VCN.""" + channel_mapping_by_key: NotRequired[ChannelMappingByKeyTypedDict] + r"""The mapping of changes, passed as a map of device channel to lineup key.""" + channels_enabled: NotRequired[List[str]] + r"""The channels which are enabled.""" + + +class SetChannelmapRequest(BaseModel): + device_id: Annotated[ + int, + pydantic.Field(alias="deviceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the device.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + channel_mapping: Annotated[ + Optional[ChannelMapping], + pydantic.Field(alias="channelMapping"), + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""The mapping of changes, passed as a map of device channel to lineup VCN.""" + + channel_mapping_by_key: Annotated[ + Optional[ChannelMappingByKey], + pydantic.Field(alias="channelMappingByKey"), + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""The mapping of changes, passed as a map of device channel to lineup key.""" + + channels_enabled: Annotated[ + Optional[List[str]], + pydantic.Field(alias="channelsEnabled"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The channels which are enabled.""" + + +class SetChannelmapResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_device: NotRequired[ + components_mediacontainerwithdevice.MediaContainerWithDeviceTypedDict + ] + r"""OK""" + + +class SetChannelmapResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_device: Optional[ + components_mediacontainerwithdevice.MediaContainerWithDevice + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/setdevicepreferences.py b/src/plex_api_client/models/operations/setdevicepreferences.py new file mode 100644 index 0000000..629b6ae --- /dev/null +++ b/src/plex_api_client/models/operations/setdevicepreferences.py @@ -0,0 +1,258 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SetDevicePreferencesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class SetDevicePreferencesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class SetDevicePreferencesRequestTypedDict(TypedDict): + device_id: int + r"""The ID of the device.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + name: NotRequired[str] + r"""The preference names and values.""" + + +class SetDevicePreferencesRequest(BaseModel): + device_id: Annotated[ + int, + pydantic.Field(alias="deviceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the device.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + name: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The preference names and values.""" + + +class SetDevicePreferencesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class SetDevicePreferencesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/setdvrpreferences.py b/src/plex_api_client/models/operations/setdvrpreferences.py new file mode 100644 index 0000000..51e5684 --- /dev/null +++ b/src/plex_api_client/models/operations/setdvrpreferences.py @@ -0,0 +1,368 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + device as components_device, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SetDVRPreferencesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class SetDVRPreferencesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class SetDVRPreferencesRequestTypedDict(TypedDict): + dvr_id: int + r"""The ID of the DVR.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + name: NotRequired[str] + r"""Set the `name` preference to the provided value""" + + +class SetDVRPreferencesRequest(BaseModel): + dvr_id: Annotated[ + int, + pydantic.Field(alias="dvrId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the DVR.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + name: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Set the `name` preference to the provided value""" + + +class SetDVRPreferencesDVRsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + status: NotRequired[int] + r"""A status indicator. If present and non-zero, indicates an error""" + + +class SetDVRPreferencesDVRsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + status: Optional[int] = None + r"""A status indicator. If present and non-zero, indicates an error""" + + +class SetDVRPreferencesDVRTypedDict(TypedDict): + device: NotRequired[List[components_device.DeviceTypedDict]] + key: NotRequired[str] + language: NotRequired[str] + lineup: NotRequired[str] + uuid: NotRequired[str] + + +class SetDVRPreferencesDVR(BaseModel): + device: Annotated[ + Optional[List[components_device.Device]], pydantic.Field(alias="Device") + ] = None + + key: Optional[str] = None + + language: Optional[str] = None + + lineup: Optional[str] = None + + uuid: Optional[str] = None + + +class SetDVRPreferencesMediaContainerTypedDict(TypedDict): + media_container: NotRequired[SetDVRPreferencesDVRsMediaContainerTypedDict] + dvr: NotRequired[List[SetDVRPreferencesDVRTypedDict]] + + +class SetDVRPreferencesMediaContainer(BaseModel): + media_container: Annotated[ + Optional[SetDVRPreferencesDVRsMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + dvr: Annotated[ + Optional[List[SetDVRPreferencesDVR]], pydantic.Field(alias="DVR") + ] = None + + +class SetDVRPreferencesResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[SetDVRPreferencesMediaContainerTypedDict] + + +class SetDVRPreferencesResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[SetDVRPreferencesMediaContainer], + pydantic.Field(alias="MediaContainer"), + ] = None + + +class SetDVRPreferencesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[SetDVRPreferencesResponseBodyTypedDict] + r"""OK""" + + +class SetDVRPreferencesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[SetDVRPreferencesResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/setitemartwork.py b/src/plex_api_client/models/operations/setitemartwork.py new file mode 100644 index 0000000..abd02b2 --- /dev/null +++ b/src/plex_api_client/models/operations/setitemartwork.py @@ -0,0 +1,269 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SetItemArtworkGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class SetItemArtworkGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class Element(str, Enum): + THUMB = "thumb" + ART = "art" + CLEAR_LOGO = "clearLogo" + BANNER = "banner" + POSTER = "poster" + THEME = "theme" + + +class SetItemArtworkRequestTypedDict(TypedDict): + ids: str + element: Element + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + url: NotRequired[str] + r"""The url of the new asset. If not provided, the binary of the asset must be provided in the post body.""" + + +class SetItemArtworkRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + element: Annotated[ + Element, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + url: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The url of the new asset. If not provided, the binary of the asset must be provided in the post body.""" + + +class SetItemArtworkResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class SetItemArtworkResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/setitempreferences.py b/src/plex_api_client/models/operations/setitempreferences.py new file mode 100644 index 0000000..ab33c94 --- /dev/null +++ b/src/plex_api_client/models/operations/setitempreferences.py @@ -0,0 +1,260 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SetItemPreferencesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class SetItemPreferencesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class QueryParamArgsTypedDict(TypedDict): + pass + + +class QueryParamArgs(BaseModel): + pass + + +class SetItemPreferencesRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + args: NotRequired[QueryParamArgsTypedDict] + + +class SetItemPreferencesRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + args: Annotated[ + Optional[QueryParamArgs], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + +class SetItemPreferencesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class SetItemPreferencesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/setpreferences.py b/src/plex_api_client/models/operations/setpreferences.py new file mode 100644 index 0000000..4d4b8d6 --- /dev/null +++ b/src/plex_api_client/models/operations/setpreferences.py @@ -0,0 +1,249 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SetPreferencesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class SetPreferencesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class PrefsTypedDict(TypedDict): + pass + + +class Prefs(BaseModel): + pass + + +class SetPreferencesRequestTypedDict(TypedDict): + prefs: PrefsTypedDict + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class SetPreferencesRequest(BaseModel): + prefs: Annotated[ + Prefs, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class SetPreferencesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class SetPreferencesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/setrating.py b/src/plex_api_client/models/operations/setrating.py new file mode 100644 index 0000000..9221485 --- /dev/null +++ b/src/plex_api_client/models/operations/setrating.py @@ -0,0 +1,266 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SetRatingGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class SetRatingGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class SetRatingRequestTypedDict(TypedDict): + identifier: str + r"""The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library`""" + key: str + r"""The key of the item to rate. This is the `ratingKey` found in metadata items""" + rating: float + r"""The rating to give the item.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + rated_at: NotRequired[int] + r"""The time when the rating occurred. If not present, interpreted as now.""" + + +class SetRatingRequest(BaseModel): + identifier: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library`""" + + key: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The key of the item to rate. This is the `ratingKey` found in metadata items""" + + rating: Annotated[ + float, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The rating to give the item.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + rated_at: Annotated[ + Optional[int], + pydantic.Field(alias="ratedAt"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The time when the rating occurred. If not present, interpreted as now.""" + + +class SetRatingResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class SetRatingResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/setsectionpreferences.py b/src/plex_api_client/models/operations/setsectionpreferences.py new file mode 100644 index 0000000..112e023 --- /dev/null +++ b/src/plex_api_client/models/operations/setsectionpreferences.py @@ -0,0 +1,264 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SetSectionPreferencesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class SetSectionPreferencesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class SetSectionPreferencesQueryParamPrefsTypedDict(TypedDict): + pass + + +class SetSectionPreferencesQueryParamPrefs(BaseModel): + pass + + +class SetSectionPreferencesRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + prefs: SetSectionPreferencesQueryParamPrefsTypedDict + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class SetSectionPreferencesRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + prefs: Annotated[ + SetSectionPreferencesQueryParamPrefs, + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class SetSectionPreferencesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class SetSectionPreferencesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/setstreamoffset.py b/src/plex_api_client/models/operations/setstreamoffset.py new file mode 100644 index 0000000..a12b3c7 --- /dev/null +++ b/src/plex_api_client/models/operations/setstreamoffset.py @@ -0,0 +1,265 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SetStreamOffsetGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class SetStreamOffsetGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class SetStreamOffsetRequestTypedDict(TypedDict): + stream_id: int + r"""The id of the stream""" + ext: str + r"""This is not a part of this endpoint but documented here to satisfy OpenAPI""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + offset: NotRequired[int] + r"""The offest in ms""" + + +class SetStreamOffsetRequest(BaseModel): + stream_id: Annotated[ + int, + pydantic.Field(alias="streamId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The id of the stream""" + + ext: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""This is not a part of this endpoint but documented here to satisfy OpenAPI""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + offset: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The offest in ms""" + + +class SetStreamOffsetResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class SetStreamOffsetResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/setstreamselection.py b/src/plex_api_client/models/operations/setstreamselection.py new file mode 100644 index 0000000..879e911 --- /dev/null +++ b/src/plex_api_client/models/operations/setstreamselection.py @@ -0,0 +1,280 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SetStreamSelectionGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class SetStreamSelectionGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class SetStreamSelectionRequestTypedDict(TypedDict): + part_id: int + r"""The id of the part to select streams on""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + audio_stream_id: NotRequired[int] + r"""The id of the audio stream to select in this part""" + subtitle_stream_id: NotRequired[int] + r"""The id of the subtitle stream to select in this part. Specify 0 to select no subtitle""" + all_parts: NotRequired[components_boolint.BoolInt] + r"""Perform the same for all parts of this media selecting similar streams in each""" + + +class SetStreamSelectionRequest(BaseModel): + part_id: Annotated[ + int, + pydantic.Field(alias="partId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The id of the part to select streams on""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + audio_stream_id: Annotated[ + Optional[int], + pydantic.Field(alias="audioStreamID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The id of the audio stream to select in this part""" + + subtitle_stream_id: Annotated[ + Optional[int], + pydantic.Field(alias="subtitleStreamID"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The id of the subtitle stream to select in this part. Specify 0 to select no subtitle""" + + all_parts: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="allParts"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Perform the same for all parts of this media selecting similar streams in each""" + + +class SetStreamSelectionResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class SetStreamSelectionResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/shuffle.py b/src/plex_api_client/models/operations/shuffle.py new file mode 100644 index 0000000..da9f0d0 --- /dev/null +++ b/src/plex_api_client/models/operations/shuffle.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithplaylistmetadata as components_mediacontainerwithplaylistmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ShuffleGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ShuffleGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ShuffleRequestTypedDict(TypedDict): + play_queue_id: int + r"""The ID of the play queue.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class ShuffleRequest(BaseModel): + play_queue_id: Annotated[ + int, + pydantic.Field(alias="playQueueId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the play queue.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class ShuffleResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_playlist_metadata: NotRequired[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadataTypedDict + ] + r"""OK""" + + +class ShuffleResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_playlist_metadata: Optional[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/splititem.py b/src/plex_api_client/models/operations/splititem.py new file mode 100644 index 0000000..b95df45 --- /dev/null +++ b/src/plex_api_client/models/operations/splititem.py @@ -0,0 +1,241 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SplitItemGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class SplitItemGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class SplitItemRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class SplitItemRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class SplitItemResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class SplitItemResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/startalltasks.py b/src/plex_api_client/models/operations/startalltasks.py deleted file mode 100644 index f7a2b1f..0000000 --- a/src/plex_api_client/models/operations/startalltasks.py +++ /dev/null @@ -1,26 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from typing_extensions import TypedDict - - -class StartAllTasksResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class StartAllTasksResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/startanalysis.py b/src/plex_api_client/models/operations/startanalysis.py new file mode 100644 index 0000000..9074af7 --- /dev/null +++ b/src/plex_api_client/models/operations/startanalysis.py @@ -0,0 +1,245 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class StartAnalysisGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class StartAnalysisGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class StartAnalysisRequestTypedDict(TypedDict): + section_id: int + r"""Section identifier""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class StartAnalysisRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Section identifier""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class StartAnalysisResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class StartAnalysisResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/startbifgeneration.py b/src/plex_api_client/models/operations/startbifgeneration.py new file mode 100644 index 0000000..cf93681 --- /dev/null +++ b/src/plex_api_client/models/operations/startbifgeneration.py @@ -0,0 +1,255 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class StartBifGenerationGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class StartBifGenerationGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class StartBifGenerationRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + force: NotRequired[components_boolint.BoolInt] + + +class StartBifGenerationRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + force: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + +class StartBifGenerationResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class StartBifGenerationResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/starttask.py b/src/plex_api_client/models/operations/starttask.py index a67a3df..725814a 100644 --- a/src/plex_api_client/models/operations/starttask.py +++ b/src/plex_api_client/models/operations/starttask.py @@ -3,27 +3,138 @@ from __future__ import annotations from enum import Enum import httpx -from plex_api_client import utils +from plex_api_client.models.components import accepts as components_accepts from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, PathParamMetadata, validate_open_enum +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic -from pydantic.functional_validators import PlainValidator -from typing_extensions import Annotated, TypedDict +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict -class TaskName(str, Enum, metaclass=utils.OpenEnumMeta): - r"""the name of the task to be started.""" +class StartTaskGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + +class StartTaskGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class PathParamTask(str, Enum): + r"""The task name""" + + AUTOMATIC_UPDATES = "AutomaticUpdates" BACKUP_DATABASE = "BackupDatabase" - BUILD_GRACENOTE_COLLECTIONS = "BuildGracenoteCollections" - CHECK_FOR_UPDATES = "CheckForUpdates" + BUTLER_TASK_GENERATE_AD_MARKERS = "ButlerTaskGenerateAdMarkers" + BUTLER_TASK_GENERATE_CREDITS_MARKERS = "ButlerTaskGenerateCreditsMarkers" + BUTLER_TASK_GENERATE_INTRO_MARKERS = "ButlerTaskGenerateIntroMarkers" + BUTLER_TASK_GENERATE_VOICE_ACTIVITY = "ButlerTaskGenerateVoiceActivity" CLEAN_OLD_BUNDLES = "CleanOldBundles" CLEAN_OLD_CACHE_FILES = "CleanOldCacheFiles" DEEP_MEDIA_ANALYSIS = "DeepMediaAnalysis" - GENERATE_AUTO_TAGS = "GenerateAutoTags" + GARBAGE_COLLECT_BLOBS = "GarbageCollectBlobs" + GARBAGE_COLLECT_LIBRARY_MEDIA = "GarbageCollectLibraryMedia" + GENERATE_BLUR_HASHES = "GenerateBlurHashes" GENERATE_CHAPTER_THUMBS = "GenerateChapterThumbs" GENERATE_MEDIA_INDEX_FILES = "GenerateMediaIndexFiles" + LOUDNESS_ANALYSIS = "LoudnessAnalysis" + MUSIC_ANALYSIS = "MusicAnalysis" OPTIMIZE_DATABASE = "OptimizeDatabase" + REFRESH_EPG_GUIDES = "RefreshEpgGuides" REFRESH_LIBRARIES = "RefreshLibraries" REFRESH_LOCAL_MEDIA = "RefreshLocalMedia" REFRESH_PERIODIC_METADATA = "RefreshPeriodicMetadata" @@ -31,17 +142,114 @@ class TaskName(str, Enum, metaclass=utils.OpenEnumMeta): class StartTaskRequestTypedDict(TypedDict): - task_name: TaskName - r"""the name of the task to be started.""" + task: PathParamTask + r"""The task name""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" class StartTaskRequest(BaseModel): - task_name: Annotated[ - Annotated[TaskName, PlainValidator(validate_open_enum(False))], - pydantic.Field(alias="taskName"), + task: Annotated[ + PathParamTask, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] - r"""the name of the task to be started.""" + r"""The task name""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" class StartTaskResponseTypedDict(TypedDict): diff --git a/src/plex_api_client/models/operations/starttasks.py b/src/plex_api_client/models/operations/starttasks.py new file mode 100644 index 0000000..54cdca1 --- /dev/null +++ b/src/plex_api_client/models/operations/starttasks.py @@ -0,0 +1,26 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.types import BaseModel +from typing_extensions import TypedDict + + +class StartTasksResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class StartTasksResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/starttranscodesession.py b/src/plex_api_client/models/operations/starttranscodesession.py new file mode 100644 index 0000000..3f0fbbe --- /dev/null +++ b/src/plex_api_client/models/operations/starttranscodesession.py @@ -0,0 +1,584 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + advancedsubtitles as components_advancedsubtitles, + boolint as components_boolint, + transcodetype as components_transcodetype, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class StartTranscodeSessionGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class StartTranscodeSessionGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class Extension(str, Enum): + r"""Extension""" + + M3U8 = "m3u8" + MPD = "mpd" + + +class StartTranscodeSessionQueryParamLocation(str, Enum): + r"""Network type of the client, can be used to help determine target bitrate.""" + + LAN = "lan" + WAN = "wan" + CELLULAR = "cellular" + + +class StartTranscodeSessionQueryParamProtocol(str, Enum): + r"""Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)""" + + HTTP = "http" + HLS = "hls" + DASH = "dash" + + +class StartTranscodeSessionQueryParamSubtitles(str, Enum): + r"""Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream""" + + AUTO = "auto" + BURN = "burn" + NONE = "none" + SIDECAR = "sidecar" + EMBEDDED = "embedded" + SEGMENTED = "segmented" + UNKNOWN = "unknown" + + +class StartTranscodeSessionRequestTypedDict(TypedDict): + transcode_type: components_transcodetype.TranscodeType + r"""Type of transcode media""" + extension: Extension + r"""Extension + + """ + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + transcode_session_id: NotRequired[str] + r"""Transcode session UUID""" + advanced_subtitles: NotRequired[components_advancedsubtitles.AdvancedSubtitles] + r"""Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost + + """ + audio_boost: NotRequired[int] + r"""Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc)""" + audio_channel_count: NotRequired[int] + r"""Target video number of audio channels.""" + auto_adjust_quality: NotRequired[components_boolint.BoolInt] + r"""Indicates the client supports ABR.""" + auto_adjust_subtitle: NotRequired[components_boolint.BoolInt] + r"""Indicates if the server should adjust subtitles based on Voice Activity Data.""" + direct_play: NotRequired[components_boolint.BoolInt] + r"""Indicates the client supports direct playing the indicated content.""" + direct_stream: NotRequired[components_boolint.BoolInt] + r"""Indicates the client supports direct streaming the video of the indicated content.""" + direct_stream_audio: NotRequired[components_boolint.BoolInt] + r"""Indicates the client supports direct streaming the audio of the indicated content.""" + disable_resolution_rotation: NotRequired[components_boolint.BoolInt] + r"""Indicates if resolution should be adjusted for orientation.""" + has_mde: NotRequired[components_boolint.BoolInt] + r"""Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1""" + location: NotRequired[StartTranscodeSessionQueryParamLocation] + r"""Network type of the client, can be used to help determine target bitrate.""" + media_buffer_size: NotRequired[int] + r"""Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks.""" + media_index: NotRequired[int] + r"""Index of the media to transcode. -1 or not specified indicates let the server choose.""" + music_bitrate: NotRequired[int] + r"""Target bitrate for audio only files (in kbps, used to transcode).""" + offset: NotRequired[float] + r"""Offset from the start of the media (in seconds).""" + part_index: NotRequired[int] + r"""Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode""" + path: NotRequired[str] + r"""Internal PMS path of the media to transcode.""" + peak_bitrate: NotRequired[int] + r"""Maximum bitrate (in kbps) to use in ABR.""" + photo_resolution: NotRequired[str] + r"""Target photo resolution.""" + protocol: NotRequired[StartTranscodeSessionQueryParamProtocol] + r"""Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022) + + """ + seconds_per_segment: NotRequired[int] + r"""Number of seconds to include in each transcoded segment""" + subtitle_size: NotRequired[int] + r"""Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect)""" + subtitles: NotRequired[StartTranscodeSessionQueryParamSubtitles] + r"""Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream + + """ + video_bitrate: NotRequired[int] + r"""Target video bitrate (in kbps).""" + video_quality: NotRequired[int] + r"""Target photo quality.""" + video_resolution: NotRequired[str] + r"""Target maximum video resolution.""" + x_plex_client_profile_extra: NotRequired[str] + r"""See [Profile Augmentations](#section/API-Info/Profile-Augmentations) .""" + x_plex_client_profile_name: NotRequired[str] + r"""Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile.""" + x_plex_session_identifier: NotRequired[str] + r"""Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)""" + + +class StartTranscodeSessionRequest(BaseModel): + transcode_type: Annotated[ + components_transcodetype.TranscodeType, + pydantic.Field(alias="transcodeType"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Type of transcode media""" + + extension: Annotated[ + Extension, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""Extension + + """ + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + transcode_session_id: Annotated[ + Optional[str], + pydantic.Field(alias="transcodeSessionId"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Transcode session UUID""" + + advanced_subtitles: Annotated[ + Optional[components_advancedsubtitles.AdvancedSubtitles], + pydantic.Field(alias="advancedSubtitles"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost + + """ + + audio_boost: Annotated[ + Optional[int], + pydantic.Field(alias="audioBoost"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc)""" + + audio_channel_count: Annotated[ + Optional[int], + pydantic.Field(alias="audioChannelCount"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target video number of audio channels.""" + + auto_adjust_quality: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="autoAdjustQuality"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the client supports ABR.""" + + auto_adjust_subtitle: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="autoAdjustSubtitle"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates if the server should adjust subtitles based on Voice Activity Data.""" + + direct_play: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="directPlay"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the client supports direct playing the indicated content.""" + + direct_stream: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="directStream"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the client supports direct streaming the video of the indicated content.""" + + direct_stream_audio: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="directStreamAudio"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the client supports direct streaming the audio of the indicated content.""" + + disable_resolution_rotation: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="disableResolutionRotation"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates if resolution should be adjusted for orientation.""" + + has_mde: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="hasMDE"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1""" + + location: Annotated[ + Optional[StartTranscodeSessionQueryParamLocation], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Network type of the client, can be used to help determine target bitrate.""" + + media_buffer_size: Annotated[ + Optional[int], + pydantic.Field(alias="mediaBufferSize"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks.""" + + media_index: Annotated[ + Optional[int], + pydantic.Field(alias="mediaIndex"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Index of the media to transcode. -1 or not specified indicates let the server choose.""" + + music_bitrate: Annotated[ + Optional[int], + pydantic.Field(alias="musicBitrate"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target bitrate for audio only files (in kbps, used to transcode).""" + + offset: Annotated[ + Optional[float], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Offset from the start of the media (in seconds).""" + + part_index: Annotated[ + Optional[int], + pydantic.Field(alias="partIndex"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode""" + + path: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Internal PMS path of the media to transcode.""" + + peak_bitrate: Annotated[ + Optional[int], + pydantic.Field(alias="peakBitrate"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Maximum bitrate (in kbps) to use in ABR.""" + + photo_resolution: Annotated[ + Optional[str], + pydantic.Field(alias="photoResolution"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target photo resolution.""" + + protocol: Annotated[ + Optional[StartTranscodeSessionQueryParamProtocol], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022) + + """ + + seconds_per_segment: Annotated[ + Optional[int], + pydantic.Field(alias="secondsPerSegment"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Number of seconds to include in each transcoded segment""" + + subtitle_size: Annotated[ + Optional[int], + pydantic.Field(alias="subtitleSize"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect)""" + + subtitles: Annotated[ + Optional[StartTranscodeSessionQueryParamSubtitles], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream + + """ + + video_bitrate: Annotated[ + Optional[int], + pydantic.Field(alias="videoBitrate"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target video bitrate (in kbps).""" + + video_quality: Annotated[ + Optional[int], + pydantic.Field(alias="videoQuality"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target photo quality.""" + + video_resolution: Annotated[ + Optional[str], + pydantic.Field(alias="videoResolution"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target maximum video resolution.""" + + x_plex_client_profile_extra: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Profile-Extra"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""See [Profile Augmentations](#section/API-Info/Profile-Augmentations) .""" + + x_plex_client_profile_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Profile-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile.""" + + x_plex_session_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Session-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)""" + + +class StartTranscodeSessionResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + response_stream: NotRequired[httpx.Response] + r"""MPD file (see ISO/IEC 23009-1:2022), m3u8 file (see RFC 8216), or binary http stream""" + + +class StartTranscodeSessionResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + response_stream: Optional[httpx.Response] = None + r"""MPD file (see ISO/IEC 23009-1:2022), m3u8 file (see RFC 8216), or binary http stream""" diff --git a/src/plex_api_client/models/operations/startuniversaltranscode.py b/src/plex_api_client/models/operations/startuniversaltranscode.py deleted file mode 100644 index 536b245..0000000 --- a/src/plex_api_client/models/operations/startuniversaltranscode.py +++ /dev/null @@ -1,171 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -import pydantic -from typing import Optional -from typing_extensions import Annotated, NotRequired, TypedDict - - -class StartUniversalTranscodeRequestTypedDict(TypedDict): - has_mde: float - r"""Whether the media item has MDE""" - path: str - r"""The path to the media item to transcode""" - media_index: float - r"""The index of the media item to transcode""" - part_index: float - r"""The index of the part to transcode""" - protocol: str - r"""The protocol to use for the transcode session""" - fast_seek: NotRequired[float] - r"""Whether to use fast seek or not""" - direct_play: NotRequired[float] - r"""Whether to use direct play or not""" - direct_stream: NotRequired[float] - r"""Whether to use direct stream or not""" - subtitle_size: NotRequired[float] - r"""The size of the subtitles""" - subtites: NotRequired[str] - r"""The subtitles""" - audio_boost: NotRequired[float] - r"""The audio boost""" - location: NotRequired[str] - r"""The location of the transcode session""" - media_buffer_size: NotRequired[float] - r"""The size of the media buffer""" - session: NotRequired[str] - r"""The session ID""" - add_debug_overlay: NotRequired[float] - r"""Whether to add a debug overlay or not""" - auto_adjust_quality: NotRequired[float] - r"""Whether to auto adjust quality or not""" - - -class StartUniversalTranscodeRequest(BaseModel): - has_mde: Annotated[ - float, - pydantic.Field(alias="hasMDE"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""Whether the media item has MDE""" - - path: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The path to the media item to transcode""" - - media_index: Annotated[ - float, - pydantic.Field(alias="mediaIndex"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The index of the media item to transcode""" - - part_index: Annotated[ - float, - pydantic.Field(alias="partIndex"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""The index of the part to transcode""" - - protocol: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The protocol to use for the transcode session""" - - fast_seek: Annotated[ - Optional[float], - pydantic.Field(alias="fastSeek"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Whether to use fast seek or not""" - - direct_play: Annotated[ - Optional[float], - pydantic.Field(alias="directPlay"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Whether to use direct play or not""" - - direct_stream: Annotated[ - Optional[float], - pydantic.Field(alias="directStream"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Whether to use direct stream or not""" - - subtitle_size: Annotated[ - Optional[float], - pydantic.Field(alias="subtitleSize"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The size of the subtitles""" - - subtites: Annotated[ - Optional[str], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The subtitles""" - - audio_boost: Annotated[ - Optional[float], - pydantic.Field(alias="audioBoost"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The audio boost""" - - location: Annotated[ - Optional[str], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The location of the transcode session""" - - media_buffer_size: Annotated[ - Optional[float], - pydantic.Field(alias="mediaBufferSize"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The size of the media buffer""" - - session: Annotated[ - Optional[str], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""The session ID""" - - add_debug_overlay: Annotated[ - Optional[float], - pydantic.Field(alias="addDebugOverlay"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Whether to add a debug overlay or not""" - - auto_adjust_quality: Annotated[ - Optional[float], - pydantic.Field(alias="autoAdjustQuality"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""Whether to auto adjust quality or not""" - - -class StartUniversalTranscodeResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class StartUniversalTranscodeResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/stopallrefreshes.py b/src/plex_api_client/models/operations/stopallrefreshes.py new file mode 100644 index 0000000..055ada0 --- /dev/null +++ b/src/plex_api_client/models/operations/stopallrefreshes.py @@ -0,0 +1,39 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + requesthandler_slash_get_responses_200 as components_requesthandler_slash_get_responses_200, +) +from plex_api_client.types import BaseModel +from typing import Optional +from typing_extensions import NotRequired, TypedDict + + +class StopAllRefreshesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + request_handler_slash_get_responses_200: NotRequired[ + components_requesthandler_slash_get_responses_200.RequestHandlerSlashGetResponses200TypedDict + ] + r"""OK""" + + +class StopAllRefreshesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + request_handler_slash_get_responses_200: Optional[ + components_requesthandler_slash_get_responses_200.RequestHandlerSlashGetResponses200 + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/stopalltasks.py b/src/plex_api_client/models/operations/stopalltasks.py deleted file mode 100644 index cd10486..0000000 --- a/src/plex_api_client/models/operations/stopalltasks.py +++ /dev/null @@ -1,26 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from typing_extensions import TypedDict - - -class StopAllTasksResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class StopAllTasksResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/stopdvrreload.py b/src/plex_api_client/models/operations/stopdvrreload.py new file mode 100644 index 0000000..136112d --- /dev/null +++ b/src/plex_api_client/models/operations/stopdvrreload.py @@ -0,0 +1,245 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class StopDVRReloadGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class StopDVRReloadGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class StopDVRReloadRequestTypedDict(TypedDict): + dvr_id: int + r"""The ID of the DVR.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class StopDVRReloadRequest(BaseModel): + dvr_id: Annotated[ + int, + pydantic.Field(alias="dvrId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the DVR.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class StopDVRReloadResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class StopDVRReloadResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/stopscan.py b/src/plex_api_client/models/operations/stopscan.py new file mode 100644 index 0000000..d1e74ce --- /dev/null +++ b/src/plex_api_client/models/operations/stopscan.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithdevice as components_mediacontainerwithdevice, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class StopScanGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class StopScanGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class StopScanRequestTypedDict(TypedDict): + device_id: int + r"""The ID of the device.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class StopScanRequest(BaseModel): + device_id: Annotated[ + int, + pydantic.Field(alias="deviceId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the device.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class StopScanResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_device: NotRequired[ + components_mediacontainerwithdevice.MediaContainerWithDeviceTypedDict + ] + r"""OK""" + + +class StopScanResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_device: Optional[ + components_mediacontainerwithdevice.MediaContainerWithDevice + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/stoptask.py b/src/plex_api_client/models/operations/stoptask.py index 4ddfb90..6fe6c00 100644 --- a/src/plex_api_client/models/operations/stoptask.py +++ b/src/plex_api_client/models/operations/stoptask.py @@ -3,27 +3,138 @@ from __future__ import annotations from enum import Enum import httpx -from plex_api_client import utils +from plex_api_client.models.components import accepts as components_accepts from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, PathParamMetadata, validate_open_enum +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic -from pydantic.functional_validators import PlainValidator -from typing_extensions import Annotated, TypedDict +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict -class PathParamTaskName(str, Enum, metaclass=utils.OpenEnumMeta): - r"""The name of the task to be started.""" +class StopTaskGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + +class StopTaskGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class Task(str, Enum): + r"""The task name""" + + AUTOMATIC_UPDATES = "AutomaticUpdates" BACKUP_DATABASE = "BackupDatabase" - BUILD_GRACENOTE_COLLECTIONS = "BuildGracenoteCollections" - CHECK_FOR_UPDATES = "CheckForUpdates" + BUTLER_TASK_GENERATE_AD_MARKERS = "ButlerTaskGenerateAdMarkers" + BUTLER_TASK_GENERATE_CREDITS_MARKERS = "ButlerTaskGenerateCreditsMarkers" + BUTLER_TASK_GENERATE_INTRO_MARKERS = "ButlerTaskGenerateIntroMarkers" + BUTLER_TASK_GENERATE_VOICE_ACTIVITY = "ButlerTaskGenerateVoiceActivity" CLEAN_OLD_BUNDLES = "CleanOldBundles" CLEAN_OLD_CACHE_FILES = "CleanOldCacheFiles" DEEP_MEDIA_ANALYSIS = "DeepMediaAnalysis" - GENERATE_AUTO_TAGS = "GenerateAutoTags" + GARBAGE_COLLECT_BLOBS = "GarbageCollectBlobs" + GARBAGE_COLLECT_LIBRARY_MEDIA = "GarbageCollectLibraryMedia" + GENERATE_BLUR_HASHES = "GenerateBlurHashes" GENERATE_CHAPTER_THUMBS = "GenerateChapterThumbs" GENERATE_MEDIA_INDEX_FILES = "GenerateMediaIndexFiles" + LOUDNESS_ANALYSIS = "LoudnessAnalysis" + MUSIC_ANALYSIS = "MusicAnalysis" OPTIMIZE_DATABASE = "OptimizeDatabase" + REFRESH_EPG_GUIDES = "RefreshEpgGuides" REFRESH_LIBRARIES = "RefreshLibraries" REFRESH_LOCAL_MEDIA = "RefreshLocalMedia" REFRESH_PERIODIC_METADATA = "RefreshPeriodicMetadata" @@ -31,17 +142,113 @@ class PathParamTaskName(str, Enum, metaclass=utils.OpenEnumMeta): class StopTaskRequestTypedDict(TypedDict): - task_name: PathParamTaskName - r"""The name of the task to be started.""" + task: Task + r"""The task name""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" class StopTaskRequest(BaseModel): - task_name: Annotated[ - Annotated[PathParamTaskName, PlainValidator(validate_open_enum(False))], - pydantic.Field(alias="taskName"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + task: Annotated[ + Task, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) ] - r"""The name of the task to be started.""" + r"""The task name""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" class StopTaskResponseTypedDict(TypedDict): diff --git a/src/plex_api_client/models/operations/stoptasks.py b/src/plex_api_client/models/operations/stoptasks.py new file mode 100644 index 0000000..d666775 --- /dev/null +++ b/src/plex_api_client/models/operations/stoptasks.py @@ -0,0 +1,26 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.types import BaseModel +from typing_extensions import TypedDict + + +class StopTasksResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class StopTasksResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/stoptranscodesession.py b/src/plex_api_client/models/operations/stoptranscodesession.py deleted file mode 100644 index 4db0a59..0000000 --- a/src/plex_api_client/models/operations/stoptranscodesession.py +++ /dev/null @@ -1,42 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, PathParamMetadata -import pydantic -from typing_extensions import Annotated, TypedDict - - -class StopTranscodeSessionRequestTypedDict(TypedDict): - session_key: str - r"""the Key of the transcode session to stop""" - - -class StopTranscodeSessionRequest(BaseModel): - session_key: Annotated[ - str, - pydantic.Field(alias="sessionKey"), - FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), - ] - r"""the Key of the transcode session to stop""" - - -class StopTranscodeSessionResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class StopTranscodeSessionResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/terminatesession.py b/src/plex_api_client/models/operations/terminatesession.py new file mode 100644 index 0000000..ab857da --- /dev/null +++ b/src/plex_api_client/models/operations/terminatesession.py @@ -0,0 +1,253 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class TerminateSessionGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class TerminateSessionGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class TerminateSessionRequestTypedDict(TypedDict): + session_id: str + r"""The session id (found in the `Session` element in [/status/sessions](#tag/Status/operation/statusGetSlash))""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + reason: NotRequired[str] + r"""The reason to give to the user (typically displayed in the client)""" + + +class TerminateSessionRequest(BaseModel): + session_id: Annotated[ + str, + pydantic.Field(alias="sessionId"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] + r"""The session id (found in the `Session` element in [/status/sessions](#tag/Status/operation/statusGetSlash))""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + reason: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The reason to give to the user (typically displayed in the client)""" + + +class TerminateSessionResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class TerminateSessionResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/transcodeimage.py b/src/plex_api_client/models/operations/transcodeimage.py new file mode 100644 index 0000000..15c90d6 --- /dev/null +++ b/src/plex_api_client/models/operations/transcodeimage.py @@ -0,0 +1,407 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class TranscodeImageGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class TranscodeImageGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class Format(str, Enum): + r"""The output format for the image; defaults to jpg""" + + JPG = "jpg" + JPEG = "jpeg" + PNG = "png" + PPM = "ppm" + + +class ChromaSubsampling(int, Enum): + r"""Use the specified chroma subsambling. + - 0: 411 + - 1: 420 + - 2: 422 + - 3: 444 + Defaults to 3 (444) + """ + + ZERO = 0 + ONE = 1 + TWO = 2 + THREE = 3 + + +class TranscodeImageRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + url: NotRequired[str] + r"""The source URL for the image to transcode. Note, if this URL requires a token such as `X-Plex-Token`, it should be given as a query parameter to this url.""" + format_: NotRequired[Format] + r"""The output format for the image; defaults to jpg""" + width: NotRequired[int] + r"""The desired width of the output image""" + height: NotRequired[int] + r"""The desired height of the output image""" + quality: NotRequired[int] + r"""The desired quality of the output. -1 means the highest quality. Defaults to -1""" + background: NotRequired[str] + r"""The background color to apply before painting the image. Only really applicable if image has transparency. Defaults to none""" + upscale: NotRequired[components_boolint.BoolInt] + r"""Indicates if image should be upscaled to the desired width/height. Defaults to false""" + min_size: NotRequired[components_boolint.BoolInt] + r"""Indicates if image should be scaled to fit the smaller dimension. By default (false) the image is scaled to fit within the width/height specified but if this parameter is true, it will allow overflowing one dimension to fit the other. Essentially it is making the width/height minimum sizes of the image or sizing the image to fill the entire width/height even if it overflows one dimension.""" + rotate: NotRequired[components_boolint.BoolInt] + r"""Obey the rotation values specified in EXIF data. Defaults to true.""" + blur: NotRequired[int] + r"""Apply a blur to the image, Defaults to 0 (none)""" + saturation: NotRequired[int] + r"""Scale the image saturation by the specified percentage. Defaults to 100""" + opacity: NotRequired[int] + r"""Render the image at the specified opacity percentage. Defaults to 100""" + chroma_subsampling: NotRequired[ChromaSubsampling] + r"""Use the specified chroma subsambling. + - 0: 411 + - 1: 420 + - 2: 422 + - 3: 444 + Defaults to 3 (444) + """ + blend_color: NotRequired[str] + r"""The color to blend with the image. Defaults to none""" + + +class TranscodeImageRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + url: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The source URL for the image to transcode. Note, if this URL requires a token such as `X-Plex-Token`, it should be given as a query parameter to this url.""" + + format_: Annotated[ + Optional[Format], + pydantic.Field(alias="format"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The output format for the image; defaults to jpg""" + + width: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The desired width of the output image""" + + height: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The desired height of the output image""" + + quality: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The desired quality of the output. -1 means the highest quality. Defaults to -1""" + + background: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The background color to apply before painting the image. Only really applicable if image has transparency. Defaults to none""" + + upscale: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates if image should be upscaled to the desired width/height. Defaults to false""" + + min_size: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="minSize"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates if image should be scaled to fit the smaller dimension. By default (false) the image is scaled to fit within the width/height specified but if this parameter is true, it will allow overflowing one dimension to fit the other. Essentially it is making the width/height minimum sizes of the image or sizing the image to fill the entire width/height even if it overflows one dimension.""" + + rotate: Annotated[ + Optional[components_boolint.BoolInt], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Obey the rotation values specified in EXIF data. Defaults to true.""" + + blur: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Apply a blur to the image, Defaults to 0 (none)""" + + saturation: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Scale the image saturation by the specified percentage. Defaults to 100""" + + opacity: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Render the image at the specified opacity percentage. Defaults to 100""" + + chroma_subsampling: Annotated[ + Optional[ChromaSubsampling], + pydantic.Field(alias="chromaSubsampling"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Use the specified chroma subsambling. + - 0: 411 + - 1: 420 + - 2: 422 + - 3: 444 + Defaults to 3 (444) + """ + + blend_color: Annotated[ + Optional[str], + pydantic.Field(alias="blendColor"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The color to blend with the image. Defaults to none""" + + +class TranscodeImageResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + two_hundred_image_jpeg_response_stream: NotRequired[httpx.Response] + r"""The resulting image""" + two_hundred_image_png_response_stream: NotRequired[httpx.Response] + r"""The resulting image""" + two_hundred_image_x_portable_pixmap_response_stream: NotRequired[httpx.Response] + r"""The resulting image""" + + +class TranscodeImageResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + two_hundred_image_jpeg_response_stream: Optional[httpx.Response] = None + r"""The resulting image""" + + two_hundred_image_png_response_stream: Optional[httpx.Response] = None + r"""The resulting image""" + + two_hundred_image_x_portable_pixmap_response_stream: Optional[httpx.Response] = None + r"""The resulting image""" diff --git a/src/plex_api_client/models/operations/transcodesubtitles.py b/src/plex_api_client/models/operations/transcodesubtitles.py new file mode 100644 index 0000000..de20bf0 --- /dev/null +++ b/src/plex_api_client/models/operations/transcodesubtitles.py @@ -0,0 +1,561 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + advancedsubtitles as components_advancedsubtitles, + boolint as components_boolint, + transcodetype as components_transcodetype, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class TranscodeSubtitlesGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class TranscodeSubtitlesGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class QueryParamLocation(str, Enum): + r"""Network type of the client, can be used to help determine target bitrate.""" + + LAN = "lan" + WAN = "wan" + CELLULAR = "cellular" + + +class QueryParamProtocol(str, Enum): + r"""Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022)""" + + HTTP = "http" + HLS = "hls" + DASH = "dash" + + +class QueryParamSubtitles(str, Enum): + r"""Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream""" + + AUTO = "auto" + BURN = "burn" + NONE = "none" + SIDECAR = "sidecar" + EMBEDDED = "embedded" + SEGMENTED = "segmented" + UNKNOWN = "unknown" + + +class TranscodeSubtitlesRequestTypedDict(TypedDict): + transcode_type: components_transcodetype.TranscodeType + r"""Type of transcode media""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + transcode_session_id: NotRequired[str] + r"""Transcode session UUID""" + advanced_subtitles: NotRequired[components_advancedsubtitles.AdvancedSubtitles] + r"""Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost + + """ + audio_boost: NotRequired[int] + r"""Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc)""" + audio_channel_count: NotRequired[int] + r"""Target video number of audio channels.""" + auto_adjust_quality: NotRequired[components_boolint.BoolInt] + r"""Indicates the client supports ABR.""" + auto_adjust_subtitle: NotRequired[components_boolint.BoolInt] + r"""Indicates if the server should adjust subtitles based on Voice Activity Data.""" + direct_play: NotRequired[components_boolint.BoolInt] + r"""Indicates the client supports direct playing the indicated content.""" + direct_stream: NotRequired[components_boolint.BoolInt] + r"""Indicates the client supports direct streaming the video of the indicated content.""" + direct_stream_audio: NotRequired[components_boolint.BoolInt] + r"""Indicates the client supports direct streaming the audio of the indicated content.""" + disable_resolution_rotation: NotRequired[components_boolint.BoolInt] + r"""Indicates if resolution should be adjusted for orientation.""" + has_mde: NotRequired[components_boolint.BoolInt] + r"""Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1""" + location: NotRequired[QueryParamLocation] + r"""Network type of the client, can be used to help determine target bitrate.""" + media_buffer_size: NotRequired[int] + r"""Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks.""" + media_index: NotRequired[int] + r"""Index of the media to transcode. -1 or not specified indicates let the server choose.""" + music_bitrate: NotRequired[int] + r"""Target bitrate for audio only files (in kbps, used to transcode).""" + offset: NotRequired[float] + r"""Offset from the start of the media (in seconds).""" + part_index: NotRequired[int] + r"""Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode""" + path: NotRequired[str] + r"""Internal PMS path of the media to transcode.""" + peak_bitrate: NotRequired[int] + r"""Maximum bitrate (in kbps) to use in ABR.""" + photo_resolution: NotRequired[str] + r"""Target photo resolution.""" + protocol: NotRequired[QueryParamProtocol] + r"""Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022) + + """ + seconds_per_segment: NotRequired[int] + r"""Number of seconds to include in each transcoded segment""" + subtitle_size: NotRequired[int] + r"""Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect)""" + subtitles: NotRequired[QueryParamSubtitles] + r"""Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream + + """ + video_bitrate: NotRequired[int] + r"""Target video bitrate (in kbps).""" + video_quality: NotRequired[int] + r"""Target photo quality.""" + video_resolution: NotRequired[str] + r"""Target maximum video resolution.""" + x_plex_client_profile_extra: NotRequired[str] + r"""See [Profile Augmentations](#section/API-Info/Profile-Augmentations) .""" + x_plex_client_profile_name: NotRequired[str] + r"""Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile.""" + x_plex_session_identifier: NotRequired[str] + r"""Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)""" + + +class TranscodeSubtitlesRequest(BaseModel): + transcode_type: Annotated[ + components_transcodetype.TranscodeType, + pydantic.Field(alias="transcodeType"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Type of transcode media""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + transcode_session_id: Annotated[ + Optional[str], + pydantic.Field(alias="transcodeSessionId"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Transcode session UUID""" + + advanced_subtitles: Annotated[ + Optional[components_advancedsubtitles.AdvancedSubtitles], + pydantic.Field(alias="advancedSubtitles"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates how incompatible advanced subtitles (such as ass/ssa) should be included: * 'burn' - Burn incompatible advanced text subtitles into the video stream * 'text' - Transcode incompatible advanced text subtitles to a compatible text format, even if some markup is lost + + """ + + audio_boost: Annotated[ + Optional[int], + pydantic.Field(alias="audioBoost"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Percentage of original audio loudness to use when transcoding (100 is equivalent to original volume, 50 is half, 200 is double, etc)""" + + audio_channel_count: Annotated[ + Optional[int], + pydantic.Field(alias="audioChannelCount"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target video number of audio channels.""" + + auto_adjust_quality: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="autoAdjustQuality"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the client supports ABR.""" + + auto_adjust_subtitle: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="autoAdjustSubtitle"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates if the server should adjust subtitles based on Voice Activity Data.""" + + direct_play: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="directPlay"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the client supports direct playing the indicated content.""" + + direct_stream: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="directStream"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the client supports direct streaming the video of the indicated content.""" + + direct_stream_audio: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="directStreamAudio"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the client supports direct streaming the audio of the indicated content.""" + + disable_resolution_rotation: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="disableResolutionRotation"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates if resolution should be adjusted for orientation.""" + + has_mde: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="hasMDE"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Ignore client profiles when determining if direct play is possible. Only has an effect when directPlay=1 and both mediaIndex and partIndex are specified and neither are -1""" + + location: Annotated[ + Optional[QueryParamLocation], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Network type of the client, can be used to help determine target bitrate.""" + + media_buffer_size: Annotated[ + Optional[int], + pydantic.Field(alias="mediaBufferSize"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Buffer size used in playback (in KB). Clients should specify a lower bound if not known exactly. This value could make the difference between transcoding and direct play on bandwidth constrained networks.""" + + media_index: Annotated[ + Optional[int], + pydantic.Field(alias="mediaIndex"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Index of the media to transcode. -1 or not specified indicates let the server choose.""" + + music_bitrate: Annotated[ + Optional[int], + pydantic.Field(alias="musicBitrate"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target bitrate for audio only files (in kbps, used to transcode).""" + + offset: Annotated[ + Optional[float], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Offset from the start of the media (in seconds).""" + + part_index: Annotated[ + Optional[int], + pydantic.Field(alias="partIndex"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Index of the part to transcode. -1 or not specified indicates the server should join parts together in a transcode""" + + path: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Internal PMS path of the media to transcode.""" + + peak_bitrate: Annotated[ + Optional[int], + pydantic.Field(alias="peakBitrate"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Maximum bitrate (in kbps) to use in ABR.""" + + photo_resolution: Annotated[ + Optional[str], + pydantic.Field(alias="photoResolution"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target photo resolution.""" + + protocol: Annotated[ + Optional[QueryParamProtocol], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates the network streaming protocol to be used for the transcode session: * 'http' - include the file in the http response such as MKV streaming * 'hls' - hls stream (RFC 8216) * 'dash' - dash stream (ISO/IEC 23009-1:2022) + + """ + + seconds_per_segment: Annotated[ + Optional[int], + pydantic.Field(alias="secondsPerSegment"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Number of seconds to include in each transcoded segment""" + + subtitle_size: Annotated[ + Optional[int], + pydantic.Field(alias="subtitleSize"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Percentage of original subtitle size to use when burning subtitles (100 is equivalent to original size, 50 is half, ect)""" + + subtitles: Annotated[ + Optional[QueryParamSubtitles], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Indicates how subtitles should be included: * 'auto' - Compute the appropriate subtitle setting automatically * 'burn' - Burn the selected subtitle; auto if no selected subtitle * 'none' - Ignore all subtitle streams * 'sidecar' - The selected subtitle should be provided as a sidecar * 'embedded' - The selected subtitle should be provided as an embedded stream * 'segmented' - The selected subtitle should be provided as a segmented stream + + """ + + video_bitrate: Annotated[ + Optional[int], + pydantic.Field(alias="videoBitrate"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target video bitrate (in kbps).""" + + video_quality: Annotated[ + Optional[int], + pydantic.Field(alias="videoQuality"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target photo quality.""" + + video_resolution: Annotated[ + Optional[str], + pydantic.Field(alias="videoResolution"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Target maximum video resolution.""" + + x_plex_client_profile_extra: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Profile-Extra"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""See [Profile Augmentations](#section/API-Info/Profile-Augmentations) .""" + + x_plex_client_profile_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Profile-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""Which built in Client Profile to use in the decision. Generally should only be used to specify the Generic profile.""" + + x_plex_session_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Session-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""Unique per client playback session. Used if a client can playback multiple items at a time (such as a browser with multiple tabs)""" + + +class TranscodeSubtitlesResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class TranscodeSubtitlesResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/triggerfallback.py b/src/plex_api_client/models/operations/triggerfallback.py new file mode 100644 index 0000000..0fe35aa --- /dev/null +++ b/src/plex_api_client/models/operations/triggerfallback.py @@ -0,0 +1,262 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + transcodetype as components_transcodetype, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class TriggerFallbackGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class TriggerFallbackGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class TriggerFallbackRequestTypedDict(TypedDict): + transcode_type: components_transcodetype.TranscodeType + r"""Type of transcode media""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + transcode_session_id: NotRequired[str] + r"""Transcode session UUID""" + + +class TriggerFallbackRequest(BaseModel): + transcode_type: Annotated[ + components_transcodetype.TranscodeType, + pydantic.Field(alias="transcodeType"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""Type of transcode media""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + transcode_session_id: Annotated[ + Optional[str], + pydantic.Field(alias="transcodeSessionId"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Transcode session UUID""" + + +class TriggerFallbackResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class TriggerFallbackResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/tunechannel.py b/src/plex_api_client/models/operations/tunechannel.py new file mode 100644 index 0000000..6c6dfbb --- /dev/null +++ b/src/plex_api_client/models/operations/tunechannel.py @@ -0,0 +1,267 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithmetadata as components_mediacontainerwithmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class TuneChannelGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class TuneChannelGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class TuneChannelRequestTypedDict(TypedDict): + dvr_id: int + r"""The ID of the DVR.""" + channel: str + r"""The channel ID to tune""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class TuneChannelRequest(BaseModel): + dvr_id: Annotated[ + int, + pydantic.Field(alias="dvrId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the DVR.""" + + channel: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The channel ID to tune""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class TuneChannelResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + media_container_with_metadata: NotRequired[ + components_mediacontainerwithmetadata.MediaContainerWithMetadataTypedDict + ] + r"""OK""" + + +class TuneChannelResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + media_container_with_metadata: Optional[ + components_mediacontainerwithmetadata.MediaContainerWithMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/unmatch.py b/src/plex_api_client/models/operations/unmatch.py new file mode 100644 index 0000000..e008e1a --- /dev/null +++ b/src/plex_api_client/models/operations/unmatch.py @@ -0,0 +1,241 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class UnmatchGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class UnmatchGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class UnmatchRequestTypedDict(TypedDict): + ids: str + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class UnmatchRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class UnmatchResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class UnmatchResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/unscrobble.py b/src/plex_api_client/models/operations/unscrobble.py new file mode 100644 index 0000000..1ad86b8 --- /dev/null +++ b/src/plex_api_client/models/operations/unscrobble.py @@ -0,0 +1,259 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class UnscrobbleGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class UnscrobbleGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class UnscrobbleRequestTypedDict(TypedDict): + identifier: str + r"""The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library`""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + key: NotRequired[str] + r"""The key of the item to rate. This is the `ratingKey` found in metadata items""" + uri: NotRequired[str] + r"""The URI of the item to mark as played. See intro for description of the URIs""" + + +class UnscrobbleRequest(BaseModel): + identifier: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The identifier of the media provider containing the media to rate. Typically `com.plexapp.plugins.library`""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + key: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The key of the item to rate. This is the `ratingKey` found in metadata items""" + + uri: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The URI of the item to mark as played. See intro for description of the URIs""" + + +class UnscrobbleResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class UnscrobbleResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/unshuffle.py b/src/plex_api_client/models/operations/unshuffle.py new file mode 100644 index 0000000..3f1c8e8 --- /dev/null +++ b/src/plex_api_client/models/operations/unshuffle.py @@ -0,0 +1,257 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + mediacontainerwithplaylistmetadata as components_mediacontainerwithplaylistmetadata, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class UnshuffleGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class UnshuffleGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class UnshuffleRequestTypedDict(TypedDict): + play_queue_id: int + r"""The ID of the play queue.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class UnshuffleRequest(BaseModel): + play_queue_id: Annotated[ + int, + pydantic.Field(alias="playQueueId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The ID of the play queue.""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class UnshuffleResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + media_container_with_playlist_metadata: NotRequired[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadataTypedDict + ] + r"""OK""" + + +class UnshuffleResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + media_container_with_playlist_metadata: Optional[ + components_mediacontainerwithplaylistmetadata.MediaContainerWithPlaylistMetadata + ] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/updatehubvisibility.py b/src/plex_api_client/models/operations/updatehubvisibility.py new file mode 100644 index 0000000..4453060 --- /dev/null +++ b/src/plex_api_client/models/operations/updatehubvisibility.py @@ -0,0 +1,287 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class UpdateHubVisibilityGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class UpdateHubVisibilityGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class UpdateHubVisibilityRequestTypedDict(TypedDict): + section_id: int + r"""The section ID for the hubs to change""" + identifier: str + r"""The identifier of the hub to change""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + promoted_to_recommended: NotRequired[components_boolint.BoolInt] + r"""Whether this hub should be displayed in recommended""" + promoted_to_own_home: NotRequired[components_boolint.BoolInt] + r"""Whether this hub should be displayed in admin's home""" + promoted_to_shared_home: NotRequired[components_boolint.BoolInt] + r"""Whether this hub should be displayed in shared user's home""" + + +class UpdateHubVisibilityRequest(BaseModel): + section_id: Annotated[ + int, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The section ID for the hubs to change""" + + identifier: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""The identifier of the hub to change""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + promoted_to_recommended: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="promotedToRecommended"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether this hub should be displayed in recommended""" + + promoted_to_own_home: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="promotedToOwnHome"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether this hub should be displayed in admin's home""" + + promoted_to_shared_home: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="promotedToSharedHome"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Whether this hub should be displayed in shared user's home""" + + +class UpdateHubVisibilityResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class UpdateHubVisibilityResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/updateitemartwork.py b/src/plex_api_client/models/operations/updateitemartwork.py new file mode 100644 index 0000000..754e6e9 --- /dev/null +++ b/src/plex_api_client/models/operations/updateitemartwork.py @@ -0,0 +1,270 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class UpdateItemArtworkGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class UpdateItemArtworkGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class PathParamElement(str, Enum): + THUMB = "thumb" + ART = "art" + CLEAR_LOGO = "clearLogo" + BANNER = "banner" + POSTER = "poster" + THEME = "theme" + + +class UpdateItemArtworkRequestTypedDict(TypedDict): + ids: str + element: PathParamElement + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + url: NotRequired[str] + r"""The url of the new asset.""" + + +class UpdateItemArtworkRequest(BaseModel): + ids: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + + element: Annotated[ + PathParamElement, + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + url: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The url of the new asset.""" + + +class UpdateItemArtworkResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class UpdateItemArtworkResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/updateitems.py b/src/plex_api_client/models/operations/updateitems.py new file mode 100644 index 0000000..4c5afc6 --- /dev/null +++ b/src/plex_api_client/models/operations/updateitems.py @@ -0,0 +1,366 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class UpdateItemsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class UpdateItemsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class UpdateItemsRequestTypedDict(TypedDict): + section_id: str + r"""The id of the section""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + type: NotRequired[str] + filters: NotRequired[str] + r"""The filters to apply to determine which items should be modified""" + field_value: NotRequired[str] + r"""Set the specified field to a new value""" + field_locked: NotRequired[components_boolint.BoolInt] + r"""Set the specified field to locked (or unlocked if set to 0)""" + title_value: NotRequired[str] + r"""This field is treated specially by albums or artists and may be used for implicit reparenting.""" + artist_title_value: NotRequired[str] + r"""Reparents set of Tracks or Albums - used with album.title.* in the case of tracks""" + artist_title_id: NotRequired[str] + r"""Reparents set of Tracks or Albums - used with album.title.* in the case of tracks""" + album_title_value: NotRequired[str] + r"""Reparents set of Tracks - Must be used in conjunction with artist.title.value or id""" + album_title_id: NotRequired[str] + r"""Reparents set of Tracks - Must be used in conjunction with artist.title.value or id""" + tagtype_idx_tag_tag: NotRequired[str] + r"""Creates tag and associates it with each item in the set. - [idx] links this and the next parameters together""" + tagtype_idx_tagging_object: NotRequired[str] + r"""Here `object` may be text/thumb/art/theme - Optionally used in conjunction with tag.tag, to update association info across the set.""" + tagtype_tag_tag: NotRequired[str] + r"""Remove comma separated tags from the set of items""" + tagtype_tag: NotRequired[str] + r"""Remove associations of this type (e.g. genre) from the set of items""" + + +class UpdateItemsRequest(BaseModel): + section_id: Annotated[ + str, + pydantic.Field(alias="sectionId"), + FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), + ] + r"""The id of the section""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + type: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + + filters: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The filters to apply to determine which items should be modified""" + + field_value: Annotated[ + Optional[str], + pydantic.Field(alias="field.value"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Set the specified field to a new value""" + + field_locked: Annotated[ + Optional[components_boolint.BoolInt], + pydantic.Field(alias="field.locked"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Set the specified field to locked (or unlocked if set to 0)""" + + title_value: Annotated[ + Optional[str], + pydantic.Field(alias="title.value"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""This field is treated specially by albums or artists and may be used for implicit reparenting.""" + + artist_title_value: Annotated[ + Optional[str], + pydantic.Field(alias="artist.title.value"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Reparents set of Tracks or Albums - used with album.title.* in the case of tracks""" + + artist_title_id: Annotated[ + Optional[str], + pydantic.Field(alias="artist.title.id"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Reparents set of Tracks or Albums - used with album.title.* in the case of tracks""" + + album_title_value: Annotated[ + Optional[str], + pydantic.Field(alias="album.title.value"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Reparents set of Tracks - Must be used in conjunction with artist.title.value or id""" + + album_title_id: Annotated[ + Optional[str], + pydantic.Field(alias="album.title.id"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Reparents set of Tracks - Must be used in conjunction with artist.title.value or id""" + + tagtype_idx_tag_tag: Annotated[ + Optional[str], + pydantic.Field(alias="tagtype[idx].tag.tag"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Creates tag and associates it with each item in the set. - [idx] links this and the next parameters together""" + + tagtype_idx_tagging_object: Annotated[ + Optional[str], + pydantic.Field(alias="tagtype[idx].tagging.object"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Here `object` may be text/thumb/art/theme - Optionally used in conjunction with tag.tag, to update association info across the set.""" + + tagtype_tag_tag: Annotated[ + Optional[str], + pydantic.Field(alias="tagtype[].tag.tag-"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Remove comma separated tags from the set of items""" + + tagtype_tag: Annotated[ + Optional[str], + pydantic.Field(alias="tagtype[].tag"), + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Remove associations of this type (e.g. genre) from the set of items""" + + +class UpdateItemsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class UpdateItemsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/updateplaylist.py b/src/plex_api_client/models/operations/updateplaylist.py index 3c9172d..4cf0dbe 100644 --- a/src/plex_api_client/models/operations/updateplaylist.py +++ b/src/plex_api_client/models/operations/updateplaylist.py @@ -2,41 +2,227 @@ from __future__ import annotations import httpx +from plex_api_client.models.components import accepts as components_accepts from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata +from plex_api_client.utils import FieldMetadata, HeaderMetadata, PathParamMetadata import pydantic from typing import Optional from typing_extensions import Annotated, NotRequired, TypedDict +class UpdatePlaylistGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class UpdatePlaylistGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + class UpdatePlaylistRequestTypedDict(TypedDict): - playlist_id: float - r"""the ID of the playlist""" - title: NotRequired[str] - r"""name of the playlist""" - summary: NotRequired[str] - r"""summary description of the playlist""" + playlist_id: int + r"""The ID of the playlist""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" class UpdatePlaylistRequest(BaseModel): playlist_id: Annotated[ - float, - pydantic.Field(alias="playlistID"), + int, + pydantic.Field(alias="playlistId"), FieldMetadata(path=PathParamMetadata(style="simple", explode=False)), ] - r"""the ID of the playlist""" + r"""The ID of the playlist""" - title: Annotated[ - Optional[str], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = None - r"""name of the playlist""" + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" - summary: Annotated[ + client_identifier: Annotated[ Optional[str], - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), ] = None - r"""summary description of the playlist""" + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" class UpdatePlaylistResponseTypedDict(TypedDict): diff --git a/src/plex_api_client/models/operations/updateplayprogress.py b/src/plex_api_client/models/operations/updateplayprogress.py deleted file mode 100644 index e316d8d..0000000 --- a/src/plex_api_client/models/operations/updateplayprogress.py +++ /dev/null @@ -1,53 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from __future__ import annotations -import httpx -from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata -from typing_extensions import Annotated, TypedDict - - -class UpdatePlayProgressRequestTypedDict(TypedDict): - key: str - r"""the media key""" - time: float - r"""The time, in milliseconds, used to set the media playback progress.""" - state: str - r"""The playback state of the media item.""" - - -class UpdatePlayProgressRequest(BaseModel): - key: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""the media key""" - - time: Annotated[ - float, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The time, in milliseconds, used to set the media playback progress.""" - - state: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""The playback state of the media item.""" - - -class UpdatePlayProgressResponseTypedDict(TypedDict): - content_type: str - r"""HTTP response content type for this operation""" - status_code: int - r"""HTTP response status code for this operation""" - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" - - -class UpdatePlayProgressResponse(BaseModel): - content_type: str - r"""HTTP response content type for this operation""" - - status_code: int - r"""HTTP response status code for this operation""" - - raw_response: httpx.Response - r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/uploadplaylist.py b/src/plex_api_client/models/operations/uploadplaylist.py index 3f31ec3..613c2d4 100644 --- a/src/plex_api_client/models/operations/uploadplaylist.py +++ b/src/plex_api_client/models/operations/uploadplaylist.py @@ -1,77 +1,238 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations -from enum import Enum import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + boolint as components_boolint, +) from plex_api_client.types import BaseModel -from plex_api_client.utils import FieldMetadata, QueryParamMetadata +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata import pydantic -from typing_extensions import Annotated, TypedDict +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict -class QueryParamForce(int, Enum): - r"""Force overwriting of duplicate playlists. - By default, a playlist file uploaded with the same path will overwrite the existing playlist. - The `force` argument is used to disable overwriting. - If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded. +class UploadPlaylistGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" - """ - ZERO = 0 - ONE = 1 +class UploadPlaylistGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" class UploadPlaylistRequestTypedDict(TypedDict): - path: str - r"""absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server. - If the `path` argument is a directory, that path will be scanned for playlist files to be processed. - Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it. - The GUID of each playlist is based on the filename. - If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it. - The GUID of each playlist is based on the filename. - - """ - force: QueryParamForce - r"""Force overwriting of duplicate playlists. - By default, a playlist file uploaded with the same path will overwrite the existing playlist. - The `force` argument is used to disable overwriting. - If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded. - - """ - section_id: int - r"""Possibly the section ID to upload the playlist to, we are not certain.""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + path: NotRequired[str] + r"""Absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server. If the `path` argument is a directory, that path will be scanned for playlist files to be processed. Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it. The GUID of each playlist is based on the filename. If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it. The GUID of each playlist is based on the filename.""" + force: NotRequired[components_boolint.BoolInt] + r"""Force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist. The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.""" class UploadPlaylistRequest(BaseModel): - path: Annotated[ - str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) - ] - r"""absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server. - If the `path` argument is a directory, that path will be scanned for playlist files to be processed. - Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it. - The GUID of each playlist is based on the filename. - If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it. - The GUID of each playlist is based on the filename. + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" - """ + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + path: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""Absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server. If the `path` argument is a directory, that path will be scanned for playlist files to be processed. Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it. The GUID of each playlist is based on the filename. If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it. The GUID of each playlist is based on the filename.""" force: Annotated[ - QueryParamForce, + Optional[components_boolint.BoolInt], FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] - r"""Force overwriting of duplicate playlists. - By default, a playlist file uploaded with the same path will overwrite the existing playlist. - The `force` argument is used to disable overwriting. - If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded. - - """ - - section_id: Annotated[ - int, - pydantic.Field(alias="sectionID"), - FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), - ] = 1 - r"""Possibly the section ID to upload the playlist to, we are not certain.""" + ] = None + r"""Force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist. The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.""" class UploadPlaylistResponseTypedDict(TypedDict): diff --git a/src/plex_api_client/models/operations/voicesearchhubs.py b/src/plex_api_client/models/operations/voicesearchhubs.py new file mode 100644 index 0000000..b6dc825 --- /dev/null +++ b/src/plex_api_client/models/operations/voicesearchhubs.py @@ -0,0 +1,330 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.models.components import ( + accepts as components_accepts, + hub as components_hub, +) +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class VoiceSearchHubsGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class VoiceSearchHubsGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class VoiceSearchHubsRequestTypedDict(TypedDict): + query: str + r"""The query term""" + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + type: NotRequired[int] + r"""The metadata type to filter by""" + limit: NotRequired[int] + r"""The number of items to return per hub. 3 if not specified""" + + +class VoiceSearchHubsRequest(BaseModel): + query: Annotated[ + str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True)) + ] + r"""The query term""" + + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + type: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The metadata type to filter by""" + + limit: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The number of items to return per hub. 3 if not specified""" + + +class VoiceSearchHubsMediaContainerTypedDict(TypedDict): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: NotRequired[str] + offset: NotRequired[int] + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + size: NotRequired[int] + total_size: NotRequired[int] + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + hub: NotRequired[List[components_hub.HubTypedDict]] + + +class VoiceSearchHubsMediaContainer(BaseModel): + r"""`MediaContainer` is the root element of most Plex API responses. It serves as a generic container for various types of content (Metadata, Hubs, Directories, etc.) and includes pagination information (offset, size, totalSize) when applicable. + Common attributes: - identifier: Unique identifier for this container - size: Number of items in this response page - totalSize: Total number of items available (for pagination) - offset: Starting index of this page (for pagination) + The container often \"hoists\" common attributes from its children. For example, if all tracks in a container share the same album title, the `parentTitle` attribute may appear on the MediaContainer rather than being repeated on each track. + + """ + + identifier: Optional[str] = None + + offset: Optional[int] = None + r"""The offset of where this container page starts among the total objects available. Also provided in the `X-Plex-Container-Start` header. + + """ + + size: Optional[int] = None + + total_size: Annotated[Optional[int], pydantic.Field(alias="totalSize")] = None + r"""The total size of objects available. Also provided in the `X-Plex-Container-Total-Size` header. + + """ + + hub: Annotated[Optional[List[components_hub.Hub]], pydantic.Field(alias="Hub")] = ( + None + ) + + +class VoiceSearchHubsResponseBodyTypedDict(TypedDict): + r"""OK""" + + media_container: NotRequired[VoiceSearchHubsMediaContainerTypedDict] + + +class VoiceSearchHubsResponseBody(BaseModel): + r"""OK""" + + media_container: Annotated[ + Optional[VoiceSearchHubsMediaContainer], pydantic.Field(alias="MediaContainer") + ] = None + + +class VoiceSearchHubsResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + headers: Dict[str, List[str]] + object: NotRequired[VoiceSearchHubsResponseBodyTypedDict] + r"""OK""" + + +class VoiceSearchHubsResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + headers: Dict[str, List[str]] + + object: Optional[VoiceSearchHubsResponseBody] = None + r"""OK""" diff --git a/src/plex_api_client/models/operations/writelog.py b/src/plex_api_client/models/operations/writelog.py new file mode 100644 index 0000000..1542f5d --- /dev/null +++ b/src/plex_api_client/models/operations/writelog.py @@ -0,0 +1,26 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +import httpx +from plex_api_client.types import BaseModel +from typing_extensions import TypedDict + + +class WriteLogResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class WriteLogResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/models/operations/writemessage.py b/src/plex_api_client/models/operations/writemessage.py new file mode 100644 index 0000000..3960d5e --- /dev/null +++ b/src/plex_api_client/models/operations/writemessage.py @@ -0,0 +1,292 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from enum import Enum +import httpx +from plex_api_client.models.components import accepts as components_accepts +from plex_api_client.types import BaseModel +from plex_api_client.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class WriteMessageGlobalsTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + + +class WriteMessageGlobals(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + +class Level(int, Enum): + r"""An integer log level to write to the PMS log with. + - 0: Error + - 1: Warning + - 2: Info + - 3: Debug + - 4: Verbose + + """ + + ZERO = 0 + ONE = 1 + TWO = 2 + THREE = 3 + FOUR = 4 + + +class WriteMessageRequestTypedDict(TypedDict): + accepts: NotRequired[components_accepts.Accepts] + r"""Indicates the client accepts the indicated media types""" + client_identifier: NotRequired[str] + r"""An opaque identifier unique to the client""" + product: NotRequired[str] + r"""The name of the client product""" + version: NotRequired[str] + r"""The version of the client application""" + platform: NotRequired[str] + r"""The platform of the client""" + platform_version: NotRequired[str] + r"""The version of the platform""" + device: NotRequired[str] + r"""A relatively friendly name for the client device""" + model: NotRequired[str] + r"""A potentially less friendly identifier for the device model""" + device_vendor: NotRequired[str] + r"""The device vendor""" + device_name: NotRequired[str] + r"""A friendly name for the client""" + marketplace: NotRequired[str] + r"""The marketplace on which the client application is distributed""" + level: NotRequired[Level] + r"""An integer log level to write to the PMS log with. + - 0: Error + - 1: Warning + - 2: Info + - 3: Debug + - 4: Verbose + + """ + message: NotRequired[str] + r"""The text of the message to write to the log.""" + source: NotRequired[str] + r"""A string indicating the source of the message.""" + + +class WriteMessageRequest(BaseModel): + accepts: Annotated[ + Optional[components_accepts.Accepts], + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = components_accepts.Accepts.APPLICATION_XML + r"""Indicates the client accepts the indicated media types""" + + client_identifier: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Client-Identifier"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""An opaque identifier unique to the client""" + + product: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Product"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The name of the client product""" + + version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the client application""" + + platform: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The platform of the client""" + + platform_version: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Platform-Version"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The version of the platform""" + + device: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A relatively friendly name for the client device""" + + model: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Model"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A potentially less friendly identifier for the device model""" + + device_vendor: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Vendor"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The device vendor""" + + device_name: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Device-Name"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""A friendly name for the client""" + + marketplace: Annotated[ + Optional[str], + pydantic.Field(alias="X-Plex-Marketplace"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The marketplace on which the client application is distributed""" + + level: Annotated[ + Optional[Level], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""An integer log level to write to the PMS log with. + - 0: Error + - 1: Warning + - 2: Info + - 3: Debug + - 4: Verbose + + """ + + message: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""The text of the message to write to the log.""" + + source: Annotated[ + Optional[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = None + r"""A string indicating the source of the message.""" + + +class WriteMessageResponseTypedDict(TypedDict): + content_type: str + r"""HTTP response content type for this operation""" + status_code: int + r"""HTTP response status code for this operation""" + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" + + +class WriteMessageResponse(BaseModel): + content_type: str + r"""HTTP response content type for this operation""" + + status_code: int + r"""HTTP response status code for this operation""" + + raw_response: httpx.Response + r"""Raw HTTP response; suitable for custom response parsing""" diff --git a/src/plex_api_client/play_queue.py b/src/plex_api_client/play_queue.py new file mode 100644 index 0000000..9017215 --- /dev/null +++ b/src/plex_api_client/play_queue.py @@ -0,0 +1,1879 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import components, errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class PlayQueue(BaseSDK): + r"""The playqueue feature within a media provider + A play queue represents the current list of media for playback. Although queues are persisted by the server, they should be regarded by the user as a fairly lightweight, an ephemeral list of items queued up for playback in a session. There is generally one active queue for each type of media (music, video, photos) that can be added to or destroyed and replaced with a fresh queue. + Play Queues has a region, which we refer to in this doc (partially for historical reasons) as \"Up Next\". This region is defined by `playQueueLastAddedItemID` existing on the media container. This follows iTunes' terminology. It is a special region after the currently playing item but before the originally-played items. This enables \"Party Mode\" listening/viewing, where items can be added on-the-fly, and normal queue playback resumed when completed. + You can visualize the play queue as a sliding window in the complete list of media queued for playback. This model is important when scaling to larger play queues (e.g. shuffling 40,000 audio tracks). The client only needs visibility into small areas of the queue at any given time, and the server can optimize access in this fashion. + All created play queues will have an empty \"Up Next\" area - unless the item is an album and no `key` is provided. In this case the \"Up Next\" area will be populated by the contents of the album. This is to allow queueing of multiple albums - since the 'Add to Up Next' will insert after all the tracks. This means that If you're creating a PQ from an album, you can only shuffle it if you set `key`. This is due to the above implicit queueing of albums when no `key` is provided as well as the current limitation that you cannot shuffle a PQ with an \"Up Next\" area. + The play queue window advances as the server receives timeline requests. The client needs to retrieve the play queue as the “now playing” item changes. There is no play queue API to update the playing item. + """ + + def create_play_queue( + self, + *, + request: Union[ + operations.CreatePlayQueueRequest, + operations.CreatePlayQueueRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CreatePlayQueueResponse: + r"""Create a play queue + + Makes a new play queue for a device. The source of the playqueue can either be a URI, or a playlist. The response is a media container with the initial items in the queue. Each item in the queue will be a regular item but with `playQueueItemID` - a unique ID since the queue could have repeated items with the same `ratingKey`. + Note: Either `uri` or `playlistID` must be specified + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CreatePlayQueueRequest) + request = cast(operations.CreatePlayQueueRequest, request) + + req = self._build_request( + method="POST", + path="/playQueues", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.CreatePlayQueueGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="createPlayQueue", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.CreatePlayQueueResponse( + object=unmarshal_json_response( + Optional[operations.CreatePlayQueueResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def create_play_queue_async( + self, + *, + request: Union[ + operations.CreatePlayQueueRequest, + operations.CreatePlayQueueRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CreatePlayQueueResponse: + r"""Create a play queue + + Makes a new play queue for a device. The source of the playqueue can either be a URI, or a playlist. The response is a media container with the initial items in the queue. Each item in the queue will be a regular item but with `playQueueItemID` - a unique ID since the queue could have repeated items with the same `ratingKey`. + Note: Either `uri` or `playlistID` must be specified + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CreatePlayQueueRequest) + request = cast(operations.CreatePlayQueueRequest, request) + + req = self._build_request_async( + method="POST", + path="/playQueues", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.CreatePlayQueueGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="createPlayQueue", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.CreatePlayQueueResponse( + object=unmarshal_json_response( + Optional[operations.CreatePlayQueueResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_play_queue( + self, + *, + request: Union[ + operations.GetPlayQueueRequest, operations.GetPlayQueueRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPlayQueueResponse: + r"""Retrieve a play queue + + Retrieves the play queue, centered at current item. This can be treated as a regular container by play queue-oblivious clients, but they may wish to request a large window onto the queue since they won't know to refresh. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPlayQueueRequest) + request = cast(operations.GetPlayQueueRequest, request) + + req = self._build_request( + method="GET", + path="/playQueues/{playQueueId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPlayQueueGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPlayQueue", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPlayQueueResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_play_queue_async( + self, + *, + request: Union[ + operations.GetPlayQueueRequest, operations.GetPlayQueueRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPlayQueueResponse: + r"""Retrieve a play queue + + Retrieves the play queue, centered at current item. This can be treated as a regular container by play queue-oblivious clients, but they may wish to request a large window onto the queue since they won't know to refresh. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPlayQueueRequest) + request = cast(operations.GetPlayQueueRequest, request) + + req = self._build_request_async( + method="GET", + path="/playQueues/{playQueueId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPlayQueueGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPlayQueue", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPlayQueueResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def add_to_play_queue( + self, + *, + request: Union[ + operations.AddToPlayQueueRequest, operations.AddToPlayQueueRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddToPlayQueueResponse: + r"""Add a generator or playlist to a play queue + + Adds an item to a play queue (e.g. party mode). Increments the version of the play queue. Takes the following parameters (`uri` and `playlistID` are mutually exclusive). Returns the modified play queue. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddToPlayQueueRequest) + request = cast(operations.AddToPlayQueueRequest, request) + + req = self._build_request( + method="PUT", + path="/playQueues/{playQueueId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.AddToPlayQueueGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addToPlayQueue", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.AddToPlayQueueResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def add_to_play_queue_async( + self, + *, + request: Union[ + operations.AddToPlayQueueRequest, operations.AddToPlayQueueRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddToPlayQueueResponse: + r"""Add a generator or playlist to a play queue + + Adds an item to a play queue (e.g. party mode). Increments the version of the play queue. Takes the following parameters (`uri` and `playlistID` are mutually exclusive). Returns the modified play queue. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddToPlayQueueRequest) + request = cast(operations.AddToPlayQueueRequest, request) + + req = self._build_request_async( + method="PUT", + path="/playQueues/{playQueueId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.AddToPlayQueueGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addToPlayQueue", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.AddToPlayQueueResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def clear_play_queue( + self, + *, + request: Union[ + operations.ClearPlayQueueRequest, operations.ClearPlayQueueRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ClearPlayQueueResponse: + r"""Clear a play queue + + Deletes all items in the play queue, and increases the version of the play queue. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ClearPlayQueueRequest) + request = cast(operations.ClearPlayQueueRequest, request) + + req = self._build_request( + method="DELETE", + path="/playQueues/{playQueueId}/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ClearPlayQueueGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="clearPlayQueue", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ClearPlayQueueResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def clear_play_queue_async( + self, + *, + request: Union[ + operations.ClearPlayQueueRequest, operations.ClearPlayQueueRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ClearPlayQueueResponse: + r"""Clear a play queue + + Deletes all items in the play queue, and increases the version of the play queue. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ClearPlayQueueRequest) + request = cast(operations.ClearPlayQueueRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/playQueues/{playQueueId}/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ClearPlayQueueGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="clearPlayQueue", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ClearPlayQueueResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def reset_play_queue( + self, + *, + request: Union[ + operations.ResetPlayQueueRequest, operations.ResetPlayQueueRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ResetPlayQueueResponse: + r"""Reset a play queue + + Reset a play queue to the first item being the current item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ResetPlayQueueRequest) + request = cast(operations.ResetPlayQueueRequest, request) + + req = self._build_request( + method="PUT", + path="/playQueues/{playQueueId}/reset", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ResetPlayQueueGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="resetPlayQueue", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ResetPlayQueueResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def reset_play_queue_async( + self, + *, + request: Union[ + operations.ResetPlayQueueRequest, operations.ResetPlayQueueRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ResetPlayQueueResponse: + r"""Reset a play queue + + Reset a play queue to the first item being the current item + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ResetPlayQueueRequest) + request = cast(operations.ResetPlayQueueRequest, request) + + req = self._build_request_async( + method="PUT", + path="/playQueues/{playQueueId}/reset", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ResetPlayQueueGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="resetPlayQueue", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ResetPlayQueueResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def shuffle( + self, + *, + request: Union[operations.ShuffleRequest, operations.ShuffleRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ShuffleResponse: + r"""Shuffle a play queue + + Shuffle a play queue (or reshuffles if already shuffled). The currently selected item is maintained. Note that this is currently only supported for play queues *without* an Up Next area. Returns the modified play queue. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ShuffleRequest) + request = cast(operations.ShuffleRequest, request) + + req = self._build_request( + method="PUT", + path="/playQueues/{playQueueId}/shuffle", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ShuffleGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="shuffle", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ShuffleResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def shuffle_async( + self, + *, + request: Union[operations.ShuffleRequest, operations.ShuffleRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ShuffleResponse: + r"""Shuffle a play queue + + Shuffle a play queue (or reshuffles if already shuffled). The currently selected item is maintained. Note that this is currently only supported for play queues *without* an Up Next area. Returns the modified play queue. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ShuffleRequest) + request = cast(operations.ShuffleRequest, request) + + req = self._build_request_async( + method="PUT", + path="/playQueues/{playQueueId}/shuffle", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ShuffleGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="shuffle", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ShuffleResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def unshuffle( + self, + *, + request: Union[ + operations.UnshuffleRequest, operations.UnshuffleRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.UnshuffleResponse: + r"""Unshuffle a play queue + + Unshuffles a play queue and restores \"natural order\". Note that this is currently only supported for play queues *without* an Up Next area. Returns the modified play queue. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UnshuffleRequest) + request = cast(operations.UnshuffleRequest, request) + + req = self._build_request( + method="PUT", + path="/playQueues/{playQueueId}/unshuffle", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.UnshuffleGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="unshuffle", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.UnshuffleResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def unshuffle_async( + self, + *, + request: Union[ + operations.UnshuffleRequest, operations.UnshuffleRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.UnshuffleResponse: + r"""Unshuffle a play queue + + Unshuffles a play queue and restores \"natural order\". Note that this is currently only supported for play queues *without* an Up Next area. Returns the modified play queue. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UnshuffleRequest) + request = cast(operations.UnshuffleRequest, request) + + req = self._build_request_async( + method="PUT", + path="/playQueues/{playQueueId}/unshuffle", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.UnshuffleGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="unshuffle", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.UnshuffleResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_play_queue_item( + self, + *, + request: Union[ + operations.DeletePlayQueueItemRequest, + operations.DeletePlayQueueItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeletePlayQueueItemResponse: + r"""Delete an item from a play queue + + Deletes an item in a play queue. Increments the version of the play queue. Returns the modified play queue. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeletePlayQueueItemRequest) + request = cast(operations.DeletePlayQueueItemRequest, request) + + req = self._build_request( + method="DELETE", + path="/playQueues/{playQueueId}/items/{playQueueItemId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.DeletePlayQueueItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deletePlayQueueItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.DeletePlayQueueItemResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_play_queue_item_async( + self, + *, + request: Union[ + operations.DeletePlayQueueItemRequest, + operations.DeletePlayQueueItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeletePlayQueueItemResponse: + r"""Delete an item from a play queue + + Deletes an item in a play queue. Increments the version of the play queue. Returns the modified play queue. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeletePlayQueueItemRequest) + request = cast(operations.DeletePlayQueueItemRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/playQueues/{playQueueId}/items/{playQueueItemId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.DeletePlayQueueItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deletePlayQueueItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.DeletePlayQueueItemResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def move_play_queue_item( + self, + *, + request: Union[ + operations.MovePlayQueueItemRequest, + operations.MovePlayQueueItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.MovePlayQueueItemResponse: + r"""Move an item in a play queue + + Moves an item in a play queue, and increases the version of the play queue. Returns the modified play queue. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.MovePlayQueueItemRequest) + request = cast(operations.MovePlayQueueItemRequest, request) + + req = self._build_request( + method="PUT", + path="/playQueues/{playQueueId}/items/{playQueueItemId}/move", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.MovePlayQueueItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="movePlayQueueItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.MovePlayQueueItemResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def move_play_queue_item_async( + self, + *, + request: Union[ + operations.MovePlayQueueItemRequest, + operations.MovePlayQueueItemRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.MovePlayQueueItemResponse: + r"""Move an item in a play queue + + Moves an item in a play queue, and increases the version of the play queue. Returns the modified play queue. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.MovePlayQueueItemRequest) + request = cast(operations.MovePlayQueueItemRequest, request) + + req = self._build_request_async( + method="PUT", + path="/playQueues/{playQueueId}/items/{playQueueItemId}/move", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.MovePlayQueueItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="movePlayQueueItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.MovePlayQueueItemResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/playlist.py b/src/plex_api_client/playlist.py new file mode 100644 index 0000000..9ee2f3c --- /dev/null +++ b/src/plex_api_client/playlist.py @@ -0,0 +1,639 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import components, errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class Playlist(BaseSDK): + r"""Media playlists that can be created and played back""" + + def list_playlists( + self, + *, + request: Union[ + operations.ListPlaylistsRequest, operations.ListPlaylistsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListPlaylistsResponse: + r"""List playlists + + Gets a list of playlists and playlist folders for a user. General filters are permitted, such as `sort=lastViewedAt:desc`. A flat playlist list can be retrieved using `type=15` to limit the collection to just playlists. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListPlaylistsRequest) + request = cast(operations.ListPlaylistsRequest, request) + + req = self._build_request( + method="GET", + path="/playlists", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListPlaylistsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listPlaylists", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListPlaylistsResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def list_playlists_async( + self, + *, + request: Union[ + operations.ListPlaylistsRequest, operations.ListPlaylistsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListPlaylistsResponse: + r"""List playlists + + Gets a list of playlists and playlist folders for a user. General filters are permitted, such as `sort=lastViewedAt:desc`. A flat playlist list can be retrieved using `type=15` to limit the collection to just playlists. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListPlaylistsRequest) + request = cast(operations.ListPlaylistsRequest, request) + + req = self._build_request_async( + method="GET", + path="/playlists", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListPlaylistsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listPlaylists", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListPlaylistsResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_playlist( + self, + *, + request: Union[ + operations.GetPlaylistRequest, operations.GetPlaylistRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPlaylistResponse: + r"""Retrieve Playlist + + Gets detailed metadata for a playlist. A playlist for many purposes (rating, editing metadata, tagging), can be treated like a regular metadata item: + Smart playlist details contain the `content` attribute. This is the content URI for the generator. This can then be parsed by a client to provide smart playlist editing. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPlaylistRequest) + request = cast(operations.GetPlaylistRequest, request) + + req = self._build_request( + method="GET", + path="/playlists/{playlistId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPlaylistGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPlaylist", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPlaylistResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_playlist_async( + self, + *, + request: Union[ + operations.GetPlaylistRequest, operations.GetPlaylistRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPlaylistResponse: + r"""Retrieve Playlist + + Gets detailed metadata for a playlist. A playlist for many purposes (rating, editing metadata, tagging), can be treated like a regular metadata item: + Smart playlist details contain the `content` attribute. This is the content URI for the generator. This can then be parsed by a client to provide smart playlist editing. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPlaylistRequest) + request = cast(operations.GetPlaylistRequest, request) + + req = self._build_request_async( + method="GET", + path="/playlists/{playlistId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPlaylistGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPlaylist", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPlaylistResponse( + media_container_with_playlist_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithPlaylistMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_playlist_items( + self, + *, + request: Union[ + operations.GetPlaylistItemsRequest, + operations.GetPlaylistItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPlaylistItemsResponse: + r"""Retrieve Playlist Contents + + Gets the contents of a playlist. Should be paged by clients via standard mechanisms. By default leaves are returned (e.g. episodes, movies). In order to return other types you can use the `type` parameter. For example, you could use this to display a list of recently added albums vis a smart playlist. Note that for dumb playlists, items have a `playlistItemID` attribute which is used for deleting or moving items. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPlaylistItemsRequest) + request = cast(operations.GetPlaylistItemsRequest, request) + + req = self._build_request( + method="GET", + path="/playlists/{playlistId}/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPlaylistItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPlaylistItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPlaylistItemsResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_playlist_items_async( + self, + *, + request: Union[ + operations.GetPlaylistItemsRequest, + operations.GetPlaylistItemsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPlaylistItemsResponse: + r"""Retrieve Playlist Contents + + Gets the contents of a playlist. Should be paged by clients via standard mechanisms. By default leaves are returned (e.g. episodes, movies). In order to return other types you can use the `type` parameter. For example, you could use this to display a list of recently added albums vis a smart playlist. Note that for dumb playlists, items have a `playlistItemID` attribute which is used for deleting or moving items. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPlaylistItemsRequest) + request = cast(operations.GetPlaylistItemsRequest, request) + + req = self._build_request_async( + method="GET", + path="/playlists/{playlistId}/items", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPlaylistItemsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPlaylistItems", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPlaylistItemsResponse( + media_container_with_metadata=unmarshal_json_response( + Optional[components.MediaContainerWithMetadata], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/playlists.py b/src/plex_api_client/playlists.py deleted file mode 100644 index 8926350..0000000 --- a/src/plex_api_client/playlists.py +++ /dev/null @@ -1,1894 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from .basesdk import BaseSDK -from plex_api_client import utils -from plex_api_client._hooks import HookContext -from plex_api_client.models import errors, operations -from plex_api_client.types import BaseModel, OptionalNullable, UNSET -from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Mapping, Optional, Union, cast - - -class Playlists(BaseSDK): - r"""Playlists are ordered collections of media. They can be dumb (just a list of media) or smart (based on a media query, such as \"all albums from 2017\"). - They can be organized in (optionally nesting) folders. - Retrieving a playlist, or its items, will trigger a refresh of its metadata. - This may cause the duration and number of items to change. - - """ - - def create_playlist( - self, - *, - request: Union[ - operations.CreatePlaylistRequest, operations.CreatePlaylistRequestTypedDict - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.CreatePlaylistResponse: - r"""Create a Playlist - - Create a new playlist. By default the playlist is blank. To create a playlist along with a first item, pass: - - `uri` - The content URI for what we're playing (e.g. `server://1234/com.plexapp.plugins.library/library/metadata/1`). - - `playQueueID` - To create a playlist from an existing play queue. - - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.CreatePlaylistRequest) - request = cast(operations.CreatePlaylistRequest, request) - - req = self._build_request( - method="POST", - path="/playlists", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="createPlaylist", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.CreatePlaylistResponse( - object=unmarshal_json_response( - Optional[operations.CreatePlaylistResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.CreatePlaylistBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.CreatePlaylistBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.CreatePlaylistUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.CreatePlaylistUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def create_playlist_async( - self, - *, - request: Union[ - operations.CreatePlaylistRequest, operations.CreatePlaylistRequestTypedDict - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.CreatePlaylistResponse: - r"""Create a Playlist - - Create a new playlist. By default the playlist is blank. To create a playlist along with a first item, pass: - - `uri` - The content URI for what we're playing (e.g. `server://1234/com.plexapp.plugins.library/library/metadata/1`). - - `playQueueID` - To create a playlist from an existing play queue. - - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.CreatePlaylistRequest) - request = cast(operations.CreatePlaylistRequest, request) - - req = self._build_request_async( - method="POST", - path="/playlists", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="createPlaylist", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.CreatePlaylistResponse( - object=unmarshal_json_response( - Optional[operations.CreatePlaylistResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.CreatePlaylistBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.CreatePlaylistBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.CreatePlaylistUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.CreatePlaylistUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_playlists( - self, - *, - playlist_type: Optional[operations.PlaylistType] = None, - smart: Optional[operations.QueryParamSmart] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetPlaylistsResponse: - r"""Get All Playlists - - Get All Playlists given the specified filters. - - :param playlist_type: limit to a type of playlist. - :param smart: type of playlists to return (default is all). - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetPlaylistsRequest( - playlist_type=playlist_type, - smart=smart, - ) - - req = self._build_request( - method="GET", - path="/playlists", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getPlaylists", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetPlaylistsResponse( - object=unmarshal_json_response( - Optional[operations.GetPlaylistsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetPlaylistsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetPlaylistsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetPlaylistsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetPlaylistsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_playlists_async( - self, - *, - playlist_type: Optional[operations.PlaylistType] = None, - smart: Optional[operations.QueryParamSmart] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetPlaylistsResponse: - r"""Get All Playlists - - Get All Playlists given the specified filters. - - :param playlist_type: limit to a type of playlist. - :param smart: type of playlists to return (default is all). - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetPlaylistsRequest( - playlist_type=playlist_type, - smart=smart, - ) - - req = self._build_request_async( - method="GET", - path="/playlists", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getPlaylists", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetPlaylistsResponse( - object=unmarshal_json_response( - Optional[operations.GetPlaylistsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetPlaylistsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetPlaylistsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetPlaylistsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetPlaylistsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_playlist( - self, - *, - playlist_id: float, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetPlaylistResponse: - r"""Retrieve Playlist - - Gets detailed metadata for a playlist. A playlist for many purposes (rating, editing metadata, tagging), can be treated like a regular metadata item: - Smart playlist details contain the `content` attribute. This is the content URI for the generator. This can then be parsed by a client to provide smart playlist editing. - - - :param playlist_id: the ID of the playlist - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetPlaylistRequest( - playlist_id=playlist_id, - ) - - req = self._build_request( - method="GET", - path="/playlists/{playlistID}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getPlaylist", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetPlaylistResponse( - object=unmarshal_json_response( - Optional[operations.GetPlaylistResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetPlaylistBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetPlaylistBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetPlaylistUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetPlaylistUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_playlist_async( - self, - *, - playlist_id: float, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetPlaylistResponse: - r"""Retrieve Playlist - - Gets detailed metadata for a playlist. A playlist for many purposes (rating, editing metadata, tagging), can be treated like a regular metadata item: - Smart playlist details contain the `content` attribute. This is the content URI for the generator. This can then be parsed by a client to provide smart playlist editing. - - - :param playlist_id: the ID of the playlist - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetPlaylistRequest( - playlist_id=playlist_id, - ) - - req = self._build_request_async( - method="GET", - path="/playlists/{playlistID}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getPlaylist", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetPlaylistResponse( - object=unmarshal_json_response( - Optional[operations.GetPlaylistResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetPlaylistBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetPlaylistBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetPlaylistUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetPlaylistUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def delete_playlist( - self, - *, - playlist_id: float, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.DeletePlaylistResponse: - r"""Deletes a Playlist - - This endpoint will delete a playlist - - - :param playlist_id: the ID of the playlist - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.DeletePlaylistRequest( - playlist_id=playlist_id, - ) - - req = self._build_request( - method="DELETE", - path="/playlists/{playlistID}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="deletePlaylist", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "204", "*"): - return operations.DeletePlaylistResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.DeletePlaylistBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.DeletePlaylistBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.DeletePlaylistUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.DeletePlaylistUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def delete_playlist_async( - self, - *, - playlist_id: float, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.DeletePlaylistResponse: - r"""Deletes a Playlist - - This endpoint will delete a playlist - - - :param playlist_id: the ID of the playlist - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.DeletePlaylistRequest( - playlist_id=playlist_id, - ) - - req = self._build_request_async( - method="DELETE", - path="/playlists/{playlistID}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="deletePlaylist", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "204", "*"): - return operations.DeletePlaylistResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.DeletePlaylistBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.DeletePlaylistBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.DeletePlaylistUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.DeletePlaylistUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def update_playlist( - self, - *, - playlist_id: float, - title: Optional[str] = None, - summary: Optional[str] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.UpdatePlaylistResponse: - r"""Update a Playlist - - From PMS version 1.9.1 clients can also edit playlist metadata using this endpoint as they would via `PUT /library/metadata/{playlistID}` - - - :param playlist_id: the ID of the playlist - :param title: name of the playlist - :param summary: summary description of the playlist - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.UpdatePlaylistRequest( - playlist_id=playlist_id, - title=title, - summary=summary, - ) - - req = self._build_request( - method="PUT", - path="/playlists/{playlistID}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="updatePlaylist", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.UpdatePlaylistResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.UpdatePlaylistBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.UpdatePlaylistBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UpdatePlaylistUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.UpdatePlaylistUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def update_playlist_async( - self, - *, - playlist_id: float, - title: Optional[str] = None, - summary: Optional[str] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.UpdatePlaylistResponse: - r"""Update a Playlist - - From PMS version 1.9.1 clients can also edit playlist metadata using this endpoint as they would via `PUT /library/metadata/{playlistID}` - - - :param playlist_id: the ID of the playlist - :param title: name of the playlist - :param summary: summary description of the playlist - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.UpdatePlaylistRequest( - playlist_id=playlist_id, - title=title, - summary=summary, - ) - - req = self._build_request_async( - method="PUT", - path="/playlists/{playlistID}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="updatePlaylist", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.UpdatePlaylistResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.UpdatePlaylistBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.UpdatePlaylistBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UpdatePlaylistUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.UpdatePlaylistUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_playlist_contents( - self, - *, - playlist_id: float, - type_: operations.GetPlaylistContentsQueryParamType, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetPlaylistContentsResponse: - r"""Retrieve Playlist Contents - - Gets the contents of a playlist. Should be paged by clients via standard mechanisms. - By default leaves are returned (e.g. episodes, movies). In order to return other types you can use the `type` parameter. - For example, you could use this to display a list of recently added albums vis a smart playlist. - Note that for dumb playlists, items have a `playlistItemID` attribute which is used for deleting or moving items. - - - :param playlist_id: the ID of the playlist - :param type: The type of media to retrieve or filter by. 1 = movie 2 = show 3 = season 4 = episode E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetPlaylistContentsRequest( - playlist_id=playlist_id, - type=type_, - ) - - req = self._build_request( - method="GET", - path="/playlists/{playlistID}/items", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getPlaylistContents", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetPlaylistContentsResponse( - object=unmarshal_json_response( - Optional[operations.GetPlaylistContentsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetPlaylistContentsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetPlaylistContentsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetPlaylistContentsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetPlaylistContentsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_playlist_contents_async( - self, - *, - playlist_id: float, - type_: operations.GetPlaylistContentsQueryParamType, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetPlaylistContentsResponse: - r"""Retrieve Playlist Contents - - Gets the contents of a playlist. Should be paged by clients via standard mechanisms. - By default leaves are returned (e.g. episodes, movies). In order to return other types you can use the `type` parameter. - For example, you could use this to display a list of recently added albums vis a smart playlist. - Note that for dumb playlists, items have a `playlistItemID` attribute which is used for deleting or moving items. - - - :param playlist_id: the ID of the playlist - :param type: The type of media to retrieve or filter by. 1 = movie 2 = show 3 = season 4 = episode E.g. A movie library will not return anything with type 3 as there are no seasons for movie libraries - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetPlaylistContentsRequest( - playlist_id=playlist_id, - type=type_, - ) - - req = self._build_request_async( - method="GET", - path="/playlists/{playlistID}/items", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getPlaylistContents", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetPlaylistContentsResponse( - object=unmarshal_json_response( - Optional[operations.GetPlaylistContentsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetPlaylistContentsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetPlaylistContentsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetPlaylistContentsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetPlaylistContentsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def clear_playlist_contents( - self, - *, - playlist_id: float, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.ClearPlaylistContentsResponse: - r"""Delete Playlist Contents - - Clears a playlist, only works with dumb playlists. Returns the playlist. - - - :param playlist_id: the ID of the playlist - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.ClearPlaylistContentsRequest( - playlist_id=playlist_id, - ) - - req = self._build_request( - method="DELETE", - path="/playlists/{playlistID}/items", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="clearPlaylistContents", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.ClearPlaylistContentsResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.ClearPlaylistContentsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.ClearPlaylistContentsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.ClearPlaylistContentsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.ClearPlaylistContentsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def clear_playlist_contents_async( - self, - *, - playlist_id: float, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.ClearPlaylistContentsResponse: - r"""Delete Playlist Contents - - Clears a playlist, only works with dumb playlists. Returns the playlist. - - - :param playlist_id: the ID of the playlist - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.ClearPlaylistContentsRequest( - playlist_id=playlist_id, - ) - - req = self._build_request_async( - method="DELETE", - path="/playlists/{playlistID}/items", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="clearPlaylistContents", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.ClearPlaylistContentsResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.ClearPlaylistContentsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.ClearPlaylistContentsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.ClearPlaylistContentsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.ClearPlaylistContentsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def add_playlist_contents( - self, - *, - playlist_id: float, - uri: str, - play_queue_id: Optional[float] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.AddPlaylistContentsResponse: - r"""Adding to a Playlist - - Adds a generator to a playlist, same parameters as the POST to create. With a dumb playlist, this adds the specified items to the playlist. - With a smart playlist, passing a new `uri` parameter replaces the rules for the playlist. Returns the playlist. - - - :param playlist_id: the ID of the playlist - :param uri: the content URI for the playlist - :param play_queue_id: the play queue to add to a playlist - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.AddPlaylistContentsRequest( - playlist_id=playlist_id, - uri=uri, - play_queue_id=play_queue_id, - ) - - req = self._build_request( - method="PUT", - path="/playlists/{playlistID}/items", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="addPlaylistContents", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.AddPlaylistContentsResponse( - object=unmarshal_json_response( - Optional[operations.AddPlaylistContentsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.AddPlaylistContentsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.AddPlaylistContentsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.AddPlaylistContentsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.AddPlaylistContentsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def add_playlist_contents_async( - self, - *, - playlist_id: float, - uri: str, - play_queue_id: Optional[float] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.AddPlaylistContentsResponse: - r"""Adding to a Playlist - - Adds a generator to a playlist, same parameters as the POST to create. With a dumb playlist, this adds the specified items to the playlist. - With a smart playlist, passing a new `uri` parameter replaces the rules for the playlist. Returns the playlist. - - - :param playlist_id: the ID of the playlist - :param uri: the content URI for the playlist - :param play_queue_id: the play queue to add to a playlist - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.AddPlaylistContentsRequest( - playlist_id=playlist_id, - uri=uri, - play_queue_id=play_queue_id, - ) - - req = self._build_request_async( - method="PUT", - path="/playlists/{playlistID}/items", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="addPlaylistContents", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.AddPlaylistContentsResponse( - object=unmarshal_json_response( - Optional[operations.AddPlaylistContentsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.AddPlaylistContentsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.AddPlaylistContentsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.AddPlaylistContentsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.AddPlaylistContentsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def upload_playlist( - self, - *, - path: str, - force: operations.QueryParamForce, - section_id: int = 1, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.UploadPlaylistResponse: - r"""Upload Playlist - - Imports m3u playlists by passing a path on the server to scan for m3u-formatted playlist files, or a path to a single playlist file. - - - :param path: absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server. If the `path` argument is a directory, that path will be scanned for playlist files to be processed. Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it. The GUID of each playlist is based on the filename. If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it. The GUID of each playlist is based on the filename. - :param force: Force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist. The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded. - :param section_id: Possibly the section ID to upload the playlist to, we are not certain. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.UploadPlaylistRequest( - path=path, - force=force, - section_id=section_id, - ) - - req = self._build_request( - method="POST", - path="/playlists/upload", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="uploadPlaylist", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.UploadPlaylistResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.UploadPlaylistBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.UploadPlaylistBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UploadPlaylistUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.UploadPlaylistUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def upload_playlist_async( - self, - *, - path: str, - force: operations.QueryParamForce, - section_id: int = 1, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.UploadPlaylistResponse: - r"""Upload Playlist - - Imports m3u playlists by passing a path on the server to scan for m3u-formatted playlist files, or a path to a single playlist file. - - - :param path: absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server. If the `path` argument is a directory, that path will be scanned for playlist files to be processed. Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it. The GUID of each playlist is based on the filename. If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it. The GUID of each playlist is based on the filename. - :param force: Force overwriting of duplicate playlists. By default, a playlist file uploaded with the same path will overwrite the existing playlist. The `force` argument is used to disable overwriting. If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded. - :param section_id: Possibly the section ID to upload the playlist to, we are not certain. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.UploadPlaylistRequest( - path=path, - force=force, - section_id=section_id, - ) - - req = self._build_request_async( - method="POST", - path="/playlists/upload", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="uploadPlaylist", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.UploadPlaylistResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.UploadPlaylistBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.UploadPlaylistBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.UploadPlaylistUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.UploadPlaylistUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/plex.py b/src/plex_api_client/plex.py deleted file mode 100644 index 25339f4..0000000 --- a/src/plex_api_client/plex.py +++ /dev/null @@ -1,1389 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from .basesdk import BaseSDK -from plex_api_client import utils -from plex_api_client._hooks import HookContext -from plex_api_client.models import errors, operations -from plex_api_client.types import BaseModel, OptionalNullable, UNSET -from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, List, Mapping, Optional, Union, cast - - -class Plex(BaseSDK): - r"""API Calls that perform operations directly against https://Plex.tv""" - - def get_companions_data( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetCompanionsDataResponse: - r"""Get Companions Data - - Get Companions Data - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_COMPANIONS_DATA_SERVERS[0] - req = self._build_request( - method="GET", - path="/companions", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getCompanionsData", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetCompanionsDataResponse( - response_bodies=unmarshal_json_response( - Optional[List[operations.ResponseBody]], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetCompanionsDataBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetCompanionsDataBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetCompanionsDataUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetCompanionsDataUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_companions_data_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetCompanionsDataResponse: - r"""Get Companions Data - - Get Companions Data - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_COMPANIONS_DATA_SERVERS[0] - req = self._build_request_async( - method="GET", - path="/companions", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getCompanionsData", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetCompanionsDataResponse( - response_bodies=unmarshal_json_response( - Optional[List[operations.ResponseBody]], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetCompanionsDataBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetCompanionsDataBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetCompanionsDataUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetCompanionsDataUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_user_friends( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetUserFriendsResponse: - r"""Get list of friends of the user logged in - - Get friends of provided auth token. - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_USER_FRIENDS_SERVERS[0] - req = self._build_request( - method="GET", - path="/friends", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getUserFriends", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetUserFriendsResponse( - friends=unmarshal_json_response( - Optional[List[operations.Friend]], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetUserFriendsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetUserFriendsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetUserFriendsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetUserFriendsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_user_friends_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetUserFriendsResponse: - r"""Get list of friends of the user logged in - - Get friends of provided auth token. - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_USER_FRIENDS_SERVERS[0] - req = self._build_request_async( - method="GET", - path="/friends", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getUserFriends", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetUserFriendsResponse( - friends=unmarshal_json_response( - Optional[List[operations.Friend]], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetUserFriendsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetUserFriendsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetUserFriendsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetUserFriendsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_geo_data( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetGeoDataResponse: - r"""Get Geo Data - - Returns the geolocation and locale data of the caller - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_GEO_DATA_SERVERS[0] - req = self._build_request( - method="GET", - path="/geoip", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=False, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getGeoData", - oauth2_scopes=[], - security_source=None, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetGeoDataResponse( - geo_data=unmarshal_json_response( - Optional[operations.GetGeoDataGeoData], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetGeoDataBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetGeoDataBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetGeoDataUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetGeoDataUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_geo_data_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetGeoDataResponse: - r"""Get Geo Data - - Returns the geolocation and locale data of the caller - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_GEO_DATA_SERVERS[0] - req = self._build_request_async( - method="GET", - path="/geoip", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=False, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getGeoData", - oauth2_scopes=[], - security_source=None, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetGeoDataResponse( - geo_data=unmarshal_json_response( - Optional[operations.GetGeoDataGeoData], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetGeoDataBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetGeoDataBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetGeoDataUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetGeoDataUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_home_data( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetHomeDataResponse: - r"""Get Plex Home Data - - Retrieves the home data for the authenticated user, including details like home ID, name, guest access information, and subscription status. - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request( - method="GET", - path="/home", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getHomeData", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetHomeDataResponse( - object=unmarshal_json_response( - Optional[operations.GetHomeDataResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetHomeDataBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetHomeDataBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetHomeDataUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetHomeDataUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_home_data_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetHomeDataResponse: - r"""Get Plex Home Data - - Retrieves the home data for the authenticated user, including details like home ID, name, guest access information, and subscription status. - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request_async( - method="GET", - path="/home", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getHomeData", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetHomeDataResponse( - object=unmarshal_json_response( - Optional[operations.GetHomeDataResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetHomeDataBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetHomeDataBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetHomeDataUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetHomeDataUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_server_resources( - self, - *, - client_id: str, - include_https: Optional[ - operations.IncludeHTTPS - ] = operations.IncludeHTTPS.DISABLE, - include_relay: Optional[ - operations.IncludeRelay - ] = operations.IncludeRelay.DISABLE, - include_i_pv6: Optional[ - operations.IncludeIPv6 - ] = operations.IncludeIPv6.DISABLE, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetServerResourcesResponse: - r"""Get Server Resources - - Get Plex server access tokens and server connections - - :param client_id: An opaque identifier unique to the client (UUID, serial number, or other unique device ID) - :param include_https: Include Https entries in the results - :param include_relay: Include Relay addresses in the results E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400 - :param include_i_pv6: Include IPv6 entries in the results - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_SERVER_RESOURCES_SERVERS[0] - - request = operations.GetServerResourcesRequest( - include_https=include_https, - include_relay=include_relay, - include_i_pv6=include_i_pv6, - client_id=client_id, - ) - - req = self._build_request( - method="GET", - path="/resources", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-server-resources", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetServerResourcesResponse( - plex_devices=unmarshal_json_response( - Optional[List[operations.PlexDevice]], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerResourcesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerResourcesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerResourcesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerResourcesUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_server_resources_async( - self, - *, - client_id: str, - include_https: Optional[ - operations.IncludeHTTPS - ] = operations.IncludeHTTPS.DISABLE, - include_relay: Optional[ - operations.IncludeRelay - ] = operations.IncludeRelay.DISABLE, - include_i_pv6: Optional[ - operations.IncludeIPv6 - ] = operations.IncludeIPv6.DISABLE, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetServerResourcesResponse: - r"""Get Server Resources - - Get Plex server access tokens and server connections - - :param client_id: An opaque identifier unique to the client (UUID, serial number, or other unique device ID) - :param include_https: Include Https entries in the results - :param include_relay: Include Relay addresses in the results E.g: https://10-0-0-25.bbf8e10c7fa20447cacee74cd9914cde.plex.direct:32400 - :param include_i_pv6: Include IPv6 entries in the results - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_SERVER_RESOURCES_SERVERS[0] - - request = operations.GetServerResourcesRequest( - include_https=include_https, - include_relay=include_relay, - include_i_pv6=include_i_pv6, - client_id=client_id, - ) - - req = self._build_request_async( - method="GET", - path="/resources", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-server-resources", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetServerResourcesResponse( - plex_devices=unmarshal_json_response( - Optional[List[operations.PlexDevice]], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerResourcesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerResourcesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerResourcesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerResourcesUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_pin( - self, - *, - request: Union[operations.GetPinRequest, operations.GetPinRequestTypedDict], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetPinResponse: - r"""Get a Pin - - Retrieve a Pin ID from Plex.tv to use for authentication flows - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_PIN_SERVERS[0] - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetPinRequest) - request = cast(operations.GetPinRequest, request) - - req = self._build_request( - method="POST", - path="/pins", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getPin", - oauth2_scopes=[], - security_source=None, - ), - request=req, - error_status_codes=["400", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "201", "application/json"): - return operations.GetPinResponse( - auth_pin_container=unmarshal_json_response( - Optional[operations.GetPinAuthPinContainer], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetPinBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetPinBadRequest(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_pin_async( - self, - *, - request: Union[operations.GetPinRequest, operations.GetPinRequestTypedDict], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetPinResponse: - r"""Get a Pin - - Retrieve a Pin ID from Plex.tv to use for authentication flows - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_PIN_SERVERS[0] - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetPinRequest) - request = cast(operations.GetPinRequest, request) - - req = self._build_request_async( - method="POST", - path="/pins", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getPin", - oauth2_scopes=[], - security_source=None, - ), - request=req, - error_status_codes=["400", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "201", "application/json"): - return operations.GetPinResponse( - auth_pin_container=unmarshal_json_response( - Optional[operations.GetPinAuthPinContainer], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetPinBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetPinBadRequest(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_token_by_pin_id( - self, - *, - request: Union[ - operations.GetTokenByPinIDRequest, - operations.GetTokenByPinIDRequestTypedDict, - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetTokenByPinIDResponse: - r"""Get Access Token by PinId - - Retrieve an Access Token from Plex.tv after the Pin has been authenticated - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_TOKEN_BY_PIN_ID_SERVERS[0] - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetTokenByPinIDRequest) - request = cast(operations.GetTokenByPinIDRequest, request) - - req = self._build_request( - method="GET", - path="/pins/{pinID}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=False, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getTokenByPinId", - oauth2_scopes=[], - security_source=None, - ), - request=req, - error_status_codes=["400", "404", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetTokenByPinIDResponse( - auth_pin_container=unmarshal_json_response( - Optional[operations.GetTokenByPinIDAuthPinContainer], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetTokenByPinIDBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTokenByPinIDBadRequest(response_data, http_res) - if utils.match_response(http_res, "404", "application/json"): - response_data = unmarshal_json_response( - errors.GetTokenByPinIDResponseBodyData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTokenByPinIDResponseBody(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_token_by_pin_id_async( - self, - *, - request: Union[ - operations.GetTokenByPinIDRequest, - operations.GetTokenByPinIDRequestTypedDict, - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetTokenByPinIDResponse: - r"""Get Access Token by PinId - - Retrieve an Access Token from Plex.tv after the Pin has been authenticated - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_TOKEN_BY_PIN_ID_SERVERS[0] - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetTokenByPinIDRequest) - request = cast(operations.GetTokenByPinIDRequest, request) - - req = self._build_request_async( - method="GET", - path="/pins/{pinID}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=False, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getTokenByPinId", - oauth2_scopes=[], - security_source=None, - ), - request=req, - error_status_codes=["400", "404", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetTokenByPinIDResponse( - auth_pin_container=unmarshal_json_response( - Optional[operations.GetTokenByPinIDAuthPinContainer], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetTokenByPinIDBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTokenByPinIDBadRequest(response_data, http_res) - if utils.match_response(http_res, "404", "application/json"): - response_data = unmarshal_json_response( - errors.GetTokenByPinIDResponseBodyData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTokenByPinIDResponseBody(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/preferences.py b/src/plex_api_client/preferences.py new file mode 100644 index 0000000..8cd1f38 --- /dev/null +++ b/src/plex_api_client/preferences.py @@ -0,0 +1,581 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import components, errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class Preferences(BaseSDK): + r"""API Operations against the Preferences""" + + def get_all_preferences( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAllPreferencesResponse: + r"""Get all preferences + + Get the list of all preferences + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="GET", + path="/:/prefs", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAllPreferences", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAllPreferencesResponse( + media_container_with_settings=unmarshal_json_response( + Optional[components.MediaContainerWithSettings], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_all_preferences_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAllPreferencesResponse: + r"""Get all preferences + + Get the list of all preferences + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="GET", + path="/:/prefs", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAllPreferences", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAllPreferencesResponse( + media_container_with_settings=unmarshal_json_response( + Optional[components.MediaContainerWithSettings], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def set_preferences( + self, + *, + request: Union[ + operations.SetPreferencesRequest, operations.SetPreferencesRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetPreferencesResponse: + r"""Set preferences + + Set a set of preferences in query parameters + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetPreferencesRequest) + request = cast(operations.SetPreferencesRequest, request) + + req = self._build_request( + method="PUT", + path="/:/prefs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SetPreferencesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setPreferences", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SetPreferencesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def set_preferences_async( + self, + *, + request: Union[ + operations.SetPreferencesRequest, operations.SetPreferencesRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetPreferencesResponse: + r"""Set preferences + + Set a set of preferences in query parameters + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetPreferencesRequest) + request = cast(operations.SetPreferencesRequest, request) + + req = self._build_request_async( + method="PUT", + path="/:/prefs", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SetPreferencesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setPreferences", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SetPreferencesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_preference( + self, + *, + request: Union[ + operations.GetPreferenceRequest, operations.GetPreferenceRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPreferenceResponse: + r"""Get a preferences + + Get a single preference and value + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPreferenceRequest) + request = cast(operations.GetPreferenceRequest, request) + + req = self._build_request( + method="GET", + path="/:/prefs/get", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPreferenceGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPreference", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPreferenceResponse( + media_container_with_settings=unmarshal_json_response( + Optional[components.MediaContainerWithSettings], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_preference_async( + self, + *, + request: Union[ + operations.GetPreferenceRequest, operations.GetPreferenceRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetPreferenceResponse: + r"""Get a preferences + + Get a single preference and value + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetPreferenceRequest) + request = cast(operations.GetPreferenceRequest, request) + + req = self._build_request_async( + method="GET", + path="/:/prefs/get", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetPreferenceGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getPreference", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetPreferenceResponse( + media_container_with_settings=unmarshal_json_response( + Optional[components.MediaContainerWithSettings], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/provider.py b/src/plex_api_client/provider.py new file mode 100644 index 0000000..42f9fc5 --- /dev/null +++ b/src/plex_api_client/provider.py @@ -0,0 +1,733 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class Provider(BaseSDK): + r"""Media providers are the starting points for the entire Plex Media Server media library API. It defines the paths for the groups of endpoints. The `/media/providers` should be the only hard-coded path in clients when accessing the media library. Non-media library endpoints are outside the scope of the media provider. See the description in See [the section in API Info](#section/API-Info/Media-Providers) for more information on how to use media providers.""" + + def list_providers( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListProvidersResponse: + r"""Get the list of available media providers + + Get the list of all available media providers for this PMS. This will generally include the library provider and possibly EPG if DVR is set up. + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="GET", + path="/media/providers", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listProviders", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListProvidersResponse( + object=unmarshal_json_response( + Optional[operations.ListProvidersResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def list_providers_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListProvidersResponse: + r"""Get the list of available media providers + + Get the list of all available media providers for this PMS. This will generally include the library provider and possibly EPG if DVR is set up. + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="GET", + path="/media/providers", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listProviders", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListProvidersResponse( + object=unmarshal_json_response( + Optional[operations.ListProvidersResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def add_provider( + self, + *, + request: Union[ + operations.AddProviderRequest, operations.AddProviderRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddProviderResponse: + r"""Add a media provider + + This endpoint registers a media provider with the server. Once registered, the media server acts as a reverse proxy to the provider, allowing both local and remote providers to work. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddProviderRequest) + request = cast(operations.AddProviderRequest, request) + + req = self._build_request( + method="POST", + path="/media/providers", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.AddProviderGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addProvider", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.AddProviderResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def add_provider_async( + self, + *, + request: Union[ + operations.AddProviderRequest, operations.AddProviderRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.AddProviderResponse: + r"""Add a media provider + + This endpoint registers a media provider with the server. Once registered, the media server acts as a reverse proxy to the provider, allowing both local and remote providers to work. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.AddProviderRequest) + request = cast(operations.AddProviderRequest, request) + + req = self._build_request_async( + method="POST", + path="/media/providers", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.AddProviderGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="addProvider", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.AddProviderResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def refresh_providers( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RefreshProvidersResponse: + r"""Refresh media providers + + Refresh all known media providers. This is useful in case a provider has updated features. + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="POST", + path="/media/providers/refresh", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="refreshProviders", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.RefreshProvidersResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def refresh_providers_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.RefreshProvidersResponse: + r"""Refresh media providers + + Refresh all known media providers. This is useful in case a provider has updated features. + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="POST", + path="/media/providers/refresh", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="refreshProviders", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.RefreshProvidersResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_media_provider( + self, + *, + request: Union[ + operations.DeleteMediaProviderRequest, + operations.DeleteMediaProviderRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteMediaProviderResponse: + r"""Delete a media provider + + Deletes a media provider with the given id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteMediaProviderRequest) + request = cast(operations.DeleteMediaProviderRequest, request) + + req = self._build_request( + method="DELETE", + path="/media/providers/{provider}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteMediaProviderGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteMediaProvider", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteMediaProviderResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_media_provider_async( + self, + *, + request: Union[ + operations.DeleteMediaProviderRequest, + operations.DeleteMediaProviderRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteMediaProviderResponse: + r"""Delete a media provider + + Deletes a media provider with the given id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteMediaProviderRequest) + request = cast(operations.DeleteMediaProviderRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/media/providers/{provider}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteMediaProviderGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteMediaProvider", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteMediaProviderResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/rate.py b/src/plex_api_client/rate.py new file mode 100644 index 0000000..68dae3f --- /dev/null +++ b/src/plex_api_client/rate.py @@ -0,0 +1,214 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from typing import Mapping, Optional, Union, cast + + +class Rate(BaseSDK): + r"""Operations for rating media items (thumbs up/down, star ratings, etc.)""" + + def set_rating( + self, + *, + request: Union[ + operations.SetRatingRequest, operations.SetRatingRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetRatingResponse: + r"""Rate an item + + Set the rating on an item. + This API does respond to the GET verb but applications should use PUT + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetRatingRequest) + request = cast(operations.SetRatingRequest, request) + + req = self._build_request( + method="PUT", + path="/:/rate", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SetRatingGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setRating", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SetRatingResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def set_rating_async( + self, + *, + request: Union[ + operations.SetRatingRequest, operations.SetRatingRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.SetRatingResponse: + r"""Rate an item + + Set the rating on an item. + This API does respond to the GET verb but applications should use PUT + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SetRatingRequest) + request = cast(operations.SetRatingRequest, request) + + req = self._build_request_async( + method="PUT", + path="/:/rate", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.SetRatingGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="setRating", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.SetRatingResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/sdk.py b/src/plex_api_client/sdk.py index b73b3b9..326a140 100644 --- a/src/plex_api_client/sdk.py +++ b/src/plex_api_client/sdk.py @@ -2,14 +2,14 @@ from .basesdk import BaseSDK from .httpclient import AsyncHttpClient, ClientOwner, HttpClient, close_clients -from .sdkconfiguration import SDKConfiguration, ServerProtocol +from .sdkconfiguration import SDKConfiguration from .utils.logger import Logger, get_default_logger from .utils.retries import RetryConfig import httpx import importlib from plex_api_client import utils from plex_api_client._hooks import SDKHooks -from plex_api_client.models import components +from plex_api_client.models import components, internal from plex_api_client.types import OptionalNullable, UNSET import sys from typing import Any, Callable, Dict, List, Optional, TYPE_CHECKING, Union, cast @@ -17,157 +17,208 @@ import weakref if TYPE_CHECKING: from plex_api_client.activities import Activities - from plex_api_client.authentication import Authentication from plex_api_client.butler import Butler + from plex_api_client.collections import Collections + from plex_api_client.content import Content + from plex_api_client.devices import Devices + from plex_api_client.download_queue import DownloadQueue + from plex_api_client.dvrs import DVRs + from plex_api_client.epg import Epg + from plex_api_client.events import Events + from plex_api_client.general import General from plex_api_client.hubs import Hubs from plex_api_client.library import Library + from plex_api_client.library_collections import LibraryCollections + from plex_api_client.library_playlists import LibraryPlaylists + from plex_api_client.live_tv import LiveTV from plex_api_client.log import Log - from plex_api_client.media import Media - from plex_api_client.playlists import Playlists - from plex_api_client.plex import Plex + from plex_api_client.play_queue import PlayQueue + from plex_api_client.playlist import Playlist + from plex_api_client.preferences import Preferences + from plex_api_client.provider import Provider + from plex_api_client.rate import Rate from plex_api_client.search import Search - from plex_api_client.server import Server - from plex_api_client.sessions import Sessions - from plex_api_client.statistics import Statistics + from plex_api_client.status import Status + from plex_api_client.subscriptions import Subscriptions + from plex_api_client.timeline import Timeline + from plex_api_client.transcoder import Transcoder + from plex_api_client.ultrablur import UltraBlur from plex_api_client.updater import Updater - from plex_api_client.users import Users - from plex_api_client.video import Video - from plex_api_client.watchlist import Watchlist class PlexAPI(BaseSDK): - r"""Plex-API: An Open API Spec for interacting with Plex.tv and Plex Media Server + general: "General" + r"""General endpoints for basic PMS operation not specific to any media provider""" + events: "Events" + r"""The server can notify clients in real-time of a wide range of events, from library scanning, to preferences being modified, to changes to media, and many other things. This is also the mechanism by which activity progress is reported. - # Plex Media Server OpenAPI Specification - - An Open Source OpenAPI Specification for Plex Media Server - - Automation and SDKs provided by [Speakeasy](https://speakeasyapi.dev/) - - ## Documentation - - [API Documentation](https://plexapi.dev) - - ## SDKs - - The following SDKs are generated from the OpenAPI Specification. They are automatically generated and may not be fully tested. If you find any issues, please open an issue on the [main specification Repository](https://github.com/LukeHagar/plex-api-spec). - - | Language | Repository | Releases | Other | - | --------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------- | - | Python | [GitHub](https://github.com/LukeHagar/plexpy) | [PyPI](https://pypi.org/project/plex-api-client/) | - | - | JavaScript/TypeScript | [GitHub](https://github.com/LukeHagar/plexjs) | [NPM](https://www.npmjs.com/package/@lukehagar/plexjs) \ [JSR](https://jsr.io/@lukehagar/plexjs) | - | - | Go | [GitHub](https://github.com/LukeHagar/plexgo) | [Releases](https://github.com/LukeHagar/plexgo/releases) | [GoDoc](https://pkg.go.dev/github.com/LukeHagar/plexgo) | - | Ruby | [GitHub](https://github.com/LukeHagar/plexruby) | [Releases](https://github.com/LukeHagar/plexruby/releases) | - | - | Swift | [GitHub](https://github.com/LukeHagar/plexswift) | [Releases](https://github.com/LukeHagar/plexswift/releases) | - | - | PHP | [GitHub](https://github.com/LukeHagar/plexphp) | [Releases](https://github.com/LukeHagar/plexphp/releases) | - | - | Java | [GitHub](https://github.com/LukeHagar/plexjava) | [Releases](https://github.com/LukeHagar/plexjava/releases) | - | - | C# | [GitHub](https://github.com/LukeHagar/plexcsharp) | [Releases](https://github.com/LukeHagar/plexcsharp/releases) | - - - """ - - server: "Server" - r"""Operations against the Plex Media Server System. - - """ - media: "Media" - r"""API Calls interacting with Plex Media Server Media - - """ - video: "Video" - r"""API Calls that perform operations with Plex Media Server Videos + Two protocols for receiving the events are available: EventSource (also known as SSE), and WebSocket. """ + preferences: "Preferences" + r"""API Operations against the Preferences""" + rate: "Rate" + r"""Operations for rating media items (thumbs up/down, star ratings, etc.)""" + timeline: "Timeline" + r"""The actions feature within a media provider""" activities: "Activities" - r"""Activities are awesome. They provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints. + r"""Activities provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints. + Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity. - Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. Other details: - - They can contain a `progress` (from 0 to 100) marking the percent completion of the activity. - - They must contain an `type` which is used by clients to distinguish the specific activity. - - They may contain a `Context` object with attributes which associate the activity with various specific entities (items, libraries, etc.) - - The may contain a `Response` object which attributes which represent the result of the asynchronous operation. + + Activities are optional cancellable. If cancellable, they may be cancelled via the `DELETE` endpoint. """ butler: "Butler" - r"""Butler is the task manager of the Plex Media Server Ecosystem. - - """ - plex: "Plex" - r"""API Calls that perform operations directly against https://Plex.tv - - """ + r"""The butler is responsible for running periodic tasks. Some tasks run daily, others every few days, and some weekly. These includes database maintenance, metadata updating, thumbnail generation, media analysis, and other tasks.""" + download_queue: "DownloadQueue" + r"""API Operations against the Download Queue""" hubs: "Hubs" - r"""Hubs are a structured two-dimensional container for media, generally represented by multiple horizontal rows. - - """ + r"""The hubs within a media provider""" search: "Search" - r"""API Calls that perform search operations with Plex Media Server - - """ + r"""The search feature within a media provider""" library: "Library" - r"""API Calls interacting with Plex Media Server Libraries + r"""Library endpoints which are outside of the Media Provider API. Typically this is manipulation of the library (adding/removing sections, modifying preferences, etc).""" + collections: "Collections" + r"""API Operations against the Collections""" + dv_rs: "DVRs" + r"""The DVR provides means to watch and record live TV. This section of endpoints describes how to setup the DVR itself """ - watchlist: "Watchlist" - r"""API Calls that perform operations with Plex Media Server Watchlists + epg: "Epg" + r"""The EPG (Electronic Program Guide) is responsible for obtaining metadata for what is airing on each channel and when + + """ + live_tv: "LiveTV" + r"""LiveTV contains the playback sessions of a channel from a DVR device """ log: "Log" - r"""Submit logs to the Log Handler for Plex Media Server + r"""Logging mechanism to allow clients to log to the server""" + devices: "Devices" + r"""Media grabbers provide ways for media to be obtained for a given protocol. The simplest ones are `stream` and `download`. More complex grabbers can have associated devices + + Network tuners can present themselves on the network using the Simple Service Discovery Protocol and Plex Media Server will discover them. The following XML is an example of the data returned from SSDP. The `deviceType`, `serviceType`, and `serviceId` values must remain as they are in the example in order for PMS to properly discover the device. Other less-obvious fields are described in the parameters section below. + + Example SSDP output + ``` + + + 1 + 0 + + + urn:plex-tv:device:Media:1 + Turing Hopper 3000 + Plex, Inc. + https://plex.tv/ + Turing Hopper 3000 Media Grabber + Plex Media Grabber + 1 + https://plex.tv + uuid:42fde8e4-93b6-41e5-8a63-12d848655811 + + + http://10.0.0.5:8088 + urn:plex-tv:service:MediaGrabber:1 + urn:plex-tv:serviceId:MediaGrabber + + + + + ``` + + - UDN: (string) A UUID for the device. This should be unique across models of a device at minimum. + - URLBase: (string) The base HTTP URL for the device from which all of the other endpoints are hosted. """ - playlists: "Playlists" - r"""Playlists are ordered collections of media. They can be dumb (just a list of media) or smart (based on a media query, such as \"all albums from 2017\"). - They can be organized in (optionally nesting) folders. - Retrieving a playlist, or its items, will trigger a refresh of its metadata. - This may cause the duration and number of items to change. + provider: "Provider" + r"""Media providers are the starting points for the entire Plex Media Server media library API. It defines the paths for the groups of endpoints. The `/media/providers` should be the only hard-coded path in clients when accessing the media library. Non-media library endpoints are outside the scope of the media provider. See the description in See [the section in API Info](#section/API-Info/Media-Providers) for more information on how to use media providers.""" + subscriptions: "Subscriptions" + r"""Subscriptions determine which media will be recorded and the criteria for selecting an airing when multiple are available """ - authentication: "Authentication" - r"""API Calls regarding authentication for Plex Media Server - - """ - statistics: "Statistics" - r"""API Calls that perform operations with Plex Media Server Statistics - - """ - sessions: "Sessions" - r"""API Calls that perform search operations with Plex Media Server Sessions - + transcoder: "Transcoder" + r"""API Operations against the Transcoder""" + playlist: "Playlist" + r"""Media playlists that can be created and played back""" + library_playlists: "LibraryPlaylists" + r"""Endpoints for manipulating playlists.""" + play_queue: "PlayQueue" + r"""The playqueue feature within a media provider + A play queue represents the current list of media for playback. Although queues are persisted by the server, they should be regarded by the user as a fairly lightweight, an ephemeral list of items queued up for playback in a session. There is generally one active queue for each type of media (music, video, photos) that can be added to or destroyed and replaced with a fresh queue. + Play Queues has a region, which we refer to in this doc (partially for historical reasons) as \"Up Next\". This region is defined by `playQueueLastAddedItemID` existing on the media container. This follows iTunes' terminology. It is a special region after the currently playing item but before the originally-played items. This enables \"Party Mode\" listening/viewing, where items can be added on-the-fly, and normal queue playback resumed when completed. + You can visualize the play queue as a sliding window in the complete list of media queued for playback. This model is important when scaling to larger play queues (e.g. shuffling 40,000 audio tracks). The client only needs visibility into small areas of the queue at any given time, and the server can optimize access in this fashion. + All created play queues will have an empty \"Up Next\" area - unless the item is an album and no `key` is provided. In this case the \"Up Next\" area will be populated by the contents of the album. This is to allow queueing of multiple albums - since the 'Add to Up Next' will insert after all the tracks. This means that If you're creating a PQ from an album, you can only shuffle it if you set `key`. This is due to the above implicit queueing of albums when no `key` is provided as well as the current limitation that you cannot shuffle a PQ with an \"Up Next\" area. + The play queue window advances as the server receives timeline requests. The client needs to retrieve the play queue as the “now playing” item changes. There is no play queue API to update the playing item. """ + ultra_blur: "UltraBlur" + r"""Service provided to compute UltraBlur colors and images.""" + status: "Status" + r"""The status endpoints give you information about current playbacks, play history, and even terminating sessions.""" updater: "Updater" r"""This describes the API for searching and applying updates to the Plex Media Server. Updates to the status can be observed via the Event API. """ - users: "Users" + content: "Content" + r"""The actual content of the media provider""" + library_collections: "LibraryCollections" + r"""Endpoints for manipulating collections. In addition to these endpoints, `/library/collections/:collectionId/X` will be rerouted to `/library/metadata/:collectionId/X` and respond to those endpoints as well.""" _sub_sdk_map = { - "server": ("plex_api_client.server", "Server"), - "media": ("plex_api_client.media", "Media"), - "video": ("plex_api_client.video", "Video"), + "general": ("plex_api_client.general", "General"), + "events": ("plex_api_client.events", "Events"), + "preferences": ("plex_api_client.preferences", "Preferences"), + "rate": ("plex_api_client.rate", "Rate"), + "timeline": ("plex_api_client.timeline", "Timeline"), "activities": ("plex_api_client.activities", "Activities"), "butler": ("plex_api_client.butler", "Butler"), - "plex": ("plex_api_client.plex", "Plex"), + "download_queue": ("plex_api_client.download_queue", "DownloadQueue"), "hubs": ("plex_api_client.hubs", "Hubs"), "search": ("plex_api_client.search", "Search"), "library": ("plex_api_client.library", "Library"), - "watchlist": ("plex_api_client.watchlist", "Watchlist"), + "collections": ("plex_api_client.collections", "Collections"), + "dv_rs": ("plex_api_client.dvrs", "DVRs"), + "epg": ("plex_api_client.epg", "Epg"), + "live_tv": ("plex_api_client.live_tv", "LiveTV"), "log": ("plex_api_client.log", "Log"), - "playlists": ("plex_api_client.playlists", "Playlists"), - "authentication": ("plex_api_client.authentication", "Authentication"), - "statistics": ("plex_api_client.statistics", "Statistics"), - "sessions": ("plex_api_client.sessions", "Sessions"), + "devices": ("plex_api_client.devices", "Devices"), + "provider": ("plex_api_client.provider", "Provider"), + "subscriptions": ("plex_api_client.subscriptions", "Subscriptions"), + "transcoder": ("plex_api_client.transcoder", "Transcoder"), + "playlist": ("plex_api_client.playlist", "Playlist"), + "library_playlists": ("plex_api_client.library_playlists", "LibraryPlaylists"), + "play_queue": ("plex_api_client.play_queue", "PlayQueue"), + "ultra_blur": ("plex_api_client.ultrablur", "UltraBlur"), + "status": ("plex_api_client.status", "Status"), "updater": ("plex_api_client.updater", "Updater"), - "users": ("plex_api_client.users", "Users"), + "content": ("plex_api_client.content", "Content"), + "library_collections": ( + "plex_api_client.library_collections", + "LibraryCollections", + ), } def __init__( self, - access_token: Optional[ - Union[Optional[str], Callable[[], Optional[str]]] - ] = None, - protocol: Optional[ServerProtocol] = None, - ip: Optional[str] = None, + token: Optional[Union[Optional[str], Callable[[], Optional[str]]]] = None, + accepts: Optional[components.Accepts] = None, + client_identifier: Optional[str] = None, + product: Optional[str] = None, + version: Optional[str] = None, + platform: Optional[str] = None, + platform_version: Optional[str] = None, + device: Optional[str] = None, + model: Optional[str] = None, + device_vendor: Optional[str] = None, + device_name: Optional[str] = None, + marketplace: Optional[str] = None, + identifier: Optional[str] = None, + ip_description: Optional[str] = None, port: Optional[str] = None, + protocol: Optional[str] = None, + host: Optional[str] = None, + server_url_server: Optional[str] = None, server_idx: Optional[int] = None, server_url: Optional[str] = None, url_params: Optional[Dict[str, str]] = None, @@ -179,10 +230,24 @@ class PlexAPI(BaseSDK): ) -> None: r"""Instantiates the SDK configuring it with the provided parameters. - :param access_token: The access_token required for authentication - :param protocol: Allows setting the protocol variable for url substitution - :param ip: Allows setting the ip variable for url substitution + :param token: The token required for authentication + :param accepts: Configures the accepts parameter for all supported operations + :param client_identifier: Configures the client_identifier parameter for all supported operations + :param product: Configures the product parameter for all supported operations + :param version: Configures the version parameter for all supported operations + :param platform: Configures the platform parameter for all supported operations + :param platform_version: Configures the platform_version parameter for all supported operations + :param device: Configures the device parameter for all supported operations + :param model: Configures the model parameter for all supported operations + :param device_vendor: Configures the device_vendor parameter for all supported operations + :param device_name: Configures the device_name parameter for all supported operations + :param marketplace: Configures the marketplace parameter for all supported operations + :param identifier: Allows setting the identifier variable for url substitution + :param ip_description: Allows setting the IP-description variable for url substitution :param port: Allows setting the port variable for url substitution + :param protocol: Allows setting the protocol variable for url substitution + :param host: Allows setting the host variable for url substitution + :param server_url_server: Allows setting the server_url variable for url substitution :param server_idx: The index of the server to use for all methods :param server_url: The server URL to use for all methods :param url_params: Parameters to optionally template the server URL with @@ -193,7 +258,7 @@ class PlexAPI(BaseSDK): """ client_supplied = True if client is None: - client = httpx.Client() + client = httpx.Client(follow_redirects=True) client_supplied = False assert issubclass( @@ -202,7 +267,7 @@ class PlexAPI(BaseSDK): async_client_supplied = True if async_client is None: - async_client = httpx.AsyncClient() + async_client = httpx.AsyncClient(follow_redirects=True) async_client_supplied = False if debug_logger is None: @@ -213,23 +278,53 @@ class PlexAPI(BaseSDK): ), "The provided async_client must implement the AsyncHttpClient protocol." security: Any = None - if callable(access_token): + if callable(token): # pylint: disable=unnecessary-lambda-assignment - security = lambda: components.Security(access_token=access_token()) + security = lambda: components.Security(token=token()) else: - security = components.Security(access_token=access_token) + security = components.Security(token=token) if server_url is not None: if url_params is not None: server_url = utils.template_url(server_url, url_params) server_defaults: List[Dict[str, str]] = [ { - "protocol": protocol or "https", - "ip": ip or "10.10.10.47", + "identifier": identifier or "0123456789abcdef0123456789abcdef", + "IP-description": ip_description or "1-2-3-4", "port": port or "32400", }, + { + "protocol": protocol or "http", + "host": host or "localhost", + "port": port or "32400", + }, + { + "server_url": server_url_server or "http://localhost:32400", + }, ] + _globals = internal.Globals( + accepts=utils.get_global_from_env( + accepts, "ACCEPTS", utils.cast_partial(components.Accepts) + ), + client_identifier=utils.get_global_from_env( + client_identifier, "CLIENT_IDENTIFIER", str + ), + product=utils.get_global_from_env(product, "PRODUCT", str), + version=utils.get_global_from_env(version, "VERSION", str), + platform=utils.get_global_from_env(platform, "PLATFORM", str), + platform_version=utils.get_global_from_env( + platform_version, "PLATFORM_VERSION", str + ), + device=utils.get_global_from_env(device, "DEVICE", str), + model=utils.get_global_from_env(model, "MODEL", str), + device_vendor=utils.get_global_from_env( + device_vendor, "DEVICE_VENDOR", str + ), + device_name=utils.get_global_from_env(device_name, "DEVICE_NAME", str), + marketplace=utils.get_global_from_env(marketplace, "MARKETPLACE", str), + ) + BaseSDK.__init__( self, SDKConfiguration( @@ -237,6 +332,7 @@ class PlexAPI(BaseSDK): client_supplied=client_supplied, async_client=async_client, async_client_supplied=async_client_supplied, + globals=_globals, security=security, server_url=server_url, server_idx=server_idx, diff --git a/src/plex_api_client/sdkconfiguration.py b/src/plex_api_client/sdkconfiguration.py index d78b791..8baf986 100644 --- a/src/plex_api_client/sdkconfiguration.py +++ b/src/plex_api_client/sdkconfiguration.py @@ -9,27 +9,20 @@ from ._version import ( from .httpclient import AsyncHttpClient, HttpClient from .utils import Logger, RetryConfig, remove_suffix from dataclasses import dataclass, field -from enum import Enum -from plex_api_client.models import components +from plex_api_client.models import components, internal from plex_api_client.types import OptionalNullable, UNSET from pydantic import Field from typing import Callable, Dict, List, Optional, Tuple, Union SERVERS = [ - "{protocol}://{ip}:{port}", - # The full address of your Plex Server + "https://{IP-description}.{identifier}.plex.direct:{port}", + "{protocol}://{host}:{port}", + "https://{server_url}", ] """Contains the list of servers available to the SDK""" -class ServerProtocol(str, Enum): - r"""The protocol to use for the server connection""" - - HTTP = "http" - HTTPS = "https" - - @dataclass class SDKConfiguration: client: Union[HttpClient, None] @@ -37,6 +30,7 @@ class SDKConfiguration: async_client: Union[AsyncHttpClient, None] async_client_supplied: bool debug_logger: Logger + globals: internal.Globals security: Optional[ Union[components.Security, Callable[[], components.Security]] ] = None diff --git a/src/plex_api_client/search.py b/src/plex_api_client/search.py index 7296670..db44326 100644 --- a/src/plex_api_client/search.py +++ b/src/plex_api_client/search.py @@ -4,26 +4,28 @@ from .basesdk import BaseSDK from plex_api_client import utils from plex_api_client._hooks import HookContext from plex_api_client.models import errors, operations -from plex_api_client.types import OptionalNullable, UNSET +from plex_api_client.types import BaseModel, OptionalNullable, UNSET from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Mapping, Optional +from typing import Mapping, Optional, Union, cast class Search(BaseSDK): - r"""API Calls that perform search operations with Plex Media Server""" + r"""The search feature within a media provider""" - def perform_search( + def search_hubs( self, *, - query: str, - section_id: Optional[float] = None, - limit: Optional[float] = 3, + request: Union[ + operations.SearchHubsRequest, operations.SearchHubsRequestTypedDict + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.PerformSearchResponse: - r"""Perform a search + ) -> operations.SearchHubsResponse: + r"""Search Hub + + Perform a search and get the result as hubs This endpoint performs a search across all library sections, or a single section, and returns matches as hubs, split up by type. It performs spell checking, looks for partial matches, and orders the hubs based on quality of results. In addition, based on matches, it will return other related matches (e.g. for a genre match, it may return movies in that genre, or for an actor match, movies with that actor). @@ -39,9 +41,7 @@ class Search(BaseSDK): This request is intended to be very fast, and called as the user types. - :param query: The query term - :param section_id: This gives context to the search, and can result in re-ordering of search result hubs - :param limit: The number of items to return per hub + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -57,11 +57,9 @@ class Search(BaseSDK): else: base_url = self._get_url(base_url, url_variables) - request = operations.PerformSearchRequest( - query=query, - section_id=section_id, - limit=limit, - ) + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SearchHubsRequest) + request = cast(operations.SearchHubsRequest, request) req = self._build_request( method="GET", @@ -75,6 +73,19 @@ class Search(BaseSDK): user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, + _globals=operations.SearchHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -91,35 +102,26 @@ class Search(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="performSearch", - oauth2_scopes=[], + operation_id="searchHubs", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["400", "404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.PerformSearchResponse( + if utils.match_response(http_res, "200", "application/json"): + return operations.SearchHubsResponse( + object=unmarshal_json_response( + Optional[operations.SearchHubsResponseBody], http_res + ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.PerformSearchBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.PerformSearchBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.PerformSearchUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.PerformSearchUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): @@ -128,18 +130,20 @@ class Search(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - async def perform_search_async( + async def search_hubs_async( self, *, - query: str, - section_id: Optional[float] = None, - limit: Optional[float] = 3, + request: Union[ + operations.SearchHubsRequest, operations.SearchHubsRequestTypedDict + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.PerformSearchResponse: - r"""Perform a search + ) -> operations.SearchHubsResponse: + r"""Search Hub + + Perform a search and get the result as hubs This endpoint performs a search across all library sections, or a single section, and returns matches as hubs, split up by type. It performs spell checking, looks for partial matches, and orders the hubs based on quality of results. In addition, based on matches, it will return other related matches (e.g. for a genre match, it may return movies in that genre, or for an actor match, movies with that actor). @@ -155,9 +159,7 @@ class Search(BaseSDK): This request is intended to be very fast, and called as the user types. - :param query: The query term - :param section_id: This gives context to the search, and can result in re-ordering of search result hubs - :param limit: The number of items to return per hub + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -173,11 +175,9 @@ class Search(BaseSDK): else: base_url = self._get_url(base_url, url_variables) - request = operations.PerformSearchRequest( - query=query, - section_id=section_id, - limit=limit, - ) + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.SearchHubsRequest) + request = cast(operations.SearchHubsRequest, request) req = self._build_request_async( method="GET", @@ -191,6 +191,19 @@ class Search(BaseSDK): user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, + _globals=operations.SearchHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -207,35 +220,26 @@ class Search(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="performSearch", - oauth2_scopes=[], + operation_id="searchHubs", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["400", "404", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.PerformSearchResponse( + if utils.match_response(http_res, "200", "application/json"): + return operations.SearchHubsResponse( + object=unmarshal_json_response( + Optional[operations.SearchHubsResponseBody], http_res + ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.PerformSearchBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.PerformSearchBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.PerformSearchUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.PerformSearchUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): @@ -244,28 +248,28 @@ class Search(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - def perform_voice_search( + def voice_search_hubs( self, *, - query: str, - section_id: Optional[float] = None, - limit: Optional[float] = 3, + request: Union[ + operations.VoiceSearchHubsRequest, + operations.VoiceSearchHubsRequestTypedDict, + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.PerformVoiceSearchResponse: - r"""Perform a voice search + ) -> operations.VoiceSearchHubsResponse: + r"""Voice Search Hub + + Perform a search tailored to voice input and get the result as hubs + + This endpoint performs a search specifically tailored towards voice or other imprecise input which may work badly with the substring and spell-checking heuristics used by the `/hubs/search` endpoint. It uses a [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance) heuristic to search titles, and as such is much slower than the other search endpoint. Whenever possible, clients should limit the search to the appropriate type. - This endpoint performs a search specifically tailored towards voice or other imprecise input which may work badly with the substring and spell-checking heuristics used by the `/hubs/search` endpoint. - It uses a [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance) heuristic to search titles, and as such is much slower than the other search endpoint. - Whenever possible, clients should limit the search to the appropriate type. Results, as well as their containing per-type hubs, contain a `distance` attribute which can be used to judge result quality. - :param query: The query term - :param section_id: This gives context to the search, and can result in re-ordering of search result hubs - :param limit: The number of items to return per hub + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -281,11 +285,9 @@ class Search(BaseSDK): else: base_url = self._get_url(base_url, url_variables) - request = operations.PerformVoiceSearchRequest( - query=query, - section_id=section_id, - limit=limit, - ) + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.VoiceSearchHubsRequest) + request = cast(operations.VoiceSearchHubsRequest, request) req = self._build_request( method="GET", @@ -299,6 +301,19 @@ class Search(BaseSDK): user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, + _globals=operations.VoiceSearchHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -315,35 +330,26 @@ class Search(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="performVoiceSearch", - oauth2_scopes=[], + operation_id="voiceSearchHubs", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["400", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.PerformVoiceSearchResponse( + if utils.match_response(http_res, "200", "application/json"): + return operations.VoiceSearchHubsResponse( + object=unmarshal_json_response( + Optional[operations.VoiceSearchHubsResponseBody], http_res + ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.PerformVoiceSearchBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.PerformVoiceSearchBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.PerformVoiceSearchUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.PerformVoiceSearchUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): + if utils.match_response(http_res, ["400", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): @@ -352,28 +358,28 @@ class Search(BaseSDK): raise errors.SDKError("Unexpected response received", http_res) - async def perform_voice_search_async( + async def voice_search_hubs_async( self, *, - query: str, - section_id: Optional[float] = None, - limit: Optional[float] = 3, + request: Union[ + operations.VoiceSearchHubsRequest, + operations.VoiceSearchHubsRequestTypedDict, + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.PerformVoiceSearchResponse: - r"""Perform a voice search + ) -> operations.VoiceSearchHubsResponse: + r"""Voice Search Hub + + Perform a search tailored to voice input and get the result as hubs + + This endpoint performs a search specifically tailored towards voice or other imprecise input which may work badly with the substring and spell-checking heuristics used by the `/hubs/search` endpoint. It uses a [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance) heuristic to search titles, and as such is much slower than the other search endpoint. Whenever possible, clients should limit the search to the appropriate type. - This endpoint performs a search specifically tailored towards voice or other imprecise input which may work badly with the substring and spell-checking heuristics used by the `/hubs/search` endpoint. - It uses a [Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance) heuristic to search titles, and as such is much slower than the other search endpoint. - Whenever possible, clients should limit the search to the appropriate type. Results, as well as their containing per-type hubs, contain a `distance` attribute which can be used to judge result quality. - :param query: The query term - :param section_id: This gives context to the search, and can result in re-ordering of search result hubs - :param limit: The number of items to return per hub + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -389,11 +395,9 @@ class Search(BaseSDK): else: base_url = self._get_url(base_url, url_variables) - request = operations.PerformVoiceSearchRequest( - query=query, - section_id=section_id, - limit=limit, - ) + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.VoiceSearchHubsRequest) + request = cast(operations.VoiceSearchHubsRequest, request) req = self._build_request_async( method="GET", @@ -407,6 +411,19 @@ class Search(BaseSDK): user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, + _globals=operations.VoiceSearchHubsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -423,237 +440,26 @@ class Search(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="performVoiceSearch", - oauth2_scopes=[], + operation_id="voiceSearchHubs", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "5XX"], + error_status_codes=["400", "4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.PerformVoiceSearchResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.PerformVoiceSearchBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.PerformVoiceSearchBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.PerformVoiceSearchUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.PerformVoiceSearchUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_search_results( - self, - *, - query: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetSearchResultsResponse: - r"""Get Search Results - - This will search the database for the string provided. - - :param query: The search query string to use - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetSearchResultsRequest( - query=query, - ) - - req = self._build_request( - method="GET", - path="/search", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getSearchResults", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None if utils.match_response(http_res, "200", "application/json"): - return operations.GetSearchResultsResponse( + return operations.VoiceSearchHubsResponse( object=unmarshal_json_response( - Optional[operations.GetSearchResultsResponseBody], http_res + Optional[operations.VoiceSearchHubsResponseBody], http_res ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetSearchResultsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSearchResultsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetSearchResultsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSearchResultsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_search_results_async( - self, - *, - query: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetSearchResultsResponse: - r"""Get Search Results - - This will search the database for the string provided. - - :param query: The search query string to use - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetSearchResultsRequest( - query=query, - ) - - req = self._build_request_async( - method="GET", - path="/search", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getSearchResults", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetSearchResultsResponse( - object=unmarshal_json_response( - Optional[operations.GetSearchResultsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetSearchResultsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSearchResultsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetSearchResultsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSearchResultsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): + if utils.match_response(http_res, ["400", "4XX"], "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, "5XX", "*"): diff --git a/src/plex_api_client/server.py b/src/plex_api_client/server.py deleted file mode 100644 index fb55b01..0000000 --- a/src/plex_api_client/server.py +++ /dev/null @@ -1,1721 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from .basesdk import BaseSDK -from plex_api_client import utils -from plex_api_client._hooks import HookContext -from plex_api_client.models import errors, operations -from plex_api_client.types import BaseModel, OptionalNullable, UNSET -from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Mapping, Optional, Union, cast - - -class Server(BaseSDK): - r"""Operations against the Plex Media Server System.""" - - def get_server_capabilities( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetServerCapabilitiesResponse: - r"""Get Server Capabilities - - Get Server Capabilities - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request( - method="GET", - path="/", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getServerCapabilities", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetServerCapabilitiesResponse( - object=unmarshal_json_response( - Optional[operations.GetServerCapabilitiesResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerCapabilitiesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerCapabilitiesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerCapabilitiesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerCapabilitiesUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_server_capabilities_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetServerCapabilitiesResponse: - r"""Get Server Capabilities - - Get Server Capabilities - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request_async( - method="GET", - path="/", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getServerCapabilities", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetServerCapabilitiesResponse( - object=unmarshal_json_response( - Optional[operations.GetServerCapabilitiesResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerCapabilitiesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerCapabilitiesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerCapabilitiesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerCapabilitiesUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_server_preferences( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetServerPreferencesResponse: - r"""Get Server Preferences - - Get Server Preferences - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request( - method="GET", - path="/:/prefs", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getServerPreferences", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetServerPreferencesResponse( - object=unmarshal_json_response( - Optional[operations.GetServerPreferencesResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerPreferencesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerPreferencesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerPreferencesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerPreferencesUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_server_preferences_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetServerPreferencesResponse: - r"""Get Server Preferences - - Get Server Preferences - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request_async( - method="GET", - path="/:/prefs", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getServerPreferences", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetServerPreferencesResponse( - object=unmarshal_json_response( - Optional[operations.GetServerPreferencesResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerPreferencesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerPreferencesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerPreferencesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerPreferencesUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_available_clients( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetAvailableClientsResponse: - r"""Get Available Clients - - Get Available Clients - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request( - method="GET", - path="/clients", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getAvailableClients", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetAvailableClientsResponse( - object=unmarshal_json_response( - Optional[operations.GetAvailableClientsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetAvailableClientsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetAvailableClientsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetAvailableClientsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetAvailableClientsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_available_clients_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetAvailableClientsResponse: - r"""Get Available Clients - - Get Available Clients - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request_async( - method="GET", - path="/clients", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getAvailableClients", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetAvailableClientsResponse( - object=unmarshal_json_response( - Optional[operations.GetAvailableClientsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetAvailableClientsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetAvailableClientsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetAvailableClientsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetAvailableClientsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_devices( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetDevicesResponse: - r"""Get Devices - - Get Devices - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request( - method="GET", - path="/devices", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getDevices", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetDevicesResponse( - object=unmarshal_json_response( - Optional[operations.GetDevicesResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetDevicesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetDevicesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetDevicesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetDevicesUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_devices_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetDevicesResponse: - r"""Get Devices - - Get Devices - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request_async( - method="GET", - path="/devices", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getDevices", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetDevicesResponse( - object=unmarshal_json_response( - Optional[operations.GetDevicesResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetDevicesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetDevicesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetDevicesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetDevicesUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_server_identity( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetServerIdentityResponse: - r"""Get Server Identity - - This request is useful to determine if the server is online or offline - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request( - method="GET", - path="/identity", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=False, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-server-identity", - oauth2_scopes=[], - security_source=None, - ), - request=req, - error_status_codes=["408", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetServerIdentityResponse( - object=unmarshal_json_response( - Optional[operations.GetServerIdentityResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerIdentityRequestTimeoutData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerIdentityRequestTimeout(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_server_identity_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetServerIdentityResponse: - r"""Get Server Identity - - This request is useful to determine if the server is online or offline - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request_async( - method="GET", - path="/identity", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=False, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-server-identity", - oauth2_scopes=[], - security_source=None, - ), - request=req, - error_status_codes=["408", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetServerIdentityResponse( - object=unmarshal_json_response( - Optional[operations.GetServerIdentityResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "408", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerIdentityRequestTimeoutData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerIdentityRequestTimeout(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_my_plex_account( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetMyPlexAccountResponse: - r"""Get MyPlex Account - - Returns MyPlex Account Information - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request( - method="GET", - path="/myplex/account", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getMyPlexAccount", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetMyPlexAccountResponse( - object=unmarshal_json_response( - Optional[operations.GetMyPlexAccountResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetMyPlexAccountBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetMyPlexAccountBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetMyPlexAccountUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetMyPlexAccountUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_my_plex_account_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetMyPlexAccountResponse: - r"""Get MyPlex Account - - Returns MyPlex Account Information - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request_async( - method="GET", - path="/myplex/account", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getMyPlexAccount", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetMyPlexAccountResponse( - object=unmarshal_json_response( - Optional[operations.GetMyPlexAccountResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetMyPlexAccountBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetMyPlexAccountBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetMyPlexAccountUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetMyPlexAccountUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_resized_photo( - self, - *, - request: Union[ - operations.GetResizedPhotoRequest, - operations.GetResizedPhotoRequestTypedDict, - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetResizedPhotoResponse: - r"""Get a Resized Photo - - Plex's Photo transcoder is used throughout the service to serve images at specified sizes. - - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetResizedPhotoRequest) - request = cast(operations.GetResizedPhotoRequest, request) - - req = self._build_request( - method="GET", - path="/photo/:/transcode", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getResizedPhoto", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.GetResizedPhotoResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetResizedPhotoBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetResizedPhotoBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetResizedPhotoUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetResizedPhotoUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_resized_photo_async( - self, - *, - request: Union[ - operations.GetResizedPhotoRequest, - operations.GetResizedPhotoRequestTypedDict, - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetResizedPhotoResponse: - r"""Get a Resized Photo - - Plex's Photo transcoder is used throughout the service to serve images at specified sizes. - - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetResizedPhotoRequest) - request = cast(operations.GetResizedPhotoRequest, request) - - req = self._build_request_async( - method="GET", - path="/photo/:/transcode", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getResizedPhoto", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.GetResizedPhotoResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetResizedPhotoBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetResizedPhotoBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetResizedPhotoUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetResizedPhotoUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_media_providers( - self, - *, - x_plex_token: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetMediaProvidersResponse: - r"""Get Media Providers - - Retrieves media providers and their features from the Plex server. - - :param x_plex_token: An authentication token, obtained from plex.tv - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetMediaProvidersRequest( - x_plex_token=x_plex_token, - ) - - req = self._build_request( - method="GET", - path="/media/providers", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-media-providers", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetMediaProvidersResponse( - object=unmarshal_json_response( - Optional[operations.GetMediaProvidersResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetMediaProvidersBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetMediaProvidersBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetMediaProvidersUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetMediaProvidersUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_media_providers_async( - self, - *, - x_plex_token: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetMediaProvidersResponse: - r"""Get Media Providers - - Retrieves media providers and their features from the Plex server. - - :param x_plex_token: An authentication token, obtained from plex.tv - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetMediaProvidersRequest( - x_plex_token=x_plex_token, - ) - - req = self._build_request_async( - method="GET", - path="/media/providers", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-media-providers", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetMediaProvidersResponse( - object=unmarshal_json_response( - Optional[operations.GetMediaProvidersResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetMediaProvidersBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetMediaProvidersBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetMediaProvidersUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetMediaProvidersUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_server_list( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetServerListResponse: - r"""Get Server List - - Get Server List - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request( - method="GET", - path="/servers", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getServerList", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetServerListResponse( - object=unmarshal_json_response( - Optional[operations.GetServerListResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerListBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerListBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerListUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerListUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_server_list_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetServerListResponse: - r"""Get Server List - - Get Server List - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request_async( - method="GET", - path="/servers", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getServerList", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetServerListResponse( - object=unmarshal_json_response( - Optional[operations.GetServerListResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerListBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerListBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetServerListUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetServerListUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/sessions.py b/src/plex_api_client/sessions.py deleted file mode 100644 index 97c1b4b..0000000 --- a/src/plex_api_client/sessions.py +++ /dev/null @@ -1,813 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from .basesdk import BaseSDK -from plex_api_client import utils -from plex_api_client._hooks import HookContext -from plex_api_client.models import errors, operations -from plex_api_client.types import OptionalNullable, UNSET -from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Mapping, Optional, Union - - -class Sessions(BaseSDK): - r"""API Calls that perform search operations with Plex Media Server Sessions""" - - def get_sessions( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetSessionsResponse: - r"""Get Active Sessions - - This will retrieve the \"Now Playing\" Information of the PMS. - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request( - method="GET", - path="/status/sessions", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getSessions", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetSessionsResponse( - object=unmarshal_json_response( - Optional[operations.GetSessionsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetSessionsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSessionsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetSessionsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSessionsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_sessions_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetSessionsResponse: - r"""Get Active Sessions - - This will retrieve the \"Now Playing\" Information of the PMS. - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request_async( - method="GET", - path="/status/sessions", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getSessions", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetSessionsResponse( - object=unmarshal_json_response( - Optional[operations.GetSessionsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetSessionsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSessionsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetSessionsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSessionsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_session_history( - self, - *, - sort: Optional[str] = None, - account_id: Optional[int] = None, - filter_: Optional[ - Union[operations.QueryParamFilter, operations.QueryParamFilterTypedDict] - ] = None, - library_section_id: Optional[int] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetSessionHistoryResponse: - r"""Get Session History - - This will Retrieve a listing of all history views. - - :param sort: Sorts the results by the specified field followed by the direction (asc, desc) - :param account_id: Filter results by those that are related to a specific users id - :param filter_: Filters content by field and direction/equality (Unknown if viewedAt is the only supported column) - :param library_section_id: Filters the results based on the id of a valid library section - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetSessionHistoryRequest( - sort=sort, - account_id=account_id, - filter_=utils.get_pydantic_model( - filter_, Optional[operations.QueryParamFilter] - ), - library_section_id=library_section_id, - ) - - req = self._build_request( - method="GET", - path="/status/sessions/history/all", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getSessionHistory", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetSessionHistoryResponse( - object=unmarshal_json_response( - Optional[operations.GetSessionHistoryResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetSessionHistoryBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSessionHistoryBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetSessionHistoryUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSessionHistoryUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_session_history_async( - self, - *, - sort: Optional[str] = None, - account_id: Optional[int] = None, - filter_: Optional[ - Union[operations.QueryParamFilter, operations.QueryParamFilterTypedDict] - ] = None, - library_section_id: Optional[int] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetSessionHistoryResponse: - r"""Get Session History - - This will Retrieve a listing of all history views. - - :param sort: Sorts the results by the specified field followed by the direction (asc, desc) - :param account_id: Filter results by those that are related to a specific users id - :param filter_: Filters content by field and direction/equality (Unknown if viewedAt is the only supported column) - :param library_section_id: Filters the results based on the id of a valid library section - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetSessionHistoryRequest( - sort=sort, - account_id=account_id, - filter_=utils.get_pydantic_model( - filter_, Optional[operations.QueryParamFilter] - ), - library_section_id=library_section_id, - ) - - req = self._build_request_async( - method="GET", - path="/status/sessions/history/all", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getSessionHistory", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetSessionHistoryResponse( - object=unmarshal_json_response( - Optional[operations.GetSessionHistoryResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetSessionHistoryBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSessionHistoryBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetSessionHistoryUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetSessionHistoryUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_transcode_sessions( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetTranscodeSessionsResponse: - r"""Get Transcode Sessions - - Get Transcode Sessions - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request( - method="GET", - path="/transcode/sessions", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getTranscodeSessions", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetTranscodeSessionsResponse( - object=unmarshal_json_response( - Optional[operations.GetTranscodeSessionsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetTranscodeSessionsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTranscodeSessionsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetTranscodeSessionsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTranscodeSessionsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_transcode_sessions_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetTranscodeSessionsResponse: - r"""Get Transcode Sessions - - Get Transcode Sessions - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request_async( - method="GET", - path="/transcode/sessions", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getTranscodeSessions", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetTranscodeSessionsResponse( - object=unmarshal_json_response( - Optional[operations.GetTranscodeSessionsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetTranscodeSessionsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTranscodeSessionsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetTranscodeSessionsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTranscodeSessionsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def stop_transcode_session( - self, - *, - session_key: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.StopTranscodeSessionResponse: - r"""Stop a Transcode Session - - Stop a Transcode Session - - :param session_key: the Key of the transcode session to stop - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.StopTranscodeSessionRequest( - session_key=session_key, - ) - - req = self._build_request( - method="DELETE", - path="/transcode/sessions/{sessionKey}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="stopTranscodeSession", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "204", "*"): - return operations.StopTranscodeSessionResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.StopTranscodeSessionBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.StopTranscodeSessionBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.StopTranscodeSessionUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.StopTranscodeSessionUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def stop_transcode_session_async( - self, - *, - session_key: str, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.StopTranscodeSessionResponse: - r"""Stop a Transcode Session - - Stop a Transcode Session - - :param session_key: the Key of the transcode session to stop - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.StopTranscodeSessionRequest( - session_key=session_key, - ) - - req = self._build_request_async( - method="DELETE", - path="/transcode/sessions/{sessionKey}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="stopTranscodeSession", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "204", "*"): - return operations.StopTranscodeSessionResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.StopTranscodeSessionBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.StopTranscodeSessionBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.StopTranscodeSessionUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.StopTranscodeSessionUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/statistics.py b/src/plex_api_client/statistics.py deleted file mode 100644 index 21ec5f2..0000000 --- a/src/plex_api_client/statistics.py +++ /dev/null @@ -1,619 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from .basesdk import BaseSDK -from plex_api_client import utils -from plex_api_client._hooks import HookContext -from plex_api_client.models import errors, operations -from plex_api_client.types import OptionalNullable, UNSET -from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Mapping, Optional - - -class Statistics(BaseSDK): - r"""API Calls that perform operations with Plex Media Server Statistics""" - - def get_statistics( - self, - *, - timespan: Optional[int] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetStatisticsResponse: - r"""Get Media Statistics - - This will return the media statistics for the server - - :param timespan: The timespan to retrieve statistics for the exact meaning of this parameter is not known - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetStatisticsRequest( - timespan=timespan, - ) - - req = self._build_request( - method="GET", - path="/statistics/media", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getStatistics", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetStatisticsResponse( - object=unmarshal_json_response( - Optional[operations.GetStatisticsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetStatisticsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetStatisticsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetStatisticsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetStatisticsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_statistics_async( - self, - *, - timespan: Optional[int] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetStatisticsResponse: - r"""Get Media Statistics - - This will return the media statistics for the server - - :param timespan: The timespan to retrieve statistics for the exact meaning of this parameter is not known - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetStatisticsRequest( - timespan=timespan, - ) - - req = self._build_request_async( - method="GET", - path="/statistics/media", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getStatistics", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetStatisticsResponse( - object=unmarshal_json_response( - Optional[operations.GetStatisticsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetStatisticsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetStatisticsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetStatisticsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetStatisticsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_resources_statistics( - self, - *, - timespan: Optional[int] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetResourcesStatisticsResponse: - r"""Get Resources Statistics - - This will return the resources for the server - - :param timespan: The timespan to retrieve statistics for the exact meaning of this parameter is not known - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetResourcesStatisticsRequest( - timespan=timespan, - ) - - req = self._build_request( - method="GET", - path="/statistics/resources", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getResourcesStatistics", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetResourcesStatisticsResponse( - object=unmarshal_json_response( - Optional[operations.GetResourcesStatisticsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetResourcesStatisticsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetResourcesStatisticsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetResourcesStatisticsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetResourcesStatisticsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_resources_statistics_async( - self, - *, - timespan: Optional[int] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetResourcesStatisticsResponse: - r"""Get Resources Statistics - - This will return the resources for the server - - :param timespan: The timespan to retrieve statistics for the exact meaning of this parameter is not known - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetResourcesStatisticsRequest( - timespan=timespan, - ) - - req = self._build_request_async( - method="GET", - path="/statistics/resources", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getResourcesStatistics", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetResourcesStatisticsResponse( - object=unmarshal_json_response( - Optional[operations.GetResourcesStatisticsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetResourcesStatisticsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetResourcesStatisticsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetResourcesStatisticsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetResourcesStatisticsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def get_bandwidth_statistics( - self, - *, - timespan: Optional[int] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetBandwidthStatisticsResponse: - r"""Get Bandwidth Statistics - - This will return the bandwidth statistics for the server - - :param timespan: The timespan to retrieve statistics for the exact meaning of this parameter is not known - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetBandwidthStatisticsRequest( - timespan=timespan, - ) - - req = self._build_request( - method="GET", - path="/statistics/bandwidth", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getBandwidthStatistics", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetBandwidthStatisticsResponse( - object=unmarshal_json_response( - Optional[operations.GetBandwidthStatisticsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetBandwidthStatisticsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetBandwidthStatisticsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetBandwidthStatisticsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetBandwidthStatisticsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_bandwidth_statistics_async( - self, - *, - timespan: Optional[int] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetBandwidthStatisticsResponse: - r"""Get Bandwidth Statistics - - This will return the bandwidth statistics for the server - - :param timespan: The timespan to retrieve statistics for the exact meaning of this parameter is not known - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.GetBandwidthStatisticsRequest( - timespan=timespan, - ) - - req = self._build_request_async( - method="GET", - path="/statistics/bandwidth", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getBandwidthStatistics", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetBandwidthStatisticsResponse( - object=unmarshal_json_response( - Optional[operations.GetBandwidthStatisticsResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetBandwidthStatisticsBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetBandwidthStatisticsBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetBandwidthStatisticsUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetBandwidthStatisticsUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/status.py b/src/plex_api_client/status.py new file mode 100644 index 0000000..6dbe5e1 --- /dev/null +++ b/src/plex_api_client/status.py @@ -0,0 +1,1169 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import components, errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class Status(BaseSDK): + r"""The status endpoints give you information about current playbacks, play history, and even terminating sessions.""" + + def list_sessions( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListSessionsResponse: + r"""List Sessions + + List all current playbacks on this server + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="GET", + path="/status/sessions", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listSessions", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListSessionsResponse( + object=unmarshal_json_response( + Optional[operations.ListSessionsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def list_sessions_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListSessionsResponse: + r"""List Sessions + + List all current playbacks on this server + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="GET", + path="/status/sessions", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listSessions", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListSessionsResponse( + object=unmarshal_json_response( + Optional[operations.ListSessionsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_background_tasks( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetBackgroundTasksResponse: + r"""Get background tasks + + Get the list of all background tasks + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="GET", + path="/status/sessions/background", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getBackgroundTasks", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetBackgroundTasksResponse( + object=unmarshal_json_response( + Optional[operations.GetBackgroundTasksResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_background_tasks_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetBackgroundTasksResponse: + r"""Get background tasks + + Get the list of all background tasks + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="GET", + path="/status/sessions/background", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getBackgroundTasks", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetBackgroundTasksResponse( + object=unmarshal_json_response( + Optional[operations.GetBackgroundTasksResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def list_playback_history( + self, + *, + request: Union[ + operations.ListPlaybackHistoryRequest, + operations.ListPlaybackHistoryRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListPlaybackHistoryResponse: + r"""List Playback History + + List all playback history (Admin can see all users, others can only see their own). + Pagination should be used on this endpoint. Additionally this endpoint supports `includeFields`, `excludeFields`, `includeElements`, and `excludeElements` parameters. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListPlaybackHistoryRequest) + request = cast(operations.ListPlaybackHistoryRequest, request) + + req = self._build_request( + method="GET", + path="/status/sessions/history/all", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListPlaybackHistoryGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listPlaybackHistory", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListPlaybackHistoryResponse( + object=unmarshal_json_response( + Optional[operations.ListPlaybackHistoryResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def list_playback_history_async( + self, + *, + request: Union[ + operations.ListPlaybackHistoryRequest, + operations.ListPlaybackHistoryRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ListPlaybackHistoryResponse: + r"""List Playback History + + List all playback history (Admin can see all users, others can only see their own). + Pagination should be used on this endpoint. Additionally this endpoint supports `includeFields`, `excludeFields`, `includeElements`, and `excludeElements` parameters. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ListPlaybackHistoryRequest) + request = cast(operations.ListPlaybackHistoryRequest, request) + + req = self._build_request_async( + method="GET", + path="/status/sessions/history/all", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ListPlaybackHistoryGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="listPlaybackHistory", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ListPlaybackHistoryResponse( + object=unmarshal_json_response( + Optional[operations.ListPlaybackHistoryResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def terminate_session( + self, + *, + request: Union[ + operations.TerminateSessionRequest, + operations.TerminateSessionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.TerminateSessionResponse: + r"""Terminate a session + + Terminate a playback session kicking off the user + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.TerminateSessionRequest) + request = cast(operations.TerminateSessionRequest, request) + + req = self._build_request( + method="POST", + path="/status/sessions/terminate", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.TerminateSessionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="terminateSession", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["401", "403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.TerminateSessionResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["401", "403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def terminate_session_async( + self, + *, + request: Union[ + operations.TerminateSessionRequest, + operations.TerminateSessionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.TerminateSessionResponse: + r"""Terminate a session + + Terminate a playback session kicking off the user + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.TerminateSessionRequest) + request = cast(operations.TerminateSessionRequest, request) + + req = self._build_request_async( + method="POST", + path="/status/sessions/terminate", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.TerminateSessionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="terminateSession", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["401", "403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.TerminateSessionResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["401", "403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_history( + self, + *, + request: Union[ + operations.DeleteHistoryRequest, operations.DeleteHistoryRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteHistoryResponse: + r"""Delete Single History Item + + Delete a single history item by id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteHistoryRequest) + request = cast(operations.DeleteHistoryRequest, request) + + req = self._build_request( + method="DELETE", + path="/status/sessions/history/{historyId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.DeleteHistoryGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteHistory", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.DeleteHistoryResponse( + media_container=unmarshal_json_response( + Optional[components.MediaContainer], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_history_async( + self, + *, + request: Union[ + operations.DeleteHistoryRequest, operations.DeleteHistoryRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteHistoryResponse: + r"""Delete Single History Item + + Delete a single history item by id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteHistoryRequest) + request = cast(operations.DeleteHistoryRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/status/sessions/history/{historyId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.DeleteHistoryGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteHistory", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.DeleteHistoryResponse( + media_container=unmarshal_json_response( + Optional[components.MediaContainer], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_history_item( + self, + *, + request: Union[ + operations.GetHistoryItemRequest, operations.GetHistoryItemRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetHistoryItemResponse: + r"""Get Single History Item + + Get a single history item by id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetHistoryItemRequest) + request = cast(operations.GetHistoryItemRequest, request) + + req = self._build_request( + method="GET", + path="/status/sessions/history/{historyId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetHistoryItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getHistoryItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetHistoryItemResponse( + history_all_get_responses_200=unmarshal_json_response( + Optional[components.HistoryAllGetResponses200], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_history_item_async( + self, + *, + request: Union[ + operations.GetHistoryItemRequest, operations.GetHistoryItemRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetHistoryItemResponse: + r"""Get Single History Item + + Get a single history item by id + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetHistoryItemRequest) + request = cast(operations.GetHistoryItemRequest, request) + + req = self._build_request_async( + method="GET", + path="/status/sessions/history/{historyId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetHistoryItemGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getHistoryItem", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetHistoryItemResponse( + history_all_get_responses_200=unmarshal_json_response( + Optional[components.HistoryAllGetResponses200], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/subscriptions.py b/src/plex_api_client/subscriptions.py new file mode 100644 index 0000000..646101f --- /dev/null +++ b/src/plex_api_client/subscriptions.py @@ -0,0 +1,1995 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import components, errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class Subscriptions(BaseSDK): + r"""Subscriptions determine which media will be recorded and the criteria for selecting an airing when multiple are available""" + + def get_all_subscriptions( + self, + *, + request: Union[ + operations.GetAllSubscriptionsRequest, + operations.GetAllSubscriptionsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAllSubscriptionsResponse: + r"""Get all subscriptions + + Get all subscriptions and potentially the grabs too + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetAllSubscriptionsRequest) + request = cast(operations.GetAllSubscriptionsRequest, request) + + req = self._build_request( + method="GET", + path="/media/subscriptions", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetAllSubscriptionsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAllSubscriptions", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAllSubscriptionsResponse( + media_container_with_subscription=unmarshal_json_response( + Optional[components.MediaContainerWithSubscription], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["403", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_all_subscriptions_async( + self, + *, + request: Union[ + operations.GetAllSubscriptionsRequest, + operations.GetAllSubscriptionsRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetAllSubscriptionsResponse: + r"""Get all subscriptions + + Get all subscriptions and potentially the grabs too + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetAllSubscriptionsRequest) + request = cast(operations.GetAllSubscriptionsRequest, request) + + req = self._build_request_async( + method="GET", + path="/media/subscriptions", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetAllSubscriptionsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getAllSubscriptions", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetAllSubscriptionsResponse( + media_container_with_subscription=unmarshal_json_response( + Optional[components.MediaContainerWithSubscription], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["403", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def create_subscription( + self, + *, + request: Union[ + operations.CreateSubscriptionRequest, + operations.CreateSubscriptionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CreateSubscriptionResponse: + r"""Create a subscription + + Create a subscription. The query parameters should be mostly derived from the [template](#tag/Subscriptions/operation/mediaSubscriptionsGetTemplate) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CreateSubscriptionRequest) + request = cast(operations.CreateSubscriptionRequest, request) + + req = self._build_request( + method="POST", + path="/media/subscriptions", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.CreateSubscriptionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="createSubscription", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "409", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.CreateSubscriptionResponse( + object=unmarshal_json_response( + Optional[operations.CreateSubscriptionResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["400", "403", "409", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def create_subscription_async( + self, + *, + request: Union[ + operations.CreateSubscriptionRequest, + operations.CreateSubscriptionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CreateSubscriptionResponse: + r"""Create a subscription + + Create a subscription. The query parameters should be mostly derived from the [template](#tag/Subscriptions/operation/mediaSubscriptionsGetTemplate) + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CreateSubscriptionRequest) + request = cast(operations.CreateSubscriptionRequest, request) + + req = self._build_request_async( + method="POST", + path="/media/subscriptions", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.CreateSubscriptionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="createSubscription", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "409", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.CreateSubscriptionResponse( + object=unmarshal_json_response( + Optional[operations.CreateSubscriptionResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["400", "403", "409", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def process_subscriptions( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ProcessSubscriptionsResponse: + r"""Process all subscriptions + + Process all subscriptions asynchronously + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="POST", + path="/media/subscriptions/process", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="processSubscriptions", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.ProcessSubscriptionsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["403", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def process_subscriptions_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ProcessSubscriptionsResponse: + r"""Process all subscriptions + + Process all subscriptions asynchronously + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="POST", + path="/media/subscriptions/process", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="processSubscriptions", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.ProcessSubscriptionsResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["403", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_scheduled_recordings( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetScheduledRecordingsResponse: + r"""Get all scheduled recordings + + Get all scheduled recordings across all subscriptions + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="GET", + path="/media/subscriptions/scheduled", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getScheduledRecordings", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetScheduledRecordingsResponse( + object=unmarshal_json_response( + Optional[operations.GetScheduledRecordingsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["403", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_scheduled_recordings_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetScheduledRecordingsResponse: + r"""Get all scheduled recordings + + Get all scheduled recordings across all subscriptions + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="GET", + path="/media/subscriptions/scheduled", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getScheduledRecordings", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetScheduledRecordingsResponse( + object=unmarshal_json_response( + Optional[operations.GetScheduledRecordingsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["403", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_template( + self, + *, + request: Union[ + operations.GetTemplateRequest, operations.GetTemplateRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetTemplateResponse: + r"""Get the subscription template + + Get the templates for a piece of media which could include fetching one airing, season, the whole show, etc. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetTemplateRequest) + request = cast(operations.GetTemplateRequest, request) + + req = self._build_request( + method="GET", + path="/media/subscriptions/template", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetTemplateGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getTemplate", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetTemplateResponse( + object=unmarshal_json_response( + Optional[operations.GetTemplateResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["403", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_template_async( + self, + *, + request: Union[ + operations.GetTemplateRequest, operations.GetTemplateRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetTemplateResponse: + r"""Get the subscription template + + Get the templates for a piece of media which could include fetching one airing, season, the whole show, etc. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetTemplateRequest) + request = cast(operations.GetTemplateRequest, request) + + req = self._build_request_async( + method="GET", + path="/media/subscriptions/template", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetTemplateGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getTemplate", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetTemplateResponse( + object=unmarshal_json_response( + Optional[operations.GetTemplateResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + headers=utils.get_response_headers(http_res.headers), + ) + if utils.match_response(http_res, ["403", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def cancel_grab( + self, + *, + request: Union[ + operations.CancelGrabRequest, operations.CancelGrabRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CancelGrabResponse: + r"""Cancel an existing grab + + Cancels an existing media grab (recording). It can be used to resolve a conflict which exists for a rolling subscription. + Note: This cancellation does not persist across a server restart, but neither does a rolling subscription itself. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CancelGrabRequest) + request = cast(operations.CancelGrabRequest, request) + + req = self._build_request( + method="DELETE", + path="/media/grabbers/operations/{operationId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.CancelGrabGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="cancelGrab", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.CancelGrabResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def cancel_grab_async( + self, + *, + request: Union[ + operations.CancelGrabRequest, operations.CancelGrabRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CancelGrabResponse: + r"""Cancel an existing grab + + Cancels an existing media grab (recording). It can be used to resolve a conflict which exists for a rolling subscription. + Note: This cancellation does not persist across a server restart, but neither does a rolling subscription itself. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CancelGrabRequest) + request = cast(operations.CancelGrabRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/media/grabbers/operations/{operationId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.CancelGrabGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="cancelGrab", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.CancelGrabResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def delete_subscription( + self, + *, + request: Union[ + operations.DeleteSubscriptionRequest, + operations.DeleteSubscriptionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteSubscriptionResponse: + r"""Delete a subscription + + Delete a subscription, cancelling all of its grabs as well + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteSubscriptionRequest) + request = cast(operations.DeleteSubscriptionRequest, request) + + req = self._build_request( + method="DELETE", + path="/media/subscriptions/{subscriptionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteSubscriptionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteSubscription", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteSubscriptionResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def delete_subscription_async( + self, + *, + request: Union[ + operations.DeleteSubscriptionRequest, + operations.DeleteSubscriptionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.DeleteSubscriptionResponse: + r"""Delete a subscription + + Delete a subscription, cancelling all of its grabs as well + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.DeleteSubscriptionRequest) + request = cast(operations.DeleteSubscriptionRequest, request) + + req = self._build_request_async( + method="DELETE", + path="/media/subscriptions/{subscriptionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.DeleteSubscriptionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="deleteSubscription", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.DeleteSubscriptionResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_subscription( + self, + *, + request: Union[ + operations.GetSubscriptionRequest, + operations.GetSubscriptionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSubscriptionResponse: + r"""Get a single subscription + + Get a single subscription and potentially the grabs too + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSubscriptionRequest) + request = cast(operations.GetSubscriptionRequest, request) + + req = self._build_request( + method="GET", + path="/media/subscriptions/{subscriptionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetSubscriptionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSubscription", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSubscriptionResponse( + media_container_with_subscription=unmarshal_json_response( + Optional[components.MediaContainerWithSubscription], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_subscription_async( + self, + *, + request: Union[ + operations.GetSubscriptionRequest, + operations.GetSubscriptionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetSubscriptionResponse: + r"""Get a single subscription + + Get a single subscription and potentially the grabs too + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetSubscriptionRequest) + request = cast(operations.GetSubscriptionRequest, request) + + req = self._build_request_async( + method="GET", + path="/media/subscriptions/{subscriptionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetSubscriptionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getSubscription", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetSubscriptionResponse( + media_container_with_subscription=unmarshal_json_response( + Optional[components.MediaContainerWithSubscription], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def edit_subscription_preferences( + self, + *, + request: Union[ + operations.EditSubscriptionPreferencesRequest, + operations.EditSubscriptionPreferencesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.EditSubscriptionPreferencesResponse: + r"""Edit a subscription + + Edit a subscription's preferences + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.EditSubscriptionPreferencesRequest + ) + request = cast(operations.EditSubscriptionPreferencesRequest, request) + + req = self._build_request( + method="PUT", + path="/media/subscriptions/{subscriptionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.EditSubscriptionPreferencesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="editSubscriptionPreferences", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.EditSubscriptionPreferencesResponse( + media_container_with_subscription=unmarshal_json_response( + Optional[components.MediaContainerWithSubscription], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def edit_subscription_preferences_async( + self, + *, + request: Union[ + operations.EditSubscriptionPreferencesRequest, + operations.EditSubscriptionPreferencesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.EditSubscriptionPreferencesResponse: + r"""Edit a subscription + + Edit a subscription's preferences + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal( + request, operations.EditSubscriptionPreferencesRequest + ) + request = cast(operations.EditSubscriptionPreferencesRequest, request) + + req = self._build_request_async( + method="PUT", + path="/media/subscriptions/{subscriptionId}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.EditSubscriptionPreferencesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="editSubscriptionPreferences", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.EditSubscriptionPreferencesResponse( + media_container_with_subscription=unmarshal_json_response( + Optional[components.MediaContainerWithSubscription], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def reorder_subscription( + self, + *, + request: Union[ + operations.ReorderSubscriptionRequest, + operations.ReorderSubscriptionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ReorderSubscriptionResponse: + r"""Re-order a subscription + + Re-order a subscription to change its priority + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ReorderSubscriptionRequest) + request = cast(operations.ReorderSubscriptionRequest, request) + + req = self._build_request( + method="PUT", + path="/media/subscriptions/{subscriptionId}/move", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ReorderSubscriptionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="reorderSubscription", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ReorderSubscriptionResponse( + media_container_with_subscription=unmarshal_json_response( + Optional[components.MediaContainerWithSubscription], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def reorder_subscription_async( + self, + *, + request: Union[ + operations.ReorderSubscriptionRequest, + operations.ReorderSubscriptionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ReorderSubscriptionResponse: + r"""Re-order a subscription + + Re-order a subscription to change its priority + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ReorderSubscriptionRequest) + request = cast(operations.ReorderSubscriptionRequest, request) + + req = self._build_request_async( + method="PUT", + path="/media/subscriptions/{subscriptionId}/move", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ReorderSubscriptionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="reorderSubscription", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ReorderSubscriptionResponse( + media_container_with_subscription=unmarshal_json_response( + Optional[components.MediaContainerWithSubscription], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/timeline.py b/src/plex_api_client/timeline.py new file mode 100644 index 0000000..b5146d3 --- /dev/null +++ b/src/plex_api_client/timeline.py @@ -0,0 +1,621 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class Timeline(BaseSDK): + r"""The actions feature within a media provider""" + + def mark_played( + self, + *, + request: Union[ + operations.MarkPlayedRequest, operations.MarkPlayedRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.MarkPlayedResponse: + r"""Mark an item as played + + Mark an item as played. Note, this does not create any view history of this item but rather just sets the state as played. The client must provide either the `key` or `uri` query parameter + This API does respond to the GET verb but applications should use PUT + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.MarkPlayedRequest) + request = cast(operations.MarkPlayedRequest, request) + + req = self._build_request( + method="PUT", + path="/:/scrobble", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.MarkPlayedGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="markPlayed", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.MarkPlayedResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def mark_played_async( + self, + *, + request: Union[ + operations.MarkPlayedRequest, operations.MarkPlayedRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.MarkPlayedResponse: + r"""Mark an item as played + + Mark an item as played. Note, this does not create any view history of this item but rather just sets the state as played. The client must provide either the `key` or `uri` query parameter + This API does respond to the GET verb but applications should use PUT + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.MarkPlayedRequest) + request = cast(operations.MarkPlayedRequest, request) + + req = self._build_request_async( + method="PUT", + path="/:/scrobble", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.MarkPlayedGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="markPlayed", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.MarkPlayedResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def report( + self, + *, + request: Union[operations.ReportRequest, operations.ReportRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ReportResponse: + r"""Report media timeline + + This endpoint is hit during media playback for an item. It must be hit whenever the play state changes, or in the absence of a play state change, in a regular fashion (generally this means every 10 seconds on a LAN/WAN, and every 20 seconds over cellular). + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ReportRequest) + request = cast(operations.ReportRequest, request) + + req = self._build_request( + method="POST", + path="/:/timeline", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ReportGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="report", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ReportResponse( + object=unmarshal_json_response( + Optional[operations.ReportResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def report_async( + self, + *, + request: Union[operations.ReportRequest, operations.ReportRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.ReportResponse: + r"""Report media timeline + + This endpoint is hit during media playback for an item. It must be hit whenever the play state changes, or in the absence of a play state change, in a regular fashion (generally this means every 10 seconds on a LAN/WAN, and every 20 seconds over cellular). + + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ReportRequest) + request = cast(operations.ReportRequest, request) + + req = self._build_request_async( + method="POST", + path="/:/timeline", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.ReportGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="report", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.ReportResponse( + object=unmarshal_json_response( + Optional[operations.ReportResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def unscrobble( + self, + *, + request: Union[ + operations.UnscrobbleRequest, operations.UnscrobbleRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.UnscrobbleResponse: + r"""Mark an item as unplayed + + Mark an item as unplayed. The client must provide either the `key` or `uri` query parameter + This API does respond to the GET verb but applications should use PUT + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UnscrobbleRequest) + request = cast(operations.UnscrobbleRequest, request) + + req = self._build_request( + method="PUT", + path="/:/unscrobble", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.UnscrobbleGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="unscrobble", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.UnscrobbleResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def unscrobble_async( + self, + *, + request: Union[ + operations.UnscrobbleRequest, operations.UnscrobbleRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.UnscrobbleResponse: + r"""Mark an item as unplayed + + Mark an item as unplayed. The client must provide either the `key` or `uri` query parameter + This API does respond to the GET verb but applications should use PUT + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.UnscrobbleRequest) + request = cast(operations.UnscrobbleRequest, request) + + req = self._build_request_async( + method="PUT", + path="/:/unscrobble", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.UnscrobbleGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="unscrobble", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.UnscrobbleResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/transcoder.py b/src/plex_api_client/transcoder.py new file mode 100644 index 0000000..73380d4 --- /dev/null +++ b/src/plex_api_client/transcoder.py @@ -0,0 +1,1080 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from enum import Enum +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import components, errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class TranscodeImageAcceptEnum(str, Enum): + IMAGE_JPEG = "image/jpeg" + IMAGE_PNG = "image/png" + IMAGE_X_PORTABLE_PIXMAP = "image/x-portable-pixmap" + + +class Transcoder(BaseSDK): + r"""API Operations against the Transcoder""" + + def transcode_image( + self, + *, + request: Union[ + operations.TranscodeImageRequest, operations.TranscodeImageRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + accept_header_override: Optional[TranscodeImageAcceptEnum] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.TranscodeImageResponse: + r"""Transcode an image + + Transcode an image, possibly changing format or size + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param accept_header_override: Override the default accept header for this method + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.TranscodeImageRequest) + request = cast(operations.TranscodeImageRequest, request) + + req = self._build_request( + method="GET", + path="/photo/:/transcode", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value=accept_header_override.value + if accept_header_override is not None + else "image/jpeg;q=1, image/png;q=0.7, image/x-portable-pixmap;q=0", + http_headers=http_headers, + _globals=operations.TranscodeImageGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="transcodeImage", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "image/jpeg"): + return operations.TranscodeImageResponse( + two_hundred_image_jpeg_response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "200", "image/png"): + return operations.TranscodeImageResponse( + two_hundred_image_png_response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "200", "image/x-portable-pixmap"): + return operations.TranscodeImageResponse( + two_hundred_image_x_portable_pixmap_response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + async def transcode_image_async( + self, + *, + request: Union[ + operations.TranscodeImageRequest, operations.TranscodeImageRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + accept_header_override: Optional[TranscodeImageAcceptEnum] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.TranscodeImageResponse: + r"""Transcode an image + + Transcode an image, possibly changing format or size + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param accept_header_override: Override the default accept header for this method + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.TranscodeImageRequest) + request = cast(operations.TranscodeImageRequest, request) + + req = self._build_request_async( + method="GET", + path="/photo/:/transcode", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value=accept_header_override.value + if accept_header_override is not None + else "image/jpeg;q=1, image/png;q=0.7, image/x-portable-pixmap;q=0", + http_headers=http_headers, + _globals=operations.TranscodeImageGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="transcodeImage", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "image/jpeg"): + return operations.TranscodeImageResponse( + two_hundred_image_jpeg_response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "200", "image/png"): + return operations.TranscodeImageResponse( + two_hundred_image_png_response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "200", "image/x-portable-pixmap"): + return operations.TranscodeImageResponse( + two_hundred_image_x_portable_pixmap_response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + def make_decision( + self, + *, + request: Union[ + operations.MakeDecisionRequest, operations.MakeDecisionRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.MakeDecisionResponse: + r"""Make a decision on media playback + + Make a decision on media playback based on client profile, and requested settings such as bandwidth and resolution. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.MakeDecisionRequest) + request = cast(operations.MakeDecisionRequest, request) + + req = self._build_request( + method="GET", + path="/{transcodeType}/:/transcode/universal/decision", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.MakeDecisionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="makeDecision", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.MakeDecisionResponse( + media_container_with_decision=unmarshal_json_response( + Optional[components.MediaContainerWithDecision], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def make_decision_async( + self, + *, + request: Union[ + operations.MakeDecisionRequest, operations.MakeDecisionRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.MakeDecisionResponse: + r"""Make a decision on media playback + + Make a decision on media playback based on client profile, and requested settings such as bandwidth and resolution. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.MakeDecisionRequest) + request = cast(operations.MakeDecisionRequest, request) + + req = self._build_request_async( + method="GET", + path="/{transcodeType}/:/transcode/universal/decision", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.MakeDecisionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="makeDecision", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.MakeDecisionResponse( + media_container_with_decision=unmarshal_json_response( + Optional[components.MediaContainerWithDecision], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def trigger_fallback( + self, + *, + request: Union[ + operations.TriggerFallbackRequest, + operations.TriggerFallbackRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.TriggerFallbackResponse: + r"""Manually trigger a transcoder fallback + + Manually trigger a transcoder fallback ex: HEVC to h.264 or hw to sw + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.TriggerFallbackRequest) + request = cast(operations.TriggerFallbackRequest, request) + + req = self._build_request( + method="POST", + path="/{transcodeType}/:/transcode/universal/fallback", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.TriggerFallbackGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="triggerFallback", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "412", "4XX", "500", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.TriggerFallbackResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "412", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def trigger_fallback_async( + self, + *, + request: Union[ + operations.TriggerFallbackRequest, + operations.TriggerFallbackRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.TriggerFallbackResponse: + r"""Manually trigger a transcoder fallback + + Manually trigger a transcoder fallback ex: HEVC to h.264 or hw to sw + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.TriggerFallbackRequest) + request = cast(operations.TriggerFallbackRequest, request) + + req = self._build_request_async( + method="POST", + path="/{transcodeType}/:/transcode/universal/fallback", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.TriggerFallbackGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="triggerFallback", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "412", "4XX", "500", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.TriggerFallbackResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "412", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def transcode_subtitles( + self, + *, + request: Union[ + operations.TranscodeSubtitlesRequest, + operations.TranscodeSubtitlesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.TranscodeSubtitlesResponse: + r"""Transcode subtitles + + Only transcode subtitle streams. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.TranscodeSubtitlesRequest) + request = cast(operations.TranscodeSubtitlesRequest, request) + + req = self._build_request( + method="GET", + path="/{transcodeType}/:/transcode/universal/subtitles", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.TranscodeSubtitlesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="transcodeSubtitles", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.TranscodeSubtitlesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def transcode_subtitles_async( + self, + *, + request: Union[ + operations.TranscodeSubtitlesRequest, + operations.TranscodeSubtitlesRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.TranscodeSubtitlesResponse: + r"""Transcode subtitles + + Only transcode subtitle streams. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.TranscodeSubtitlesRequest) + request = cast(operations.TranscodeSubtitlesRequest, request) + + req = self._build_request_async( + method="GET", + path="/{transcodeType}/:/transcode/universal/subtitles", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.TranscodeSubtitlesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="transcodeSubtitles", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.TranscodeSubtitlesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def start_transcode_session( + self, + *, + request: Union[ + operations.StartTranscodeSessionRequest, + operations.StartTranscodeSessionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.StartTranscodeSessionResponse: + r"""Start A Transcoding Session + + Starts the transcoder and returns the corresponding streaming resource document. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.StartTranscodeSessionRequest) + request = cast(operations.StartTranscodeSessionRequest, request) + + req = self._build_request( + method="GET", + path="/{transcodeType}/:/transcode/universal/start.{extension}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="video/x-matroska", + http_headers=http_headers, + _globals=operations.StartTranscodeSessionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="startTranscodeSession", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "video/x-matroska"): + return operations.StartTranscodeSessionResponse( + response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + async def start_transcode_session_async( + self, + *, + request: Union[ + operations.StartTranscodeSessionRequest, + operations.StartTranscodeSessionRequestTypedDict, + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.StartTranscodeSessionResponse: + r"""Start A Transcoding Session + + Starts the transcoder and returns the corresponding streaming resource document. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.StartTranscodeSessionRequest) + request = cast(operations.StartTranscodeSessionRequest, request) + + req = self._build_request_async( + method="GET", + path="/{transcodeType}/:/transcode/universal/start.{extension}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="video/x-matroska", + http_headers=http_headers, + _globals=operations.StartTranscodeSessionGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="startTranscodeSession", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "403", "404", "4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "video/x-matroska"): + return operations.StartTranscodeSessionResponse( + response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "403", "404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) diff --git a/src/plex_api_client/ultrablur.py b/src/plex_api_client/ultrablur.py new file mode 100644 index 0000000..c4f469b --- /dev/null +++ b/src/plex_api_client/ultrablur.py @@ -0,0 +1,421 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from plex_api_client import utils +from plex_api_client._hooks import HookContext +from plex_api_client.models import errors, operations +from plex_api_client.types import BaseModel, OptionalNullable, UNSET +from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response +from typing import Mapping, Optional, Union, cast + + +class UltraBlur(BaseSDK): + r"""Service provided to compute UltraBlur colors and images.""" + + def get_colors( + self, + *, + request: Union[ + operations.GetColorsRequest, operations.GetColorsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetColorsResponse: + r"""Get UltraBlur Colors + + Retrieves the four colors extracted from an image for clients to use to generate an ultrablur image. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetColorsRequest) + request = cast(operations.GetColorsRequest, request) + + req = self._build_request( + method="GET", + path="/services/ultrablur/colors", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetColorsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getColors", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "500", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetColorsResponse( + object=unmarshal_json_response( + Optional[operations.GetColorsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["500", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_colors_async( + self, + *, + request: Union[ + operations.GetColorsRequest, operations.GetColorsRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetColorsResponse: + r"""Get UltraBlur Colors + + Retrieves the four colors extracted from an image for clients to use to generate an ultrablur image. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetColorsRequest) + request = cast(operations.GetColorsRequest, request) + + req = self._build_request_async( + method="GET", + path="/services/ultrablur/colors", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=operations.GetColorsGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getColors", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["404", "4XX", "500", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetColorsResponse( + object=unmarshal_json_response( + Optional[operations.GetColorsResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["404", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_image( + self, + *, + request: Union[operations.GetImageRequest, operations.GetImageRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetImageResponse: + r"""Get UltraBlur Image + + Retrieves a server-side generated UltraBlur image based on the provided color inputs. Clients should always call this via the photo transcoder endpoint. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetImageRequest) + request = cast(operations.GetImageRequest, request) + + req = self._build_request( + method="GET", + path="/services/ultrablur/image", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="image/png", + http_headers=http_headers, + _globals=operations.GetImageGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getImage", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "image/png"): + return operations.GetImageResponse( + response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) + + async def get_image_async( + self, + *, + request: Union[operations.GetImageRequest, operations.GetImageRequestTypedDict], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetImageResponse: + r"""Get UltraBlur Image + + Retrieves a server-side generated UltraBlur image based on the provided color inputs. Clients should always call this via the photo transcoder endpoint. + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.GetImageRequest) + request = cast(operations.GetImageRequest, request) + + req = self._build_request_async( + method="GET", + path="/services/ultrablur/image", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="image/png", + http_headers=http_headers, + _globals=operations.GetImageGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getImage", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "5XX"], + stream=True, + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "image/png"): + return operations.GetImageResponse( + response_stream=http_res, + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("Unexpected response received", http_res, http_res_text) diff --git a/src/plex_api_client/updater.py b/src/plex_api_client/updater.py index feddce4..b51b53b 100644 --- a/src/plex_api_client/updater.py +++ b/src/plex_api_client/updater.py @@ -4,9 +4,9 @@ from .basesdk import BaseSDK from plex_api_client import utils from plex_api_client._hooks import HookContext from plex_api_client.models import errors, operations -from plex_api_client.types import OptionalNullable, UNSET +from plex_api_client.types import BaseModel, OptionalNullable, UNSET from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Mapping, Optional +from typing import Mapping, Optional, Union, cast class Updater(BaseSDK): @@ -15,407 +15,22 @@ class Updater(BaseSDK): """ - def get_update_status( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetUpdateStatusResponse: - r"""Querying status of updates - - Querying status of updates - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request( - method="GET", - path="/updater/status", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getUpdateStatus", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetUpdateStatusResponse( - object=unmarshal_json_response( - Optional[operations.GetUpdateStatusResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetUpdateStatusBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetUpdateStatusBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetUpdateStatusUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetUpdateStatusUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_update_status_async( - self, - *, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetUpdateStatusResponse: - r"""Querying status of updates - - Querying status of updates - - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - req = self._build_request_async( - method="GET", - path="/updater/status", - base_url=base_url, - url_variables=url_variables, - request=None, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getUpdateStatus", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetUpdateStatusResponse( - object=unmarshal_json_response( - Optional[operations.GetUpdateStatusResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetUpdateStatusBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetUpdateStatusBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetUpdateStatusUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetUpdateStatusUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def check_for_updates( - self, - *, - download: Optional[operations.Download] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.CheckForUpdatesResponse: - r"""Checking for updates - - Checking for updates - - :param download: Indicate that you want to start download any updates found. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.CheckForUpdatesRequest( - download=download, - ) - - req = self._build_request( - method="PUT", - path="/updater/check", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="checkForUpdates", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.CheckForUpdatesResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.CheckForUpdatesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.CheckForUpdatesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.CheckForUpdatesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.CheckForUpdatesUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def check_for_updates_async( - self, - *, - download: Optional[operations.Download] = None, - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.CheckForUpdatesResponse: - r"""Checking for updates - - Checking for updates - - :param download: Indicate that you want to start download any updates found. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - request = operations.CheckForUpdatesRequest( - download=download, - ) - - req = self._build_request_async( - method="PUT", - path="/updater/check", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="checkForUpdates", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.CheckForUpdatesResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.CheckForUpdatesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.CheckForUpdatesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.CheckForUpdatesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.CheckForUpdatesUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - def apply_updates( self, *, - tonight: Optional[operations.Tonight] = None, - skip: Optional[operations.Skip] = None, + request: Union[ + operations.ApplyUpdatesRequest, operations.ApplyUpdatesRequestTypedDict + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ) -> operations.ApplyUpdatesResponse: - r"""Apply Updates + r"""Applying updates - Note that these two parameters are effectively mutually exclusive. The `tonight` parameter takes precedence and `skip` will be ignored if `tonight` is also passed + Apply any downloaded updates. Note that the two parameters `tonight` and `skip` are effectively mutually exclusive. The `tonight` parameter takes precedence and `skip` will be ignored if `tonight` is also passed. - - :param tonight: Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install - :param skip: Indicate that the latest version should be marked as skipped. The [Release] entry for this version will have the `state` set to `skipped`. + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -431,10 +46,9 @@ class Updater(BaseSDK): else: base_url = self._get_url(base_url, url_variables) - request = operations.ApplyUpdatesRequest( - tonight=tonight, - skip=skip, - ) + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ApplyUpdatesRequest) + request = cast(operations.ApplyUpdatesRequest, request) req = self._build_request( method="PUT", @@ -446,8 +60,21 @@ class Updater(BaseSDK): request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", - accept_header_value="application/json", + accept_header_value="*/*", http_headers=http_headers, + _globals=operations.ApplyUpdatesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), security=self.sdk_configuration.security, timeout_ms=timeout_ms, ) @@ -465,34 +92,21 @@ class Updater(BaseSDK): config=self.sdk_configuration, base_url=base_url or "", operation_id="applyUpdates", - oauth2_scopes=[], + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "500", "5XX"], + error_status_codes=["400", "4XX", "500", "5XX"], retry_config=retry_config, ) - response_data: Any = None if utils.match_response(http_res, "200", "*"): return operations.ApplyUpdatesResponse( status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.ApplyUpdatesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.ApplyUpdatesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.ApplyUpdatesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.ApplyUpdatesUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): + if utils.match_response(http_res, ["400", "4XX"], "*"): http_res_text = utils.stream_to_text(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) if utils.match_response(http_res, ["500", "5XX"], "*"): @@ -504,20 +118,19 @@ class Updater(BaseSDK): async def apply_updates_async( self, *, - tonight: Optional[operations.Tonight] = None, - skip: Optional[operations.Skip] = None, + request: Union[ + operations.ApplyUpdatesRequest, operations.ApplyUpdatesRequestTypedDict + ], retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, http_headers: Optional[Mapping[str, str]] = None, ) -> operations.ApplyUpdatesResponse: - r"""Apply Updates + r"""Applying updates - Note that these two parameters are effectively mutually exclusive. The `tonight` parameter takes precedence and `skip` will be ignored if `tonight` is also passed + Apply any downloaded updates. Note that the two parameters `tonight` and `skip` are effectively mutually exclusive. The `tonight` parameter takes precedence and `skip` will be ignored if `tonight` is also passed. - - :param tonight: Indicate that you want the update to run during the next Butler execution. Omitting this or setting it to false indicates that the update should install - :param skip: Indicate that the latest version should be marked as skipped. The [Release] entry for this version will have the `state` set to `skipped`. + :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -533,10 +146,9 @@ class Updater(BaseSDK): else: base_url = self._get_url(base_url, url_variables) - request = operations.ApplyUpdatesRequest( - tonight=tonight, - skip=skip, - ) + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.ApplyUpdatesRequest) + request = cast(operations.ApplyUpdatesRequest, request) req = self._build_request_async( method="PUT", @@ -548,6 +160,378 @@ class Updater(BaseSDK): request_has_path_params=False, request_has_query_params=True, user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.ApplyUpdatesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="applyUpdates", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["400", "4XX", "500", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.ApplyUpdatesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, ["400", "4XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, ["500", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def check_updates( + self, + *, + request: Union[ + operations.CheckUpdatesRequest, operations.CheckUpdatesRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CheckUpdatesResponse: + r"""Checking for updates + + Perform an update check and potentially download + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CheckUpdatesRequest) + request = cast(operations.CheckUpdatesRequest, request) + + req = self._build_request( + method="PUT", + path="/updater/check", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.CheckUpdatesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="checkUpdates", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.CheckUpdatesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def check_updates_async( + self, + *, + request: Union[ + operations.CheckUpdatesRequest, operations.CheckUpdatesRequestTypedDict + ], + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.CheckUpdatesResponse: + r"""Checking for updates + + Perform an update check and potentially download + + :param request: The request object to send. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, operations.CheckUpdatesRequest) + request = cast(operations.CheckUpdatesRequest, request) + + req = self._build_request_async( + method="PUT", + path="/updater/check", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="*/*", + http_headers=http_headers, + _globals=operations.CheckUpdatesGlobals( + accepts=self.sdk_configuration.globals.accepts, + client_identifier=self.sdk_configuration.globals.client_identifier, + product=self.sdk_configuration.globals.product, + version=self.sdk_configuration.globals.version, + platform=self.sdk_configuration.globals.platform, + platform_version=self.sdk_configuration.globals.platform_version, + device=self.sdk_configuration.globals.device, + model=self.sdk_configuration.globals.model, + device_vendor=self.sdk_configuration.globals.device_vendor, + device_name=self.sdk_configuration.globals.device_name, + marketplace=self.sdk_configuration.globals.marketplace, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="checkUpdates", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "*"): + return operations.CheckUpdatesResponse( + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + def get_updates_status( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetUpdatesStatusResponse: + r"""Querying status of updates + + Get the status of updating the server + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request( + method="GET", + path="/updater/status", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["429", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="getUpdatesStatus", + oauth2_scopes=None, + security_source=self.sdk_configuration.security, + ), + request=req, + error_status_codes=["4XX", "5XX"], + retry_config=retry_config, + ) + + if utils.match_response(http_res, "200", "application/json"): + return operations.GetUpdatesStatusResponse( + object=unmarshal_json_response( + Optional[operations.GetUpdatesStatusResponseBody], http_res + ), + status_code=http_res.status_code, + content_type=http_res.headers.get("Content-Type") or "", + raw_response=http_res, + ) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise errors.SDKError("API error occurred", http_res, http_res_text) + + raise errors.SDKError("Unexpected response received", http_res) + + async def get_updates_status_async( + self, + *, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> operations.GetUpdatesStatusResponse: + r"""Querying status of updates + + Get the status of updating the server + + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + req = self._build_request_async( + method="GET", + path="/updater/status", + base_url=base_url, + url_variables=url_variables, + request=None, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", accept_header_value="application/json", http_headers=http_headers, security=self.sdk_configuration.security, @@ -566,38 +550,28 @@ class Updater(BaseSDK): hook_ctx=HookContext( config=self.sdk_configuration, base_url=base_url or "", - operation_id="applyUpdates", - oauth2_scopes=[], + operation_id="getUpdatesStatus", + oauth2_scopes=None, security_source=self.sdk_configuration.security, ), request=req, - error_status_codes=["400", "401", "4XX", "500", "5XX"], + error_status_codes=["4XX", "5XX"], retry_config=retry_config, ) - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.ApplyUpdatesResponse( + if utils.match_response(http_res, "200", "application/json"): + return operations.GetUpdatesStatusResponse( + object=unmarshal_json_response( + Optional[operations.GetUpdatesStatusResponseBody], http_res + ), status_code=http_res.status_code, content_type=http_res.headers.get("Content-Type") or "", raw_response=http_res, ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.ApplyUpdatesBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.ApplyUpdatesBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.ApplyUpdatesUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.ApplyUpdatesUnauthorized(response_data, http_res) if utils.match_response(http_res, "4XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, ["500", "5XX"], "*"): + if utils.match_response(http_res, "5XX", "*"): http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError("API error occurred", http_res, http_res_text) diff --git a/src/plex_api_client/users.py b/src/plex_api_client/users.py deleted file mode 100644 index 8383548..0000000 --- a/src/plex_api_client/users.py +++ /dev/null @@ -1,209 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from .basesdk import BaseSDK -from plex_api_client import utils -from plex_api_client._hooks import HookContext -from plex_api_client.models import errors, operations -from plex_api_client.types import BaseModel, OptionalNullable, UNSET -from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Mapping, Optional, Union, cast - - -class Users(BaseSDK): - def get_users( - self, - *, - request: Union[operations.GetUsersRequest, operations.GetUsersRequestTypedDict], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetUsersResponse: - r"""Get list of all connected users - - Get list of all users that are friends and have library access with the provided Plex authentication token - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_USERS_SERVERS[0] - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetUsersRequest) - request = cast(operations.GetUsersRequest, request) - - req = self._build_request( - method="GET", - path="/users", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=False, - user_agent_header="user-agent", - accept_header_value="application/xml", - http_headers=http_headers, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-users", - oauth2_scopes=[], - security_source=None, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/xml"): - http_res_bytes = utils.stream_to_bytes(http_res) - return operations.GetUsersResponse( - body=http_res_bytes, - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetUsersBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetUsersBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetUsersUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetUsersUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_users_async( - self, - *, - request: Union[operations.GetUsersRequest, operations.GetUsersRequestTypedDict], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetUsersResponse: - r"""Get list of all connected users - - Get list of all users that are friends and have library access with the provided Plex authentication token - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_USERS_SERVERS[0] - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetUsersRequest) - request = cast(operations.GetUsersRequest, request) - - req = self._build_request_async( - method="GET", - path="/users", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=False, - user_agent_header="user-agent", - accept_header_value="application/xml", - http_headers=http_headers, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-users", - oauth2_scopes=[], - security_source=None, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/xml"): - http_res_bytes = await utils.stream_to_bytes_async(http_res) - return operations.GetUsersResponse( - body=http_res_bytes, - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetUsersBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetUsersBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetUsersUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetUsersUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/utils/annotations.py b/src/plex_api_client/utils/annotations.py index 387874e..12e0aa4 100644 --- a/src/plex_api_client/utils/annotations.py +++ b/src/plex_api_client/utils/annotations.py @@ -3,6 +3,7 @@ from enum import Enum from typing import Any, Optional + def get_discriminator(model: Any, fieldname: str, key: str) -> str: """ Recursively search for the discriminator attribute in a model. @@ -25,31 +26,54 @@ def get_discriminator(model: Any, fieldname: str, key: str) -> str: if isinstance(field, dict): if key in field: - return f'{field[key]}' + return f"{field[key]}" if hasattr(field, fieldname): attr = getattr(field, fieldname) if isinstance(attr, Enum): - return f'{attr.value}' - return f'{attr}' + return f"{attr.value}" + return f"{attr}" if hasattr(field, upper_fieldname): attr = getattr(field, upper_fieldname) if isinstance(attr, Enum): - return f'{attr.value}' - return f'{attr}' + return f"{attr.value}" + return f"{attr}" return None + def search_nested_discriminator(obj: Any) -> Optional[str]: + """Recursively search for discriminator in nested structures.""" + # First try direct field lookup + discriminator = get_field_discriminator(obj) + if discriminator is not None: + return discriminator + + # If it's a dict, search in nested values + if isinstance(obj, dict): + for value in obj.values(): + if isinstance(value, list): + # Search in list items + for item in value: + nested_discriminator = search_nested_discriminator(item) + if nested_discriminator is not None: + return nested_discriminator + elif isinstance(value, dict): + # Search in nested dict + nested_discriminator = search_nested_discriminator(value) + if nested_discriminator is not None: + return nested_discriminator + + return None if isinstance(model, list): for field in model: - discriminator = get_field_discriminator(field) + discriminator = search_nested_discriminator(field) if discriminator is not None: return discriminator - discriminator = get_field_discriminator(model) + discriminator = search_nested_discriminator(model) if discriminator is not None: return discriminator - raise ValueError(f'Could not find discriminator field {fieldname} in {model}') + raise ValueError(f"Could not find discriminator field {fieldname} in {model}") diff --git a/src/plex_api_client/video.py b/src/plex_api_client/video.py deleted file mode 100644 index 4e8a6d7..0000000 --- a/src/plex_api_client/video.py +++ /dev/null @@ -1,419 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from .basesdk import BaseSDK -from plex_api_client import utils -from plex_api_client._hooks import HookContext -from plex_api_client.models import errors, operations -from plex_api_client.types import BaseModel, OptionalNullable, UNSET -from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Mapping, Optional, Union, cast - - -class Video(BaseSDK): - r"""API Calls that perform operations with Plex Media Server Videos""" - - def get_timeline( - self, - *, - request: Union[ - operations.GetTimelineRequest, operations.GetTimelineRequestTypedDict - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetTimelineResponse: - r"""Get the timeline for a media item - - Get the timeline for a media item - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetTimelineRequest) - request = cast(operations.GetTimelineRequest, request) - - req = self._build_request( - method="GET", - path="/:/timeline", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getTimeline", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.GetTimelineResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetTimelineBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTimelineBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetTimelineUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTimelineUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_timeline_async( - self, - *, - request: Union[ - operations.GetTimelineRequest, operations.GetTimelineRequestTypedDict - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetTimelineResponse: - r"""Get the timeline for a media item - - Get the timeline for a media item - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetTimelineRequest) - request = cast(operations.GetTimelineRequest, request) - - req = self._build_request_async( - method="GET", - path="/:/timeline", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="getTimeline", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.GetTimelineResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetTimelineBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTimelineBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetTimelineUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetTimelineUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - def start_universal_transcode( - self, - *, - request: Union[ - operations.StartUniversalTranscodeRequest, - operations.StartUniversalTranscodeRequestTypedDict, - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.StartUniversalTranscodeResponse: - r"""Start Universal Transcode - - Begin a Universal Transcode Session - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal( - request, operations.StartUniversalTranscodeRequest - ) - request = cast(operations.StartUniversalTranscodeRequest, request) - - req = self._build_request( - method="GET", - path="/video/:/transcode/universal/start.mpd", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="startUniversalTranscode", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.StartUniversalTranscodeResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.StartUniversalTranscodeBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.StartUniversalTranscodeBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.StartUniversalTranscodeUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.StartUniversalTranscodeUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def start_universal_transcode_async( - self, - *, - request: Union[ - operations.StartUniversalTranscodeRequest, - operations.StartUniversalTranscodeRequestTypedDict, - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.StartUniversalTranscodeResponse: - r"""Start Universal Transcode - - Begin a Universal Transcode Session - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = self._get_url(base_url, url_variables) - - if not isinstance(request, BaseModel): - request = utils.unmarshal( - request, operations.StartUniversalTranscodeRequest - ) - request = cast(operations.StartUniversalTranscodeRequest, request) - - req = self._build_request_async( - method="GET", - path="/video/:/transcode/universal/start.mpd", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=False, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="startUniversalTranscode", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "*"): - return operations.StartUniversalTranscodeResponse( - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.StartUniversalTranscodeBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.StartUniversalTranscodeBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.StartUniversalTranscodeUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.StartUniversalTranscodeUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) diff --git a/src/plex_api_client/watchlist.py b/src/plex_api_client/watchlist.py deleted file mode 100644 index 4d7d1a1..0000000 --- a/src/plex_api_client/watchlist.py +++ /dev/null @@ -1,219 +0,0 @@ -"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" - -from .basesdk import BaseSDK -from plex_api_client import utils -from plex_api_client._hooks import HookContext -from plex_api_client.models import errors, operations -from plex_api_client.types import BaseModel, OptionalNullable, UNSET -from plex_api_client.utils.unmarshal_json_response import unmarshal_json_response -from typing import Any, Mapping, Optional, Union, cast - - -class Watchlist(BaseSDK): - r"""API Calls that perform operations with Plex Media Server Watchlists""" - - def get_watch_list( - self, - *, - request: Union[ - operations.GetWatchListRequest, operations.GetWatchListRequestTypedDict - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetWatchListResponse: - r"""Get User Watchlist - - Get User Watchlist - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_WATCH_LIST_SERVERS[0] - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetWatchListRequest) - request = cast(operations.GetWatchListRequest, request) - - req = self._build_request( - method="GET", - path="/library/sections/watchlist/{filter}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = self.do_request( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-watch-list", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetWatchListResponse( - object=unmarshal_json_response( - Optional[operations.GetWatchListResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetWatchListBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetWatchListBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetWatchListUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetWatchListUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = utils.stream_to_text(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res) - - async def get_watch_list_async( - self, - *, - request: Union[ - operations.GetWatchListRequest, operations.GetWatchListRequestTypedDict - ], - retries: OptionalNullable[utils.RetryConfig] = UNSET, - server_url: Optional[str] = None, - timeout_ms: Optional[int] = None, - http_headers: Optional[Mapping[str, str]] = None, - ) -> operations.GetWatchListResponse: - r"""Get User Watchlist - - Get User Watchlist - - :param request: The request object to send. - :param retries: Override the default retry configuration for this method - :param server_url: Override the default server URL for this method - :param timeout_ms: Override the default request timeout configuration for this method in milliseconds - :param http_headers: Additional headers to set or replace on requests. - """ - base_url = None - url_variables = None - if timeout_ms is None: - timeout_ms = self.sdk_configuration.timeout_ms - - if server_url is not None: - base_url = server_url - else: - base_url = operations.GET_WATCH_LIST_SERVERS[0] - - if not isinstance(request, BaseModel): - request = utils.unmarshal(request, operations.GetWatchListRequest) - request = cast(operations.GetWatchListRequest, request) - - req = self._build_request_async( - method="GET", - path="/library/sections/watchlist/{filter}", - base_url=base_url, - url_variables=url_variables, - request=request, - request_body_required=False, - request_has_path_params=True, - request_has_query_params=True, - user_agent_header="user-agent", - accept_header_value="application/json", - http_headers=http_headers, - security=self.sdk_configuration.security, - timeout_ms=timeout_ms, - ) - - if retries == UNSET: - if self.sdk_configuration.retry_config is not UNSET: - retries = self.sdk_configuration.retry_config - - retry_config = None - if isinstance(retries, utils.RetryConfig): - retry_config = (retries, ["429", "500", "502", "503", "504"]) - - http_res = await self.do_request_async( - hook_ctx=HookContext( - config=self.sdk_configuration, - base_url=base_url or "", - operation_id="get-watch-list", - oauth2_scopes=[], - security_source=self.sdk_configuration.security, - ), - request=req, - error_status_codes=["400", "401", "4XX", "5XX"], - retry_config=retry_config, - ) - - response_data: Any = None - if utils.match_response(http_res, "200", "application/json"): - return operations.GetWatchListResponse( - object=unmarshal_json_response( - Optional[operations.GetWatchListResponseBody], http_res - ), - status_code=http_res.status_code, - content_type=http_res.headers.get("Content-Type") or "", - raw_response=http_res, - ) - if utils.match_response(http_res, "400", "application/json"): - response_data = unmarshal_json_response( - errors.GetWatchListBadRequestData, http_res - ) - response_data.raw_response = http_res - raise errors.GetWatchListBadRequest(response_data, http_res) - if utils.match_response(http_res, "401", "application/json"): - response_data = unmarshal_json_response( - errors.GetWatchListUnauthorizedData, http_res - ) - response_data.raw_response = http_res - raise errors.GetWatchListUnauthorized(response_data, http_res) - if utils.match_response(http_res, "4XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - if utils.match_response(http_res, "5XX", "*"): - http_res_text = await utils.stream_to_text_async(http_res) - raise errors.SDKError("API error occurred", http_res, http_res_text) - - raise errors.SDKError("Unexpected response received", http_res)